Blocklet SDK 提供了一種強大而統一的方式來管理您應用程式的設定和環境變數。它將來自多個來源的設定匯總到一個單一、易於使用的介面中,確保您的 blocklet 能夠存取所有必要的資訊,從應用程式元資料到元件特定的設定。
本節將涵蓋存取這些資訊的兩個主要匯出:env 物件和 components 儲存庫。
env 物件
env 物件是一個集中式的唯讀容器,用於存放您元件在執行階段可用的所有設定變數。SDK 透過合併來自多個來源的設定來自動填充此物件,包括預設值、應用程式層級的設定以及元件特定的環境檔案。
您只需從 SDK 匯入 env 即可存取任何設定屬性。
import { env } from '@blocklet/sdk';
console.log(`Running in app: ${env.appName}`);
console.log(`My data directory is at: ${env.dataDir}`);
// Access user-defined preferences from the blocklet's settings page
const userApiKey = env.preferences.apiKey;關鍵環境屬性
雖然 env 物件包含許多屬性,但以下是一些最常用的屬性:
- appName
string— 父應用程式的名稱。 - appUrl
string— 應用程式的完整公開 URL。 - componentDid
string— 目前元件的分散式識別碼 (DID)。 - isComponent
boolean— 一個旗標,如果程式碼在元件上下文中執行,則為true。 - dataDir
string— 元件專用資料儲存目錄的絕對路徑。 - cacheDir
string— 元件專用快取目錄的絕對路徑。 - serverVersion
string— 應用程式執行所在的 Blocklet Server 的版本。 - preferences
Record<string, any>— 一個物件,包含使用者從 blocklet 設定頁面設定的自訂設定值。
components 儲存庫
components 儲存庫是一個陣列,提供關於在同一個應用程式實例中執行的所有其他元件的即時資訊。這對於元件間通訊至關重要,允許一個元件發現另一個元件的端點和狀態。
import { components } from '@blocklet/sdk';
// Find a running API service component to make a request
const apiService = components.find(c => c.name === 'api-service' && c.status === 1);
if (apiService) {
const apiUrl = apiService.webEndpoint;
console.log(`Found API service at: ${apiUrl}`);
// Now you can make a request to this URL
}元件屬性
components 陣列中的每個物件都包含有關元件的詳細資訊:
- did
string— 元件的分散式識別碼 (DID)。 - name
string— 元件的名稱,定義在其blocklet.yml中。 - mountPoint
string— 元件掛載的 URL 路徑 (例如/admin、/api)。 - webEndpoint
string— 元件的完整、可公開存取的 URL。 - status
number— 元件的目前狀態 (例如1表示執行中,0表示已停止)。
設定載入流程
SDK 透過分層來自不同來源的設定來建構 env 物件。每個後續的來源都可以覆寫前面來源的值,提供一個清晰且可預測的優先順序。

這種分層方法提供了靈活性,讓開發人員和管理員可以在不同層級設定 blocklet。
動態更新
設定並非靜態的。Blocklet SDK 會監聽由 Blocklet Server 推送的執行階段變更。例如,如果使用者在 blocklet 的設定頁面上更新了某個設定,SDK 將自動更新 env 物件並發出一個事件。
您可以使用匯出的 events 發射器來監聽這些變更。
import { events, Events } from '@blocklet/sdk';
// Listen for any updates to the environment or preferences
events.on(Events.envUpdate, (updatedValues) => {
console.log('Configuration was updated:', updatedValues);
// You can now react to the change, e.g., re-initialize a service
});這讓您能夠建構可以在不需重新啟動的情況下對設定變更做出反應的應用程式。
現在您已經了解如何存取設定和環境變數,您可以探索如何將它們用於更具體的任務。一個常見的用例是管理密碼學金鑰和錢包,這將在下一節中介紹。