OCAP 用戶端採用模組化架構設計,以滿足不同 JavaScript 環境和特定使用情境的需求。它並非提供一個一體適用的函式庫,而是提供多個用戶端實作,每個實作都針對特定情境進行了最佳化,例如 Node.js 後端或對套件大小敏感的網頁應用程式。這種方法讓您可以根據需求選擇最高效的用戶端,從而在必要時確保更佳的效能和更小的體積。
所有用戶端變體都建立在一個共同的基礎 GraphQLClientBase 之上,該基礎提供了與區塊鏈 GraphQL API 互動的核心功能。
繼承關係圖
下圖說明了不同用戶端實作之間的關係:

用戶端實作
以下是每種可用用戶端及其預期使用情境的詳細說明。
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 用戶端
const NativeGraphqlClient = require('@ocap/client/node');
const client = new NativeGraphqlClient('https://beta.abtnetwork.io/api');完整瀏覽器用戶端
const GraphQLClient = require('@ocap/client');
const client = new GraphQLClient('https://beta.abtnetwork.io/api');輕量瀏覽器用戶端
const GraphqlClientLite = require('@ocap/client/lite');
const client = new GraphqlClientLite('https://beta.abtnetwork.io/api');總結
了解不同的用戶端實作,能讓您根據應用程式的環境和需求做出明智的選擇。透過選擇適當的用戶端,您可以針對效能、套件大小和易用性進行最佳化。
現在您已經了解了用戶端架構,可以更深入地研究交易是如何建構和處理的。請在 交易生命週期 指南中了解更多資訊。