1. 程式人生 > >BlockLang 0.3.0 釋出啦

BlockLang 0.3.0 釋出啦

BlockLang 官網:https://blocklang.com

Block Lang 0.3.0 引入一個新概念:元件市場。

拼裝軟體時使用的零部件統稱為元件。所有元件在元件市場中統一管理,包括 Block Lang 的內建元件。

元件市場包含三個子概念:

  • 元件 - 是專案的最小組成單位,是業務無關、高內聚的一類通用功能;
  • API 倉庫 - 是一個 git 倉庫,儲存一組相關元件的介面規範;
  • 元件倉庫 - 是一個 git 倉庫,儲存一組相關元件的實現程式碼。

API 倉庫與元件倉庫的關係:

  • 遵循介面與實現隔離,面向介面拼裝的原則;
  • API 倉庫專用於定義介面規範;
  • 元件倉庫專用於儲存實現程式碼;
  • 一個元件倉庫必須實現一個 API 倉庫;
  • 一個 API 倉庫支援 N 個元件倉庫(推薦)。

在元件市場中直接釋出的物件是元件倉庫,但會發布兩個倉庫:

  1. 元件倉庫 - 下載並編譯元件倉庫
  2. API 倉庫 - 定位到元件倉庫實現的 API 倉庫,並存儲介面規範

API 倉庫

API 倉庫是一個 git 倉庫,專用於定義介面規範。參見 API 倉庫示例,定義了一套 UI 部件的介面規範。

注意,git 倉庫可以託管在 github碼雲或者部署在區域網內的 gitlab 等原始碼託管軟體上。

API 倉庫描述檔案

在 API 倉庫根目錄下定義一個名為 api.json 的描述檔案,見下圖

API 倉庫

api.json

中包含倉庫的名稱(name)、版本號(version)、友好的顯示名(displayName)、倉庫的詳細說明(description)、部件分類(category) 和定義的元件列表(components)等資訊,見下圖

API 倉庫描述檔案

API 變更檔案

在 API 倉庫中定義的不是 API 快照,而是借鑑 liquibase 中的 changelog 概念,用增量的形式記錄 API 的每一次變更。

約定一個 changelog 檔案對應一個版本(即 git 中的一個 tag)。如在 0.1.0 版本中 text-input API 的變更都存在 0_1_0.json 檔案中。見下圖

API 倉庫 Change Log 檔案

一個 Change Log 檔案中包含一到多個變化,在 Block Lang 0.3.0 版本中僅支援 newWidget

操作(變化),下圖展示了新增 TextInput 部件的 API 變更說明片段。

API 倉庫 Change Log 變更說明

元件倉庫

元件倉庫是一個 git 倉庫,專用於儲存實現程式碼。參見 元件倉庫示例,使用 dojo 和 bootstrap 實現的 UI 部件,實現了 API 倉庫示例

元件倉庫描述檔案

在元件倉庫的根目錄下定義一個名為 component.json 的描述檔案,見下圖

元件倉庫

component.json 中包含倉庫的名稱(name)、版本號(version)、友好的顯示名(displayName)、倉庫的詳細說明(description)、部件分類(category)、使用的程式語言(language)和定義的元件列表(components)等資訊,還包括一個 api 屬性,它用於指定本倉庫實現的 API 倉庫的地址和版本號。

元件倉庫描述檔案

實現程式碼

在架構的設計上,是完全支援任何一門程式語言的。但截止 0.3.0 版本,重點支援用 TypeScript 語言和 Dojo 框架編寫前端實現;用 Java 語言和 Spring boot 框架編寫後端實現。

以下是用 TypeScript 語言和 Dojo 框架實現的 TextInput 部件,程式碼存在 index.ts 檔案中

元件倉庫程式碼檔案

釋出元件倉庫

當在原始碼託管平臺(如 github)上釋出完 API 倉庫和元件倉庫後,就可在 Block Lang 的元件市場中釋出元件倉庫,以供 Block Lang 中的專案使用。

  1. 在網頁的選單欄左側點選【市場】超連結,會跳轉到全域性的【元件市場】頁面

    全域性元件市場入口

  2. 點選全域性【元件市場】頁面右上角的【釋出元件】按鈕,會跳轉到使用者級別的【元件市場】頁面

    使用者級元件市場入口

  3. 填寫元件倉庫的 HTTPS 地址,然後點選【釋出】按鈕,開始釋出後會跳轉到【釋出日誌】頁面

    啟動釋出

  4. 在【釋出日誌】頁面,會顯示詳細的釋出日誌,可通過釋出日誌定位釋出錯誤的原因

    釋出日誌

  5. 釋出成功後,可在【我的元件市場】和【公共元件市場】看到已釋出的元件

    我釋出的元件

    所有釋出的元件

  6. 完成。

元件庫釋出完成後,可在 Block Lang 專案中使用元件庫。

在專案中使用元件倉庫

在 Block Lang 專案的根目錄新增一個名為 dependence.json 檔案,其中配置專案依賴的元件倉庫。該功能將在 0.4.0 版本中實現。

社群

一如既往的誠邀志同道合的程式設計手藝人加入(QQ群 619312757),共建 Block Lang