W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
自定義 module,需要讓自己的 class 遵循 ?WXModuleProtocol
? 這個protocol,通過 ?WX_EXPORT_METHOD
? 這個宏暴露出需要透出到 ?JavaScript
? 調用的方法,再向 WeexSDK 注冊 module,就可以完成一個簡單 module 的自定義。
WXCustomEventModule
?,讓該類遵循? WXModuleProtocol
? 的協(xié)議。 WX_EXPORT_METHOD
? 暴露該方法。 到此,我們已經完成了一個簡單的 module 方法的封裝,在 JS 里使用方法如下:
weex.requireModule("event").showParams("hello Weex")
關于 Module 和 Module 方法的執(zhí)行特性(同步、異步;執(zhí)行線程),需要了解:
weexInstance
?:在一個 Weex 頁面中,默認 WXSDKInstance 的實例持有多個 module 的實例, 而 Module 的實例是是沒有對 WXSDKInstance 做持有的,在自定義的 module 中添加 ?@synthesize
? ?weexInstance
?,module 實例可以對持有它本身的 WXSDKInstance 實例做一個弱引用,通過 weexInstance 可以拿到調用該 module 的頁面的一些信息。targetExecuteThread
?:Module 方法默認會在 UI 線程(iOS 主線程)中被調用,建議不要在這做太多耗時的任務。如果你的任務不需要在 UI 線程執(zhí)行或需要在特定線程執(zhí)行,需要實現(xiàn) ?WXModuleProtocol
? 中的 ?-
?? (NSThread *)
? 的方法,并返回你希望方法執(zhí)行所在的線程。WXModuleKeepAliveCallback
?:Module 支持返回值給 JavaScript 中的回調,回調的類型是? WXModuleKeepAliveCallback
??;卣{的參數(shù)可以是 ?String
? 或者 ?Map
?。該 block 第一個參數(shù)為回調給 JavaScript 的數(shù)據,第二參數(shù)是一個 BOOL 值,表示該回調執(zhí)行完成之后是否要被清除。JavaScript 每次調用都會產生一個回調,但是對于單獨一次調用,是否要在完成該調用之后清除掉回調函數(shù) id 就由這個選項控制,如非特殊場景,建議傳 NO。WX_EXPORT_METHOD_SYNC
?:使用 ?WX_EXPORT_METHOD
? 暴露到前端的方法都是異步方法(獲得結果需要通過回調函數(shù)獲得)。如果期望獲得同步調用結果,可以使用 ?WX_EXPORT_METHOD_SYNC
? 聲明同步的 Module 方法。Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: