一、簡介
Kibana是一個數據可視化分析的平台,而KibanaDevTools則是一個Kibana插件開發的全套工具。它允許用戶在Kibana中創建定製的插件,以適應特定的需求。通過KibanaDevTools,用戶可以快速開發和測試插件,然後進行部署。
二、為什麼要選擇KibanaDevTools?
對於想要開始Kibana插件開發的開發人員來說,KibanaDevTools是一個非常有力的助手。它提供了多種工具和模板,以幫助開發人員更快速、更高效地創建插件。例如,KibanaDevTools提供了一個內置的插件生成器,可快速生成一個插件的基本文件結構。此外,KibanaDevTools還提供了一個命令行工具,用於進行本地快速測試。
三、KibanaDevTools的主要特點
以下是KibanaDevTools的主要特點:
1.插件生成器
可以使用插件生成器來獲得Kibana插件的基本文件結構,快速啟動您的開發。這個生成器會生成一個包含所需目錄和文件的項目結構,並包含您的插件的基本元數據。
kibana-plugin generate your-plugin-name
2.命令行工具
KibanaDevTools還包括一個命令行工具,該工具為Kibana插件的開發提供了快速的本地測試環境。它允許您在開發過程中更快地迭代您的插件,並在您完成之前進行輸出和調試。
kibana-plugin run
3.文檔和示例
KibanaDevTools提供了很多文檔和示例,可幫助您理解Kibana插件的開發過程,以及如何使用該工具來加速您的開發。例如,官方網站上提供了一個示例插件,讓您更方便了解Kibana插件的工作原理。
4.完全開放源代碼
所有的KibanaDevTools工具和庫都是完全開放源代碼的。這意味着您可以自由地查看和修改代碼,以滿足您的特定需求。
5.良好的社區支持
KibanaDevTools擁有一個充滿活力的社區,用戶可以通過該社區獲得支持和建議,並共建插件以豐富Kibana生態系統。
四、基本插件代碼示例
以下是一個簡單的Kibana插件代碼示例,它使用React作為視圖層框架:
import React, { Component } from 'react';
import { render, unmountComponentAtNode } from 'react-dom';
import {
EuiButton,
EuiButtonEmpty,
EuiFieldText,
EuiFlexGroup,
EuiFlexItem,
EuiForm,
EuiFormRow,
EuiSpacer,
} from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { PLUGIN_NAME } from '../../../common';
import { AppContextProvider, AppMountParameters } from '../../../public';
import { AppPluginStartDependencies } from '../../types';
import { HelloWorldApp } from './hello_world_app';
interface HelloWorldProps {
apiBaseUrl: string;
}
interface HelloWorldState {
name: string;
greeting: string;
isFetching: boolean;
}
export class HelloWorld extends Component {
constructor(props: HelloWorldProps) {
super(props);
this.state = {
name: '',
greeting: '',
isFetching: false,
};
}
private requestGreeting = async () => {
const response = await fetch(`${this.props.apiBaseUrl}/greet/${this.state.name}`);
const greeting = await response.text();
this.setState({ isFetching: false, greeting });
};
private handleNameChange = (e: React.ChangeEvent) => {
this.setState({ name: e.target.value.trim() });
};
private handleGreetClick = () => {
if (!this.state.name) {
return;
}
this.setState({ isFetching: true });
this.requestGreeting();
};
public componentDidMount() {
console.log(`[${PLUGIN_NAME}] plugin mounted`);
}
public componentWillUnmount() {
console.log(`[${PLUGIN_NAME}] plugin will unmount`);
}
public render() {
const isDisabled = !this.state.name || this.state.isFetching;
return (
{i18n.translate('helloWorld.ButtonText', {
defaultMessage: 'Greet',
})}
);
}
}
export const renderApp = (
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
{ element, history }: AppMountParameters,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
{ apiBaseUrl }: AppPluginStartDependencies
) => {
render(
,
element
);
// eslint-disable-next-line @typescript-eslint/no-explicit-any
return (): any => {
unmountComponentAtNode(element);
};
};
export { HelloWorldApp };
五、總結
KibanaDevTools是一個非常有用的Kibana開發工具,它提供了很多便捷的功能和特性來加速您的插件開發。如果您是一位Kibana插件開發人員,那麼KibanaDevTools肯定值得一試。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/183187.html
微信掃一掃
支付寶掃一掃