Skip to content

Latest commit

 

History

History
63 lines (59 loc) · 2.62 KB

File metadata and controls

63 lines (59 loc) · 2.62 KB

微信小程序

小程序与普通网页开发的区别

  • 网页开发
    • 渲染线程与脚本线程是互斥的(长时间运行脚本会影响页面响应)
    • 使用DOM API进行DOM选中与操作
    • 开发面对各种浏览器,及辅助工具或编辑器
  • 小程序开发
    • 渲染层和逻辑层是分开的
    • 逻辑层运行在JSCore中,没有完整浏览器对象,没有DOM操作(基本通过改变数据来实现的)
    • 小程序面对的是两大操作系统及维修开发者工具,及申请小程序账号,及配置等等.

简述小程序原理

  • 渲染层使用WebView进行WXML/WXSS的渲染,逻辑层采用JsCore线程执行js脚本
  • 一个小程序存在多个页面,WebView中存在多个线程
  • 线程间的通讯,通过微信客户端(native)做中转.发送请求也是使用wx的请求方法,在由native转发.(数据驱动的架构模式)

小程序代码构成

  • WXML 模板:标签语句
    • 标签名称是小程序自己包装好的,包括一些组件
    • 多了{{}}表达式与wx:if等语句,事件也有所不同.
  • WXSS 样式:样式语音
    • 新增尺寸单位rpx,有全局样式及部分样式
  • JS 逻辑交互:逻辑处理网络请求
    • 增加App和Page方法,进行程序注册和页面注册
    • 增加getApp和getCurrenPages方法,获取App实例及当前页面栈
    • 提供丰富的API,如微信用户数据,扫一扫,支付等微信特有能力
    • 提供模块化能力,每个页面有独立的作用域
  • JSON 配置:当前页面的一些信息

小程序生命周期

  • app.js
    • onLaunch:监听小程序初始化
    • onShow:监听小程序启动或切前台
    • onHide:监听小程序切后台
  • page.js
    • onLoad:监听页面加载
    • onShow:监听页面展示
    • onRead:监听页面首次加载完成
    • onHide:监听页面隐藏
    • onUnload:监听页面卸载
  • 组件
    • created:组件实例刚刚被创建时执行
    • attached:组件实例进入页面节点树时执行
    • ready:组件在视图布局完成后执行
    • moved:组件实例被移动到节点树另一个位置执行
    • detached:组件实例被从页面节点树移除时执行
    • error:每当组件方法抛出错误执行

小程序目录结构

  • pages:页面文件夹
  • utils:工具类库
  • api:统一接口文件
  • component:组件
  • images:图片文件夹
  • app.js:入口文件小程序逻辑
  • app.json:公共配置
  • app.wxss:公共样式
  • project.config.js
  • project.private.config.js
  • siemap.json

小程序原生组件为什么层级最高?如何解决?

由于原生组件脱离webview渲染层外,所以原生组件的层级最高 使用cover-view