0.1.2 • Published 8 years ago
axe4js v0.1.2
axe-js
使用 WebViewJavaScriptBridge 以支持在h5页面中使用 axe.
使用
npm install axe4js --save接口声明
见 main.d.ts文件
数据类型说明
基础数据类型
- Number : 数字
- String : 字符串
- Array: 列表
- Object : 对象
需要注意,如果要在js模块中使用原生设置的 Array和Object对象,就要求原生传入的是纯基础数据类型,其中不能设置特殊类型。
特殊类型
- Image : 图片,
js中设置和获取的图片类型为 ,data:image/jpeg;base64,xxx这种形式的URI形式的字符串。 - Data: 数据类型, 对于
ios中的NSData类型。js中设置和获取的是base64字符串. - Date: 时间类型
- Boolean:
这里我们实现了 js模块和原生模块之间的特殊类型传递。
Model类型
在Axe中提及的 Model类型,指可以进行序列化,且一般从后台获取的Model类型。
JS中设置的Model类型,是一个Object对象,键值需要是基础数据类型,不能嵌套一些特殊类型。
如果声明了一个
model类型, 在设置时,一定要包含所有的key值, 对于空值,一定要设置为null类型。
如,我们在文档中声明了一个model :
{
userName,
}当设置的model类型,userName为空时, 必须要设置为null,而不是默认的undefined 。 否则原生模块获取时会出错。
如果一个原生模块要传递Model给JS模块,则该Model类型,必须是纯基础数据类型构成,不能包含特殊类型。
注意Event
事件回调是一个闭包, 而闭包会持有对象,容易导致内存泄漏 (当路由跳转时,新页面监听了事件,然后在路由返回到之前页面,则这个监听没有释放,就可能导致内存泄漏,且事件发送时会产生异常)。
所以事件监听要特别注意,在 demo-test-h5 中,我们实现了两种 基于Vue单页面应用的Event封装, 以避免 重复注册和内存泄漏。
使用示例
注意事项
- 所有的js模块注册的监听,都是UI监听,即只有当页面在前台展示时,才会调用。
- axe主要用于业务模块间的信息传递和数据共享,不要用于模块内的业务逻辑。
- sharedData的
get接口是异步接口 - 在模块声明时,要说明跳转是否支持回调,以及是否必须拥有回调。
- 路由信息的获取,与路由回调,都是跟随
webview的,所以如果是单页面应用,需要注意这一点,避免在B页面错误地获取了A页面的信息和回调了A页面的回调函数。