微信小程序开发心得
2018-10-16 本文已影响0人
echo帅
wxs使用限制
根据官方的文档介绍,在 iOS 设备上小程序内的 wxs 会比 javascript 代码快 2 ~ 20 倍,但是需要注意一下几点
- 在wxs中不能使用箭头函数等
- <wxs> 模块只能在定义模块的 WXML 文件中被访问到。使用 <include> 或 <import> 时,<wxs> 模块不会被引入到对应的 WXML 文件中。
- <template> 标签中,只能使用定义该 <template> 的 WXML 文件中定义的 <wxs> 模块。
- 不能使用保留标志符作为变量名
页面跳转限制
- 小程序限制了跳转不超过5级,因此如果页面层级超过了5级,可以使用redirectTo或者reLaunch等代替
- navigateTo, redirectTo 只能打开非 tabBar 页面。如果非要跳转,可以试试reLaunch
- switchTab 只能打开 tabBar 页面。
- 页面底部的 tabBar 由页面决定,即只要是定义为 tabBar 的页面,底部都有 tabBar。
- 路由参数在onLoad生命周期获取
Page(Object)限制
- 根据文档介绍,该函数用于注册一个页面,但是
Object
内容在页面加载时会进行一次深拷贝,因此需考虑数据大小对页面加载的开销 - 小程序思想和vue类似,wxml的动态数据来自page中的data,但是小程序支持改变数组中的某一项或对象的某个属性,不需要在 this.data 中预先定义。
wxml页面限制
- 该类型类似于html文件,可以做一些简单的操作,但是如indexOf等方法就无法直接使用,可以考虑配置wxs来实现
- 在页面做判断时,尽量避免直接写true,false这种,一个不注意会把false写成字符串格式,导致判断为true
HTTPS 网络请求限制
- 不能使用patch方法
- 只可以跟指定的域名与进行网络通信
自定义组件限制
- 组件对应 wxss 文件的样式,只对组件wxml内的节点生效
- 除继承样式外, app.wxss 中的样式、组件所在页面的的样式对自定义组件无效。
- 可以使用
externalClasses
来接收外部样式类,但需要注意版本库的支持(1.9.90以上) - 可以使用
options.addGlobalClass
来使得组件外样式类能够完全影响组件内部,也许有注意版本库的支持(2.2.3以上)
this指向问题
- 很多情况下会出现this的指向问题,可以在开始处定义
const _this = this
来避免
生命周期函数注意事项
- onLoad只会触发一次,对于不会常变动的页面,可以使用,但是对于购物车等这种会出现数据变化的页面,有可能会出现潜在的问题,可以试试onShow
模块化注意事项
- 我们会把部分公共的功能代码写在一个js文件里然后引入, 通过module.exports 或者 exports暴露,通过require引入,但要注意的是require不支持绝对路径,所以项目的架构需要注意下,不用老是频繁变动文件位置
开发工具
- 小程序有自己的开发工具,但是功能嘛。。。相当于一个预览工具与调试工具吧,我遇到的问题有,
- 已经设置了用户名密码git只能拉取不能推送
- 右击显示为空,没有任何选项,不能新建等等一堆问题
- 有些问题的解决办法也简单,看看有没有更新,有的话更新下,其他的问题就只能各安天命了
以上可能会有一些我没注意的地方,请自行判断