JS code:
var userID = weex.config.userID;
在初始化加载weex模块前,可以确定并固定的信息可在js里用 weex.config.XXX 获取,
例如获取设备ID(deviceID)、用户ID(userID)等,需要事先告知原生程序员。
详见官方文档“JSEnv扩展” https://weex.apache.org/zh/guide/extend/extend-ios.html#jsenv-%E6%89%A9%E5%B1%95
以下所有模块名、函数名、参数类型、返回类型都需要事先与原生程序员确定。不支持多个参数及多个返回结果。
详见官方文档 “自定义 module”
https://weex.apache.org/zh/guide/extend/extend-ios.html#%E8%87%AA%E5%AE%9A%E4%B9%89-module
JS code:
function additionResult(ret){
console.log(">>>>>>>" + ret);
}
weex.requireModule("mathOC").addition(["3","5"],additionResult);
或者简写为:
weex.requireModule("mathOC").addition(["3","5"],function(ret){
console.log(">>>>>>>"+ret);
});
其中,
mathOC为原生类,addition为mathOC里的函数;
["3","5"] 为addition函数传给原生的参数,类型可以是数字、字符串、数组、字典;
function additionResult(ret) 为结果回调,其中的ret为结果,类型可以是数字、字符串、数组、字典;
JS code:
var result = weex.requireModule("mathOC").addition_sync(["3","5"]);
console.log(">>>>>>>" + result);
其中,
mathOC为原生类,addition_sync为mathOC里的函数;
["3","5"] 为addition函数传给原生的参数,类型可以是数字、字符串、数组、字典;
result 可以为结果,类型可以是数字、字符串、数组、字典;
以下为iOS Object-C程序员的工作,JS程序员无需理会。
1. 给weex 初始化静态原生信息
WXSDKInstance * instance = [[WXSDKInstance alloc] init];
[instance renderWithURL:URL options:@{@"userID":userID} data:nil];
2. weex调用原生函数并异步获取结果
继承NSObject并遵循WXModuleProtocol协议
在@implementatin 内部
@synthesize weexInstance;
WX_EXPORT_METHOD(@selector(addition:result:)); // 向weex 声明方法
/// 原生实现函数
- (void)addition:(NSArray *)param result:(WXModuleCallback)callback {
callback(param[0]+param[1]);
}
3. weex调用原生函数并同步获取结果
继承NSObject并遵循WXModuleProtocol协议
在@implementatin 内部
@synthesize weexInstance;
WX_EXPORT_METHOD_SYNC(@selector(addition_sync:)); // 向weex 声明同步方法
/// 原生实现函数
- (NSString *)addition_sync:(NSArray *)param {
return (param[0]+param[1]);
}