JS service 和 Weex 实例在 JS runtime 中并行运行。Weex 实例的生命周期可调用 JS service 生命周期。目前提供创建、刷新、销毁生命周期。
重要提醒: JS Service 非常强大但也很危险,请小心使用!
注册 JS Service
iOS
[WeexSDKEngine registerService:@"SERVICE_NAME" withScript: @"SERVICE_JS_CODE" withOptions: @{}];复制代码
Android
HashMapoptions = new HashMap<>()options.put("k1", "v1")String SERVICE_NAME = "SERVICE_NAME"String SERVICE_JS_CODE = "SERVICE_JS_CODE"boolean result = WXSDKEngine.registerService(SERVICE_NAME, SERVICE_JS_CODE, options)复制代码
Web
复制代码
编写一个 JS service
// options: native inject options// options.serviceName is native options nameservice.register(options.serviceName, { /** * JS Service lifecycle. JS Service `create` will before then each instance lifecycle `create`. The return param `instance` is Weex protected param. This object will return to instance global. Other params will in the `services` at instance. * * @param {String} id instance id * @param {Object} env device environment * @return {Object} */ create: function(id, env, config) { return { instance: { InstanceService: function(weex) { var modal = weex.requireModule('modal') return { toast: function(title) { modal.toast({ message: title }) } } } }, NormalService: function(weex) { var modal = weex.requireModule('modal') return { toast: function(title) { modal.toast({ message: title }) } } } } }, /** * JS Service lifecycle. JS Service `refresh` will before then each instance lifecycle `refresh`. If you want to reset variable or something on instance refresh. * * @param {String} id instance id * @param {Object} env device environment */ refresh: function(id, env, config){ }, /** * JS Service lifecycle. JS Service `destroy` will before then each instance lifecycle `destroy`. You can deleted variable here. If you doesn't detete variable define in JS Service. The variable will always in the js runtime. It's would be memory leak risk. * * @param {String} id instance id * @param {Object} env device environment * @return {Object} */ destroy: function(id, env) { }})复制代码
Using JS Service (vuejs)
复制代码