跳到主要內容

用戶端架構

OCAP 用戶端採用模組化架構設計,以滿足不同 JavaScript 環境和特定使用情境的需求。它並非提供一個一體適用的函式庫,而是提供多個用戶端實作,每個實作都針對特定情境進行了最佳化,例如 Node.js 後端或對套件大小敏感的網頁應用程式。這種方法讓您可以根據需求選擇最高效的用戶端,從而在必要時確保更佳的效能和更小的體積。

所有用戶端變體都建立在一個共同的基礎 GraphQLClientBase 之上,該基礎提供了與區塊鏈 GraphQL API 互動的核心功能。

繼承關係圖

下圖說明了不同用戶端實作之間的關係:

Client Architecture

用戶端實作

以下是每種可用用戶端及其預期使用情境的詳細說明。

GraphQLClientBase (核心)

這是所有其他用戶端擴充的基礎輕量級用戶端。它提供了與區塊鏈通訊的基本功能:

  • 傳送 GraphQL 查詢和變更。
  • 建立 WebSocket 連線以進行即時事件訂閱。
  • 處理贊助交易的 Gas 支付標頭。
  • 它與環境無關,但如果您使用訂閱功能,則需要為 WebSocket 和 EventEmitter 提供相容的實作。

如果您只需要基本的唯讀功能並希望最小化依賴性,那麼此用戶端是理想的選擇。

GraphQLClient (完整用戶端)

這是標準的通用用戶端,也是您最可能經常使用的用戶端。它擴充了 GraphQLClientBase,並增加了一套豐富的高階輔助方法,以簡化常見的鏈上操作。這些輔助工具涵蓋了建立資產、轉移代幣和管理質押等任務,將原始 GraphQL 變更的複雜性抽象化。

預設情況下,它在實例化時也會自動初始化其上下文,使其可以立即使用。

NativeGraphqlClient (適用於 Node.js)

此用戶端專為 Node.js 執行環境進行了最佳化。它擴充了完整的 GraphQLClient,並將其設定為使用 Node.js 的原生 events 模組進行事件處理。這使其成為任何在伺服器上執行的後端應用程式、命令列工具或指令碼的最高效能和最可靠的選擇。

GraphqlClientLite (適用於瀏覽器)

專為前端網頁應用程式設計,GraphqlClientLite 擴充了 GraphQLClientBase,並針對最小化套件大小進行了最佳化。它將 Node.js 特有的依賴項替換為瀏覽器相容的替代方案,例如 wolfy87-eventemitter。如果您正在建構一個對效能和載入時間至關重要的網頁應用程式,此用戶端可以在不增加完整輔助方法套件額外負擔的情況下,提供核心的 OCAP 功能。

我該使用哪個用戶端?

為幫助您決定,以下是針對各種情境的建議用戶端摘要:

環境使用情境建議的用戶端匯入路徑
Node.js後端服務、指令碼、CLI 工具NativeGraphqlClient@ocap/client/node
瀏覽器一般網頁應用程式 (例如 React、Vue)GraphQLClient@ocap/client
瀏覽器對套件大小敏感的應用程式GraphqlClientLite@ocap/client/lite
任何環境唯讀、需要最少功能GraphQLClientBase@ocap/client/base

匯入範例

以下是在您的程式碼中匯入各個用戶端的方法:

Node.js 用戶端

javascript
const NativeGraphqlClient = require('@ocap/client/node');
const client = new NativeGraphqlClient('https://beta.abtnetwork.io/api');

完整瀏覽器用戶端

javascript
const GraphQLClient = require('@ocap/client');
const client = new GraphQLClient('https://beta.abtnetwork.io/api');

輕量瀏覽器用戶端

javascript
const GraphqlClientLite = require('@ocap/client/lite');
const client = new GraphqlClientLite('https://beta.abtnetwork.io/api');

總結

了解不同的用戶端實作,能讓您根據應用程式的環境和需求做出明智的選擇。透過選擇適當的用戶端,您可以針對效能、套件大小和易用性進行最佳化。

現在您已經了解了用戶端架構,可以更深入地研究交易是如何建構和處理的。請在 交易生命週期 指南中了解更多資訊。