微信小程序开发经验

筅森魡賤 提交于 2020-02-16 21:57:24

一,笔记
小程序分为渲染层和逻辑层,渲染层的界面使用了WebView 进行渲染;逻辑层采用JsCore线程运行JS脚本,一个小程序存在多个界面,所以渲染层存在多个WebView线程,这两个线程的通信会经由微信客户端做中转,逻辑层发送网络请求也经由Native转发。

二,开发经验总结

1:点击一个链接跳转之后,再返回到这个页面,需要重新加载的版块就放到onshow()生命函数中,不需要从新加载的放到onload()生命周期函数中

2:需要加载的模块页面需要加载动画,不要都放到整个页面都呈现出一个加载动画。

3:小程序json配置文件的key必须是双引号,且json文件最后一个值不要有 " ," 逗号出现。

4:小程序中的使用图片一定要设置宽高,否则微信会默认给设置一个宽高

5:小程序中如果设置平方字体(苹果手机中才会出现的字体):


view{ font-family: "PingFangSC-Thin"; }

6:页面能写成一个一个组件拼装起来,就写成组件的形式:,这样可以实现代码复用。

7:小程序中的api用promise对象进行封装,实现一致性异步操作

//request请求
function request(url, data, method, type) {
  return new Promise((resolve, reject) => {
    wx.request({
      url: url,
      data: data,
      dataType: type,
      method: method,
      success: resolve,
      fail: reject
    })
  })
}

module.exports = {
  request
}

8:为了减少全部变量,将公用的信息写在一个配置文件中。新建config.js

const base_host_url = "https://www.test.com/api";

module.exports = {
  base_host_url 
}

9:image文件夹的置放,如果是page中用到的图片,建议image放到page的同级目录,如果是自己写的组件中用到的图片,或者第三方组件中用到的图片,就放到component下的文件中,新建一个image,为了区分开

10:切记,千万不要在for循环中使用this.setData({key:value});减少对this.setData()的调用

例如:
for(let i = 0;i<10;i++){
  if(i > 1){
    this.setData({index:10});
  }else{
    this.setData({index:2});
  }
}
修改成:
var index;
for(let i = 0;i<10;i++){
  if(i > 1){
    index = 10;
  }else{
    index = 2;
  }
}
this.setData({index:10});
否则,严重了会造成小程序直接运行卡掉

11:能封装在app.js中的代码就不要在重新建一个文件再去封装。否则还得再js文件中先引入,才能使用
12:标签中没有特殊需求的话,都加上mode=‘withFix’
图片的缩放模式,保持图片的宽高比不变

<image bindtap="lookImg" src="{{url}}/{{item.path}}" mode='widthFix'></image>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!