Weex 自定義 module

2023-12-27 17:18 更新

自定義 module,需要讓自己的 class 遵循 ?WXModuleProtocol? 這個protocol,通過 ?WX_EXPORT_METHOD? 這個宏暴露出需要透出到 ?JavaScript? 調用的方法,再向 WeexSDK 注冊 module,就可以完成一個簡單 module 的自定義。

  1. 新建一個基類為 NSObject 的 class ?WXCustomEventModule?,讓該類遵循? WXModuleProtocol? 的協(xié)議。 
  2. 添加打印的方法,通過 ?WX_EXPORT_METHOD? 暴露該方法。 
  3. 在初始化完成 Weex SDK 之后注冊該 module。 

到此,我們已經完成了一個簡單的 module 方法的封裝,在 JS 里使用方法如下:

weex.requireModule("event").showParams("hello Weex")

Module 進階

關于 Module 和 Module 方法的執(zhí)行特性(同步、異步;執(zhí)行線程),需要了解:

  1. ?weexInstance?:在一個 Weex 頁面中,默認 WXSDKInstance 的實例持有多個 module 的實例, 而 Module 的實例是是沒有對 WXSDKInstance 做持有的,在自定義的 module 中添加 ?@synthesize? ?weexInstance?,module 實例可以對持有它本身的 WXSDKInstance 實例做一個弱引用,通過 weexInstance 可以拿到調用該 module 的頁面的一些信息。
  2. ?targetExecuteThread?:Module 方法默認會在 UI 線程(iOS 主線程)中被調用,建議不要在這做太多耗時的任務。如果你的任務不需要在 UI 線程執(zhí)行或需要在特定線程執(zhí)行,需要實現(xiàn) ?WXModuleProtocol? 中的 ?-?? (NSThread *)? 的方法,并返回你希望方法執(zhí)行所在的線程。
  3. ?WXModuleKeepAliveCallback?:Module 支持返回值給 JavaScript 中的回調,回調的類型是? WXModuleKeepAliveCallback??;卣{的參數(shù)可以是 ?String? 或者 ?Map?。該 block 第一個參數(shù)為回調給 JavaScript 的數(shù)據,第二參數(shù)是一個 BOOL 值,表示該回調執(zhí)行完成之后是否要被清除。JavaScript 每次調用都會產生一個回調,但是對于單獨一次調用,是否要在完成該調用之后清除掉回調函數(shù) id 就由這個選項控制,如非特殊場景,建議傳 NO。
  4. ?WX_EXPORT_METHOD_SYNC?:使用 ?WX_EXPORT_METHOD? 暴露到前端的方法都是異步方法(獲得結果需要通過回調函數(shù)獲得)。如果期望獲得同步調用結果,可以使用 ?WX_EXPORT_METHOD_SYNC? 聲明同步的 Module 方法。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號