Weex简介
Weex是淘宝开源并捐给Apache的孵化项目,是一个可以使用现代化的 Web 技术开发高性能原生应用的框架。Weex 致力于使开发者能基于通用跨平台的 Web 开发语言和开发经验,来构建 Android、iOS 和 Web 应用。简单来说,在集成了 WeexSDK 之后,你可以使用 JavaScript 语言和前端开发经验来开发移动应用。
snUIWeex插件概述
snUIWeex 插件将Weex的能力带到了apicloud平台,补充了apicloud原生渲染能力。
Weex全局配置,config文件的Feature,方法如下:
名称:weex
参数:debug、statusBarAppearance
配置示例:
<feature name="weex">
<param name="debug" value="false" />
<param name="statusBarAppearance" value="true" />
</feature>
字段描述:
debug: 是否weex开启debug,主要是log查看,暂时不支持devtools statusBarAppearance: 同apicloud的statusBarAppearance
系统限制:android最小 4.1.2(api 16),ios 最小 9.0
android abi支持:weex支持armeabi-v7a、arm64-v8a、x86,由于apicloud默认是armeabi,所以以下配置必须添加,值根据需求而定,比如64位arm
<preference name="android_abi" value="arm64-v8a"/>
云打包加密:由于云打包加密会将widget中的文件加密,也就是说如果是widget中放入weex的js文件被加密,导致weex无法使用,因此如果需要支持请修改*.js为*.njs(避免被加密即可)
weex横竖屏切换支持不是很完美,请以测试结果为准
weex页面采用vue或rax开发,其尺寸仅支持wx或px(其实都指weex的长度单位)。请参考
如果weex页面和apicloud页面保持同样的尺寸,那就需要weex的长度单位和设备的长度单位进行转化,因此提供api.px2wx方法。 比如以下代码计算了weex的header高度(由于需要和apicloud的高度一样)
var headerH = api.px2wx(44) + api.safeArea.top
// api.safeArea已经转化为wx
打开weex视图
open({params}, callback(ret))
url:
pageParam:
rect:
{
x:, //左上角x坐标,数字类型
y:, //左上角y坐标,数字类型
w:, //宽度,若传'auto',页面从x位置开始自动充满父页面宽度,数字或固定值'auto', 单位:weex的长度单位
h:, //高度,若传'auto',页面从y位置开始自动充满父页面高度,数字或固定值'auto', 单位:weex的长度单位
marginLeft:, //相对父页面左外边距的距离,数字类型
marginTop:, //相对父页面上外边距的距离,数字类型
marginBottom:, //相对父页面下外边距的距离,数字类型
marginRight: //相对父页面右外边距的距离,数字类型
}
fixedOn:
fixed:
ret:
{
id: 1 //数字类型;weex视图id
}
var weex = api.require('snUIWeex');
weex.open({
url: 'widget://res/weex/components/tabbar.js',
rect: {
h: 100, // weex的长度单位
marginBottom: 0
}
},function(ret) {
weexId = ret.id
})
iOS系统,Android系统
可提供的1.0.0及更高版本
关闭weex视图
close({params})
id:
var weex = api.require('snUIWeex');
weex.close({
id: 1
})
iOS系统,Android系统
可提供的1.0.0及更高版本
显示weex视图
show({params})
id:
var weex = api.require('snUIWeex');
weex.show({
id: 1
})
iOS系统,Android系统
可提供的1.0.0及更高版本
隐藏weex视图
hide({params})
id:
var weex = api.require('snUIWeex');
weex.hide({
id: 1
})
iOS系统,Android系统
可提供的1.0.0及更高版本
打开weex页面
openWeex({parmas},callback(ret, err))
url:
statusBarAppearance:
pageParam:
ret:
{
status: true //布尔类型;操作成功状态值
}
err:
{
msg:'' //字符串类型;错误描述
}
var weex = api.require('snUIWeex');
weex.openWeex({
url: 'https://snice.oss-cn-hangzhou.aliyuncs.com/dist/weex/js/index.js'
}, function(ret, err) {
if (ret.status) {
api.alert({ msg: '打开成功' });
} else {
api.alert({ msg: err.msg });
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
发送全局事件,即通过weex的globalEvent插件添加的监听事件,参考
name
extra
weex 监听
api.addEventListener({
name: "myEvent"
}, function (e) {
console.log(e)
});
html 发送
var weex = api.require('snUIWeex');
weex.sendGlobalEvent({
name: 'myEvent',
extra: {
key1: 'value1',
key2: 'value2'
}
});
iOS系统,Android系统
可提供的1.0.0及更高版本
该插件主要是实现apicloud的部分api,使得在weex中能够使用api接口
Attribute
属性 | 是否支持 | 备注 | -|-|-|- appId | √ | wgtRootDir | √ | pageParam | √ | safeArea | √ | statusBarAppearance | √ |
Event
属性 | 是否支持 | 备注 | -|-|-|- keyback | √ | pause | √ | resume | √ |
Method
方法 | 是否支持 | 备注 | -|-|-|- openWin | √ | 仅支持url addEventListener | √ | 不支持extra,只能通过该插件的sendGlobalEvent发送 | removeEventListener | √ | | sendEvent | √ | 给apicloud页面发送事件