kibana5.6 源碼分析以--環境搭建&技術準備
最近開始研究kibana源碼,由於對nodejs不熟悉,所以看起來非常的吃力,裏面使用到的各種node組件都是第一次接觸。需要一一學習,在此做個記錄。
一、開發環境搭建:
1、kibana5.6源碼下載:
https://github.com/elastic/kibana。選擇對應版本下載源碼
2、安裝cnpm命令(淘寶源)
npm install -g cnpm --registry=https://registry.npm.taobao.org
安裝所有架包
cnpm install
配置es:在/config/kibana.yml,
- 配置可訪問的elasticsearch地址:elasticsearch.url:"http://IP:port";
- server.host:"0.0.0.0"
- server.port:5601//默認可不配置
3、啟動:/bin/kibana --dev(或 npm start)
二、使用到的相關技術:
1、web框架使用的是hapi.js.它的API參考:https://hapijs.com/api;
2、前端使用了Angular.js.通過指令擴展html.這是純前臺的JS,不是功能庫,是用來開發動態網頁的框架,專註於擴張HTML的功能,提供動態數據綁定;
angular.js 學習參考:http://www.angularjs.net.cn/api/;
3、kibana5.6采用ES6(ES2015)編碼,使用babel語法轉換器編譯為瀏覽器支持的js語法,babel 網址:https://babeljs.cn/;
4、grunt是一套前端自動化工具框架,一個基於nodeJs的命令行工具,有很多插件擴展它的功能,一般用於:
- 壓縮文件
- 合並文件
- 簡單語法檢查
- 單元測試
Grunt 以及它的插件們,都作為一個 包 ,可以用 NPM 安裝進行管理。
所以 NPM 生成的 package.json 項目文件,裏面可以記錄當前項目中用到的 Grunt 插件,而 Grunt 會調用 Gruntfile.js 這個文件,解析裏面的任務(task)並執行相應操作。
API文檔:http://www.gruntjs.net/api/grunt
5、webpack 是一個現代 JavaScript 應用程序的靜態模塊打包器(module bundler)(模塊加載器兼打包工具),它能把各種資源,例如JS(含JSX)、coffee、樣式(含less/sass)、圖片等都作為模塊來使用和處理。
當 webpack 處理應用程序時,它會遞歸地構建一個依賴關系圖(dependency graph),其中包含應用程序需要的每個模塊,然後將所有這些模塊打包成一個或多個 bundle
每個項目下都必須配置有一個 webpack.config.js ,它的作用如同常規的 gulpfile.js/Gruntfile.js ,就是一個配置項,告訴 webpack 它需要做什麽。
參考文檔:https://doc.webpack-china.org/concepts/
kibana打包後靜態文件在/optimize/bundlers/中,框架是:commons.bundle.js,kibana插件是:kibana.bundle.js;timelion插件是:timelion.bundle.js;
6、Karma 是Google 開源的一個基於Node.js 的 JavaScript 測試執行過程管理工具,可以配合grunt使用:grunt-karma。官網:http://karma-runner.github.io/2.0/index.html
7、lodash : 這是一個具有一致接口、模塊化、高性能等特性的 JavaScript 工具庫。參考文檔:http://lodashjs.com/docs/
kibana5.6 源碼分析以--環境搭建&技術準備