本是同根生:Dart 開發環境

img

前言

Dart 除了可以開發 Flutter 之外,其實也可以拿來開發 Web 程式,例如 AngularDartAqueduct,當然開發環境最重要的就是要安裝 Dart SDK,如果開發過 Flutter 的人大概都知道,我們所安裝的 Flutter SDK 其實已經包含了 Dart SDK,但是直接用它來開發 Flutter 以外的程式就會發現問題叢叢,上網搜尋有些人會說它是一個不完全的 SDK,建議另外再安裝完整的 Dart SDK 來開發,這不是很詭異的問題,難道 Flutter 是使用特製版本的 Dart SDK 嗎?今天我們就來嘗試補足它的不足之處。

Dart SDK 位於 Flutter SDK 資料夾內的 \bin\cache\dart-sdk\ 下,筆者 Flutter SDK 是安裝於 D:\Tools\flutter\
img

Aqueduct

連到 Aqueduct 官方網站 可以看到它的說明,Aqueduct 是一個可以利用 Dart 來開發後端 REST API。

Aqueduct is an extensible HTTP framework for building REST APIs on top of the Dart VM. It includes a statically-typed ORM, OAuth 2.0 provider, automated testing libraries and OpenAPI 3.0 integration.

接下來我們可以看到5行安裝以及啟動指令:

1
2
3
4
5
brew install dart
pub global activate aqueduct
aqueduct create my_app
cd my_app
aqueduct serve

pub

第1行安裝 Dart SDK 指令我們就直接忽略,因為我們已經安裝了 Flutter SDK,現在要想辦法直接利用其內含的 Dart SDK。
第2行指令 pub global activate aqueduct 是利用 Dart SDK 內含的 pub 來安裝 Aqueduct CLI,不出意外系統一定找不到 pub 指令。
img
嘗試搜尋 Dart SDK 資料夾就可以發現 pub.bat 位於 SDK 的 bin 資料夾內。
img
接下來為了可以在任何路徑呼叫,所以我們將 bin 資料夾路徑加入到環境變數 Path 內。
img

其實查看 bin 資料夾就可以發現 Dart 相關指令的執行檔都在這個目錄下。
img

重新再執行指令 pub global activate aqueduct,可以發現可以正常安裝 Aqueduct CLI,另外我們從最下方的訊息得知,pub 安裝所安裝的套件啟動指令都放在 %APPDATA%\Pub\Cache\bin\ 下,也建議我們將該路徑加入倒 Path 環境變數內。
img
往上一層觀看 %APPDATA%\Pub\Cache\ 也可以知道 Dart 安裝的套件也放在此,可是 Flutter SDK 目錄下的 .pub-cache 資料夾也是存放套件的位置,難道不能放在一起嗎?
img
查看官方文件 Configuring Pub Environment Variables 可以知道 Dart SDK 提供一個環境變數 PUB_CACHE 讓我們可以修改儲存路徑。
img
因此我們就直接新增 PUB_CACHE 環境變數,並將路徑指向 Flutter SDK 內的 .pub-cache 資料夾。
img
但是別忘了套件的執行指令會放在 bin 資料夾,所以我們在環境變數 Path 內在增加路徑 %PUB_CACHE%\bin
img
重新再安裝一次 Aqueduct CLI,可以看到確實安裝在 .pub-cache 資料夾內。
img
接下來透過 CLI 指令 aqueduct create my_app 來建立一個名為 my_app 的 aqueduct 專案。
img
最後切換到 my_app 路徑,並透過 CLI 指令 aqueduct serve 來啟動專案。
img
透過瀏覽器開啟 http://localhost:8888/ 可以看到雖然找不到頁面,但是確實正常運作。
img

連到範例頁面 http://localhost:8888/example 就可以看到測試資料。
img

後記

  • 因為 %APPDATA%\Pub\ 已經用不到了,所以其實可以刪除掉。
  • 如果直接安裝過 Dart SDK 就可以發現安裝程式幫我們設定一個環境變數 DART_SDK,並指向 Dart SDK 路徑,所以我們可以自己手動增加該變數。
    img
    當然 Path 內的路徑也可以調整為 %DART_SDK%\bin
    img