微信小程序
监听对象中所有属性的变化
如果某个对象中需要被监听的属性太多,为了方便,可以使用 通配符 ** 来监听 对象中所有属性的变化
什么是纯数字字段
概念:纯数字字段指的是那些不用于界面渲染的 data 字段。
好处:提升界面的更新的性能。
使用规则
在 Component 构造器的 options 节点中,指定 pureDataPattern 作为一个正则表达式,字段名符合这个正则表达式的字段,将成为 纯数据字段
组件的声明周期函数
在小程序中,最重要的 生命周期函数有 3个 ,分别是 created attached detached 它们各自的特点如下:
- 组件实例 刚被创建好的时候 ,created 生命周期函数会被触发
此时含不能调用 setDate
通常在这个生命周期函数中,只应用于给组件的 this 添加一些字典关于的属性字段
- 在组件 完全初始化完毕,进入页面节点树以后,attached 生命周期函数会被触发
此时,this.setData 已被初始化完毕,绝大多数的初始化工作可以在这个时机进行
- 在组件离开页面节点树之后,detached 生命周期函数会被触发
退出一个页面树时,会触发页面内每个自定义组件的 detached 生命周期函数
lifetimes 节点
在小程序组件中,生命周期函数可以直接定义在 component 构造器的第一级参数中,可以在 lifetimes 字段内进行声明 (这是推荐的方式,其优先级最高)
旧版的样式时 直接在 Component 里面直接定义这些 生命周期函数。如果新旧方式都有,旧方式会被覆盖。
什么是组件所在页面的生命周期
自定义组件的行为依赖于页面状态的变化,此时就需要用到组件所在页面的生命周期
在自定义组件中,组件所在页面的生命周期函数有如下 3 个
pageLifetimes 节点
组件所在页面的生命周期函数,需要定义在 pageLifetimes 节点中
插槽
在自定义组件的 wxml 可以提供一个 节点 ,用于承载组件使用者提供的 wxml 结构
单个插槽
在小程序中,默认每个自定义组件中只允许使用一个 进行占位,这种个数上的限制叫做单个插槽。
启用多个插槽
默认不支持多个插槽,但是可以在 组件的 js 文件中,通过如下的方式进行启用
多个插槽以不同的 name 进行区分不同的 插槽
父子通信
属性绑定
用于父组件向子组件的指定属性设置数据,仅能设置 JSON 兼容的数据
事件绑定
用于子组件向父组件传递数据,可以传递任意数据
在这期间,有需要注意的点,我在 js 里面写习惯了 箭头函数 => 但是这里面不要写 箭头函数,因为它不支持,导致我访问 this 是一个 undefined 的值。
获取组件实例
父组件可以通过 this.selectComponent(“id 或者 class 选择器”) 获取子组件的实例对象,从而直接访问子组件的任意数据和方法,调用时需要传入一个选择器。好好好,这是 vue 里面的 ref 吧
behaviors
是小程序中,用于实现组件中间代码共享的特性,类似于 Vue.js 中的 “mixins”
每个 behaviors 可以包含一组属性、数据、生命周期函数 和 方法,组件引用它时,它的属性、数据、方法会被合并到组件中
创建 behavior
调用 Behavior(Object object) 方法即可创建一个共享的 behavior 实例对象,供所有的组件使用
然后就可以使用了
behavior 中所有可用的节点
小程序对 npm 的支持与限制
小程序已经支持使用 npm 安装 第三方包,从而提高 小程序的开发效率,但是,小程序中使用 npm 包中有如下 3 个限制
- 不支持 依赖于 Node.js 内置库的包
- 不支持 依赖于 浏览器内置对象的包
- 不支持 依赖于 C++ 插件的包
Vant
是有赞前端团队开源的一套小程序 UI 组件库,助力开发者快速搭建小程序应用,它所使用的是 MIT 开源许可协议。
安装请参考:
快速上手 – Vant Weapp (gitee.io)
使用Vant组件
安装完 Vant 组件之后,可以在 app.json 的 usingCoimponents 节点中引入需要的组件,即可在 wxml 中 直接使用组件
费了九牛二虎之力,才安装好,整个人都要崩溃了
参考博文:
http://t.csdnimg.cn/Zypjy
定制全局主题样式
在 app.wxss 中,写入 css 变量 ,即可对全局生效
API promise 化
默认情况下,小程序官方提供的 异步API 都是 基于回调函数实现的,要实现 API promise 化 主要依赖于 miniprogram-api-promise 这个第三方的 npm 包
安装:
npm i --save miniprogram-api-promise@1.0.4
实现:
跟 js 里面的 async await 是一样的
全局数据共享
是为了解决 组件之间数据共享的问题。
在小程序中,可使用 mobx-miniprogram 配合 mobx-miniprogram-bindings 实现全局数据共享,其中:
- mobx-miniprogram 用来创建 Store 实例对象
- mobx-miniprogram-bindings 用来把Store中的共享数据或方法,绑定到组件或页面中使用
安装
npm install --save mobx-miniprogram@4.13.2 mobx-miniprogram-bindings@1.2.1
创建 store 实例
导出后,就可以各个地方都可以使用了。
计算属性 需要加 get !!!
actions方法,修改store里面的数据:
将 Store 里面的成员 绑定到 页面中
直接使用
将 store 中的成员 绑定到 组件中
也是可以直接使用
分包
指的是 把一个完整的小程序项目,按照需求划分为不同的子包,在构建时打包成不同的分包,用户在使用时按需加载
- 好处:
- 优化小程序首次启动的下载时间
- 在多团队共同开发更为便捷
推荐分包构成:
- 主包:一般只包含项目的启动页面 或 TabBar 页面,以及所有分包都需要用到的一些公共资源
- 分包:只包含和当前分包有关的页面和私有资源
在小程序启动时,默认会下载主包并启动主包内界面
分包的体积限制
- 整个小程序的所有分包不超过 16M 主包+所有分包
- 单个分包/主包大小不能超过 2 M
打包原则
小程序会按照 subpackages 服务器托管网的配置来进行分包,subpackages 之外的目录会被打包到 主包中
主包也可以有自己的 page是(即最外层的 pages 字段)
- tabBar 页面必须在主包内
- 分包之间不能互相嵌套
引用原则
- 主包无法引用分包内的私有资源
- 分包之间不能相互引用私有资源
- 分包可以引用主包内的公共资源
独立分包
本质上也是分包,但是看它可以独立于主包 和 其他分包而单独运行
独立分包和普通分包区别
最主要的区别:是否依赖于主包才能运行
在 subpakages 里面会 多一个配置 independent:true
独立分包和其他包是不能互相引用资源的
分包预下载
指的是在进入小程序的某个界面时了,由框架字段预下载可能需要的分包,从而提升进入后续分包页面时的启动速度。
预下载分包的行为,会在进行指定的页面时触发,在 app.json 中 ,使用 preloadRule 节点定义的预下载规则
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net