小程序框架 /介绍
框架
小程序开发框架的目标是通过尽可能简单、高效的方式让开发者可以在微信中开发具有原生 APP 体验的服务。
整个小程序框架系统分为两部分:逻辑层(App Service)和 视图层(View)。小程序提供了自己的视图层描述语言 WXML 和 WXSS,以及基于 JavaScript 的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,让开发者能够专注于数据与逻辑。
响应的数据绑定
框架的核心是一个响应的数据绑定系统,可以让数据与视图非常简单地保持同步。当做数据修改的时候,只需要在逻辑层修改数据,视图层就会做相应的更新。
通过这个简单的例子来看:
在开发者工具中预览效果
<!-- This is our View --><view> Hello {{name}}! </view><button bindtap="changeName"> Click me! </button>
// This is our App Service.// This is our data.var helloData = { name: 'Weixin'}// Register a Page.Page({ data: helloData, changeName: function(e) { // sent data change to view this.setData({ name: 'MINA' }) }})
- 开发者通过框架将逻辑层数据中的 name 与视图层的 name 进行了绑定,所以在页面一打开的时候会显示 Hello Weixin!;
- 当点击按钮的时候,视图层会发送 changeName 的事件给逻辑层,逻辑层找到并执行对应的事件处理函数;
- 回调函数触发后,逻辑层执行 setData 的操作,将 data 中的 name 从 Weixin 变为 MINA,因为该数据和视图层已经绑定了,从而视图层会自动改变为 Hello MINA!。
页面管理
框架 管理了整个小程序的页面路由,可以做到页面间的无缝切换,并给以页面完整的生命周期。开发者需要做的只是将页面的数据、方法、生命周期函数注册到 框架 中,其他的一切复杂的操作都交由 框架 处理。
基础组件
框架 提供了一套基础的组件,这些组件自带微信风格的样式以及特殊的逻辑,开发者可以通过组合基础组件,创建出强大的微信小程序 。
丰富的 API
框架 提供丰富的微信原生 API,可以方便的调起微信提供的能力,如获取用户信息,本地存储,支付功能等。
页面路由
在小程序中所有页面的路由全部由框架进行管理。
页面栈
框架以栈的形式维护了当前的所有页面。 当发生路由切换的时候,页面栈的表现如下:
路由方式 |
页面栈表现 |
初始化 |
新页面入栈 |
打开新页面 |
新页面入栈 |
页面重定向 |
当前页面出栈,新页面入栈 |
页面返回 |
页面不断出栈,直到目标返回页 |
Tab 切换 |
页面全部出栈,只留下新的 Tab 页面 |
重加载 |
页面全部出栈,只留下新的页面 |
开发者可以使用 getCurrentPages() 函数获取当前页面栈。
路由方式
对于路由的触发方式以及页面生命周期函数如下:
路由方式 |
触发时机 |
路由前页面 |
路由后页面 |
初始化 |
小程序打开的第一个页面 |
onLoad, onShow |
|
打开新页面 |
调用 API wx.navigateTo |
onHide |
onLoad, onShow |
页面重定向
|
调用 API wx.redirectTo |
onUnload |
onLoad, onShow |
页面返回 |
调用 API wx.navigateBack |
onUnload |
onShow |
Tab 切换 |
调用 API wx.switchTab |
各种情况请参考下表 |
|
重启动 |
调用 API wx.reLaunch |
onUnload |
onLoad, onShow |
Tab 切换对应的生命周期(以 A、B 页面为 Tabbar 页面,C 是从 A 页面打开的页面,D 页面是从 C 页面打开的页面为例):
当前页面 |
路由后页面 |
触发的生命周期(按顺序) |
A |
A |
Nothing happend |
A |
B |
A.onHide(), B.onLoad(), B.onShow() |
A |
B(再次打开) |
A.onHide(), B.onShow() |
C |
A |
C.onUnload(), A.onShow() |
C |
B |
C.onUnload(), B.onLoad(), B.onShow() |
D |
B |
D.onUnload(), C.onUnload(), B.onLoad(), B.onShow() |
D(从转发进入) |
A |
D.onUnload(), A.onLoad(), A.onShow() |
D(从转发进入) |
B |
D.onUnload(), B.onLoad(), B.onShow() |
注意事项
- navigateTo, redirectTo 只能打开非 tabBar 页面。
- switchTab 只能打开 tabBar 页面。
- reLaunch 可以打开任意页面。
- 页面底部的 tabBar 由页面决定,即只要是定义为 tabBar 的页面,底部都有 tabBar。
- 调用页面路由带的参数可以在目标页面的onLoad中获取。
企业网站建设与开发最低只要299元起,包含域名服务器,需要的联系QQ345424724,电话15516990022,18530226930相关影片资源迅雷下载推荐
4种小程序开发方式,看看哪种性比价比最高?
近期带着团队完成了一些微信小程序开发工作。过程中发现不少互联网企业依旧把小程序开发定位和印象停留在几年前的”为用完即走“。认为小程序只是成了一个流量拉新的渠道,只是裂变、拉新、用户轻量服务。随着微信小 ...
小程序开发,4种小程序开发方式,看看哪种性比价比最高?
标签: 小程序开发 微信小程序架构:开发规范