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