快应用开发总结
开发工具下载:https://www.quickapp.cn/docCenter/IDEPublicity
调试工具下载:https://statres.quickapp.cn/quickapp/quickapp/201806/file/quickapp_debugger.apk
实际开发中,仅这两个就够了。该ide的用法等等与vscode一样,调试要么用usb连接,要么让其与所在的开发环境在同一个局域网内,通过“扫码安装”或“在线更新”获取到最新apk内容,点击“开始调试”可在pc端同步调试。
详细功能及使用:https://doc.quickapp.cn
踩坑记录:
1.div下不可直接写文本内容,需用<span>或<text>标签包裹
2.<template>的第一层div为其根元素,不可添加if条件判断
3.部分css属性暂不支持,如margin: auto、overflow、white-space、max-width、box-shadow、z-index等等,布局直接用flex
4.父子组件消息传递:
对不做更改的常规数据传递,用props即可,同vue用法
父传子用$broadcast:先在子组件注册监听事件A【this.$on('A', this.A)】,在父组件通知【this.$broadcast('A',params)】
子传父用$dispatch:先在父组件注册监听事件A【this.$on('A', this.A)】,在子组件通知【this.$dispatch('A', params )】
详情:https://doc.quickapp.cn/tutorial/framework/parent-child-component-communication.html
5.路由返回:
对于常规业务来讲router.back()基本够用,但假设这样一种场景,有如下三个页面
A【主页】、B【个人中心页,需登录】、C【注册登录页】,其中A、B页有公用底部Tab可相互跳转,C页无
在A页通过底部Tab跳到B页,在B页做登录检测,如果登录展示B页内容,如果未登录则跳转至C页,此时如果在C页点击左上角返回按钮,页面将一直在B/C页循环跳转,但我们希望在C页点击返回按钮后跳到A页,那么该如何实现呢?
起初,我们意图在C页或A页里通过官方提供的router.clear()方法达到C页顺利跳A的效果,但router.clear()方法实际并没任何作用;所以最后,我们在B页未登录的情况下,重定向到A页,并挂载一个全局变量JUMP_LOGIN,伪代码如下:
B页:
onShow() {
if (isLogin){
doActionPageB()
} else {
router.replace({uri: '/page/A'})
this.$app.jumpLogin = true
}
}
A页:
onShow() {
if (this.$app.jumpLogin) {
return router.jump({uri: '/page/C'})
} else {
doActionPageA()
}
}
C页:
onShow() {
this.$app.jumpLogin = false
doActionPageC()
}
6: 神策埋点
神策虽然提供了sensor.login()这个方法以便用当前uid来替换神策自己提供的匿名id,但实际却并不会实时生效,其对应的distinct_id字段发送的始终是上个登录用户的uid而并非当前用户的。解决方案是,弃用神策自带的sensro.login()方法,自定义一个uid方法,其值通过全局变量$uid来传递,$uid取值来自于本地存储的storage