2020年3月26日 星期四

dart 程式庫(package)管理

參考官網文章:  https://dart.dev/guides/packages
dart 使用檔案 pubspec.yaml 指引程式庫(package)的運作邏輯, pubspec.yaml 裡面最重要的是 name: 指引,用來標示專案的名稱,同時也代表該專案程式庫(package)所處最上層路徑, 將專案名字寫在檔案裡面的好處是:若將最上層目錄搬移或更名也不影響程式的運作. 其次是 dependencies: 區塊指引,用來紀錄該專案與外部程式庫之相依性, 相關的程式庫須用 tab 鍵或是空白鍵先縮排(indent),再使用"名稱:版本"的格式一一分行列表, 另外可以用符號 # 當註解,例如:
#pubspec.yaml
name:  myPackage
dependencies:
  ffi: 0.1.3  #外部程式庫 ffi, 需求版本 0.1.3
  crypto: 2.1.4  #外部程式庫 crypto, 需求版本 2.1.4

開啟終端機, 執行 pub get 後就會根據 pubspec.yaml 指引去安裝(或下載)好相關的程式庫,安裝好的結果會儲存在檔案 .packages 裡面. 整個專案目錄結構示範如下:
myPackageRoot -  #專案根目錄
      lib -  #內定專屬程式庫(package)目錄起點
            maintain.dart  #程式庫維護原始碼
            src -  #專案其它程式原始碼目錄
                  utility.dart  
                  help.dart
     main.dart #專案主程式原始碼

內定專屬目錄 lib 會被當成是專案外部程式庫的參考起點,通常在 dart 代碼若是一開頭使用 import 'package: ...' 或是 export '...' 時, 就會以 lib 目錄當參考點去引入相關的檔案,因此可以準備一個檔案例如放在 lib/maintain.dart 專門當作程式庫維護程式碼, 在裡面用 export 方式間接引入檔案或是用 import 方式直接引入各項程式庫. 通常習慣是在 lib 目錄下再新增一個目錄名稱,例如 src, 把該專案的其餘程式全放在 lib/src 目錄底下(如上述範例)當成該專案的專屬程式庫, 未來只要將該目錄(src)複製到其他專案裡面, 就能重複使用此專屬程式庫,甚至萬一把程式庫目錄 src 改名了, 也只要修改維護程式內的相對目錄 src 就可. 總之, 目錄結構更動是維護程式碼的主要任務,盡可能不影響程式庫的運作邏輯:
// maintain.dart
export 'src/utility.dart';  // 間接從路徑 lib/src 引入檔案 utility.dart
export 'src/help.dart'; // 間接從路徑 lib/src 引入檔案 help.dart
// import 'dart:html';// 直接引入 dart 核心程式庫 html
// ...

經過上述規劃後, 主程式只要將 maintain.dart 引入就可, 乾淨俐落, 但須注意的是, 當要引入該專案的專屬程式庫(package)時, 須先指明專案名稱, 換句話說專案名稱也同時身兼專案專屬程式庫的角色:
// main.dart
import 'package:myPackage/maintain.dart'; //直接從 myPackage 引入 lib/maintain.dart
main( ) {
      // ...
}

沒有留言:

張貼留言

使用 pcie 轉接器連接 nvme SSD

之前 AM4 主機板使用 pcie ssd, 但主機板故障了沒辦法上網, 只好翻出以前買的 FM2 舊主機板, 想辦法讓老主機復活, 但舊主機板沒有 nvme 的界面, 因此上網買了 pcie 轉接器用來連接 nvme ssd, 遺憾的是 grub2 bootloader 無法識...