优点:1、多端开发,一套代码可以生成ios、安卓、微信小程序、支付宝小程序等。
2、学习成本低,uniapp封装的组件与微信小程序相似,并且基于vue.js,上手快。
3、结合HBuilder开发速度快。
缺点:完善性较差,uni-app问世的时间还比较短,坑多。如果想要一个更稳定、坑更少的开发环境,建议选择其他平台。
事件总线可以作为组件沟通的桥梁,就像是所有组件共用相同的事件中心,可以向该中心注册发送事件或接收事件
在uni中可以通过uni.$emit(eventName,OBJECT)来触发全局的自定事件
通过uni.$on(eventName,callback)监听全局的自定义事件
通过uni.$off([eventName, callback])移除全局自定义事件监听器。
注意事项:如果没有提供参数,则移除所有的事件监听器;
如果只提供了事件,则移除该事件所有的监听器;
如果同时提供了事件与回调,则只移除这个回调的监听器;
提供的回调必须跟$on的回调为同一个才能移除这个回调的监听器;
// 同步储存和读取
// 存
uni.setStorageSync('name','LZJAPYX,ZDL'); // name为键名 LZJAPYX,ZDL为键值
// 取
uni.getStorageSync('name') // 以健名取键值
// 删除
uni.removeStorageSync('name') // 删除该键名的数据
// 存
uni.setStorage({
key: "name", // 键名
data: "LZJAPYX,ZDL" // 键值
});
异步存储和读取
// 取
uni.getStorage({
key: "name", // 键名
success(res){
console.log.(res.data) // LZJAPYX,ZDL
}
});
// 删除
uni.reomveStorage({
key: "name", // 键名
success(res){
console.log.(res) // reomveStorage:ok
}
});
uni.navigateTo({url: "/路径?参数=参数值"});
uni.redirectTo({url: "/路径?参数=参数值"});
uni.reLaunch({url: "/路径?参数=参数值"});
uni.switchTab({url: "/路径?参数=参数值"});
uni.navigateBack({delta: 2});
uni.preloadPage({url: "/路径?参数=参数值"});
条件编译是用特殊的注释作为标记,在编译时根据这些特殊的注释,将注释里面的代码编译到不同的平台。
写法:以 #ifdef 或 #ifndef 加 %PLATFORM% 开头,以 #endif 结尾
在app.js中设置globalData设置,在需要的地方的js文件let app=getApp() app.globalData.数据