【metabase • 一】開發準備
開發概述
- Metabase採用前後端分離的方式構建,前端使用react搭建頁面,後端使用clojure提供REST API介面,詳見 API Document;
- Metabase提供了官方文件Developers Guide,對開發環境和執行方式進行了簡要說明;
- 本文件主要側重於Clojure部分,前端涉及技術棧比較主流,網上各種文章分析也很全面,就不重複討論了。
clojure學習
- Clojure比較冷門,網上學習資料也比較少,因此以官方文件和英文資料為主;
- 中文基礎教程 主要涵蓋了基本語法的教程,內容不多,適合起步閱讀;
- 官方基礎教程 同樣是基礎語法教程,內容不多,英文版;
- Clojars Clojure的依賴倉庫,類似於java的Maven Repository;
- ClojureDocs Clojuer語法檢索,比如輸入 map 會檢索出map的用法和多個使用示例,非常好用
- 4Clojure 包含156道Clojure入門練習題,對於快速掌握語法很有幫助
clojure開發配置
- 官方網站對Clojure安裝進行了說明,詳見Getting Started
- 個人總結的安裝步驟包括:
- 在Mac上安裝Clojure建議使用Homebrew,一鍵安裝簡單方便。
Homebrew官方網站有詳細的安裝指引,但出於大家都懂的原因,國內沒辦法按流程安裝,網上能搜到各種攻略,但第一次配置還是比較艱難的,推薦使用金牛肖馬分享的安裝指令碼,流程清晰操作簡單,連結 Homebrew國內安裝
- 安裝Leiningen,可以理解為可以理解為Clojure用的Maven,必不可少的包管理工具,也是Clojure官網推薦的,Leiningen官網
Leiningen官網推薦的安裝方式是下載指令碼並在本地執行,指令碼執行時要多次訪問github,出於大家都懂的原因,需要先解決github訪問的問題;
- github訪問不了的主要方式是DNS地址汙染,因此可以通過在本地hosts檔案中繫結IP地址的方式解決,網上教程也很多,自行百度即可;
- 請注意github的IP在2020年中變化過一次,因此早期的教程可能不起作用,最好是自己先手動查一下最新的IP地址
- 安裝Cursive,執行在Idea中的Clojure語言外掛,直接在Idea中搜尋安裝即可,使用教程可查閱Cursive官網
- 網上有些文件會建議安裝cursive和leiningen兩個外掛,其實只安裝cursive就夠了,安裝了leiningen反而會衝突報錯;
- Clojure專案在Idea中若直接通過Idea中File → Open的方式開啟會報錯,因為Cursive需要在第一次匯入專案時先建索引,因此要通過 File → New → Project from Existing Sources 的方式匯入;
直接在Idea中新建的專案和已經建好索引的專案可以直接開啟,不需要每次開啟時都重建索引;- 右鍵點選 project.clj 檔案,選擇 Run ‘REPL for XXX’ 將在Idea中執行REPL,優勢是可以使用快捷鍵實時將程式碼匯入到REPL中,非常靈活
- Ideal螢幕右下方 structural style 建議選擇 Parinfer,自動匹配括號,極其方便
常用指令
- lein使用
leiningen常用命令(需要於project.clj檔案所在目錄下執行)
- lein deps 手動下載專案依賴,若跳過該指令執行專案前也會自動下載依賴
- lein run 以 project.clj 中配置的 :main 作為執行入口,執行 -main 方法
- lein ring server 執行lein-ring外掛配置,執行服務端
- lein new project_name 按照預設模版,建立名為 project_name 的新任務
開發執行
- 官方推薦:yarn build-hot 啟動前端, lein run 啟動後端
- 前後端均啟動後,訪問 http://localhost:3000/ 可進行頁面操作(注意不是訪問8080)
metabase預設使用內嵌h2儲存後設資料,但推薦在生產環境遷移到MySQL或PostgreSQL
- 若希望將h2資料遷移到MySQL,可參閱 官方文件 ,啟動程式碼如下:
MB_DB_TYPE=mysql MB_DB_HOST=172.0.0.1 MB_DB_PORT=3306 MB_DB_USER=username MB_DB_DBNAME=metabase MB_DB_PASS=password lein run load-from-h2- 即使換成遷移,下次啟動時仍會預設採用h2資料庫,使用MySQL資料庫仍需要配置引數:
MB_DB_TYPE=mysql MB_DB_HOST=172.0.0.1 MB_DB_PORT=3306 MB_DB_USER=username MB_DB_DBNAME=metabase MB_DB_PASS=password lein run
相關文章
- Laravel 開發前準備Laravel
- PyQt5開發實踐(一、準備篇)QT
- 開發Windows貪吃蛇遊戲——(一)前期準備Windows遊戲
- Unity開發 資源準備Unity
- APP 開發從 0 到 1(一)需求與準備APP
- 《HTML5之開發準備》HTML
- 鴻蒙系統應用開發之開發準備鴻蒙
- 【萬里征程——Windows App開發】開發準備WindowsAPP
- 小程式開發前的準備工作
- flask之旅: 開發前環境準備Flask
- 【小程式】微信小程式開發準備微信小程式
- Ubuntu 手機開發培訓準備Ubuntu
- 為現代 JavaScript 開發做好準備JavaScript
- 為現代JavaScript開發做好準備JavaScript
- 01_Rust開發環境準備Rust開發環境
- 前端開發-拿到一臺新電腦該準備哪些工作?前端
- odoo 開發入門教程系列-準備一些操作(Action)?Odoo
- 為JavaScript開發人員準備的 21 個小技巧(一)JavaScript
- [nodejs] nodejs開發個人部落格(一)準備工作NodeJS
- 面試準備(一)面試
- 食品app開發之前要做的準備工作APP
- 使用 Laravel 開發 API 時的前置準備LaravelAPI
- 支付寶小程式開發準備工作
- SuperMap iClient for Silverlight開發準備client
- 如果開發一個綜合性專案應該怎樣準備
- AI應用開發之路-準備:發起一個開源小專案 DashScope SDK for .NETAI
- 網校系統開發前要做哪些準備?
- usb驅動開發1之學習準備
- 自己動手開發一個Android持續整合工具-準備工作Android
- 從平臺搭建準備著手,全方位梳理一對一直播原始碼開發部署準備工作(一)原始碼
- Newbe.Claptrap 框架入門,第一步 —— 開發環境準備APT框架開發環境
- ArcGIS API for Silverlight開發入門準備API
- kubebuilder實戰之一:準備工作kubebuilder實戰之一:準備工作UI
- Flutter(一) 環境準備Flutter
- JavaScript開發技巧必備【一】JavaScript
- 從react轉職到vue開發的專案準備ReactVue
- 準備加入軟體開發行業的朋友可以看看行業
- Android / iOS開發者開發小程式前要做哪些準備AndroidiOS