微信小程序学习笔记(4)--------框架之逻辑层
2016-12-07 09:52
579 查看
逻辑层
逻辑层(App Service):小程序框架的逻辑层是由JavaScript编写的,逻辑层将数据进行处理后发送给视图层,同时接受视图层的事件反馈。
App进行程序注册,Page进行页面注册
getApp获取App实例,getCurrentPages获取当前页面栈
一、程序注册
1、App
App()函数用来注册小程序。接受一个Object参数,其指定小程序的生命周期函数。注意:App()必须在app.js中注册,而且不能注册多个
Object参数说明
属性 | 类型 | 描述 | 触发时机 |
onLaunch | Function | 生命周期函数--初始化 | 初始化完成是,只会触发一次 |
onShow | Function | 生命明明周期函数--小程序显示 | 启动时,或从后台进入前台显示 |
onHide | Function | 生命周期函数--小程序隐藏 | 从前台进入后台 |
其他 | Any | 开发者可以添加任意的函数或数据到Object参数中,用this可以访问 | |
2、getApp()
getApp()是全局函数,可以获取小程序实例。注意:不要在定义App()内的函数中调用getApp(),使用this就可以拿到app实例。通过getApp()获取实例后,不要私自调用生命周期函数。
3、getCurrentPages()
不要在onLaunch的时候调用getCurrentPages(),app还没有生成。二、页面注册
Page
Page()函数用来注册一个页面,接受一个Object参数,其指定页面的初始数据、生命周期函数、事件处理函数等。属性 | 类型 | 描述 |
data | Object | 页面的初始数据 |
onLoad | Function | 生命周期函数--监听页面加载 |
onReady | Function | 生命周期函数--监听页面初次渲染完成 |
onShow | Function | 生命周期函数--监听页面显示 |
onHide | Function | 生命周期函数--监听页面隐藏 |
onUnload | Function | 生命周期函数--监听页面卸载 |
onPullDownRefresh | Function | 页面相关事件处理函数--监听用户下拉动作 |
onReachBottom | Function | 页面上拉触底事件的处理函数 |
其他 | Any | 开发者可以添加任意的函数或数据到 object 参数中,在页面的函数中用 this 可以访问 |
1、初始化数据
初始化数据将作为页面的第一次渲染。data将会以JSON的形式由逻辑层传至渲染层,所以其数据必须是可以转换成JSON的格式:字符串,数字,布尔值,对象,数组。渲染层可以通过wxml对数据进行绑定。
2、生命周期函数
(1)、onLoad:页面加载
一个页面只会调用一次接收页面参数可以获取wx.navigateTo和wx.redirectTo及<navigator/>中的 query。
(2)、onShow:页面显示
每次打开页面都会调用 一次(3)、onReady:页面初次渲染完成。
一个页面只会调用一次,代表页面已经准备妥当,可以和试图层进行交互(4)、onHide:页面隐藏
当navigateTo或底部tab切换时调用。(5)、onUnload:页面卸载
当redirectTo或navigateBack的时候调用。3、页面相关事件处理函数
OnPullDownRefresh:下拉刷新需要在config的windows选项中开启enablePullDownRefresh。当处理完数据刷新后,wx.stopPullDownRefresh可以停止当前页面的下拉刷新。4、事件处理函数
除了初始化数据和生命周期函数,Page 中还可以定义一些特殊的函数:事件处理函数。在渲染层可以在组件中加入事件绑定,当达到触发事件时,就会执行 Page 中定义的事件处理函数。Page.prototype.setData()
setData 函数用于将数据从逻辑层发送到视图层,同时改变对应的 this.data 的值。注意:
1. 直接修改 this.data 无效,无法改变页面的状态,还会造成数据不一致。
2. 单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。
setData() 参数格式
接受一个对象,以 key,value 的形式表示将 this.data 中的 key 对应的值改变成 value。其中 key 可以非常灵活,以数据路径的形式给出。
getCurrentPages()
getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。注意:不要尝试修改页面栈,会导致路由以及页面状态错误。
三、模块化
文件作用域
在 JavaScript 文件中声明的变量和函数只在该文件中有效;不同的文件中可以声明相同名字的变量和函数,不会互相影响。通过全局函数 getApp()可以获取全局的应用实例,如果需要全局的数据可以在 App() 中设置。
模块化
我们可以将一些公共的代码抽离成为一个单独的 js 文件,作为一个模块。模块只有通过 module.exports 或者 exports 才能对外暴露接口。需要注意的是:
exports 是 module.exports 的一个引用,因此在模块里边随意更改 exports 的指向会造成未知的错误。所以我们更推荐开发者采用module.exports 来暴露模块接口。
四、API
相关文章推荐
- 微信小程序学习笔记(2)--------框架之目录结构
- 微信小程序开发学习笔记002--微信小程序框架解密
- 微信小程序 - MINA 框架 学习笔记
- 微信小程序,学习笔记(一)框架,视图层
- 微信小程序,学习笔记(一)框架,视图层
- MFC学习笔记之二----------MFC框架程序及消息映射
- SuperSocket框架学习笔记3-构建Unity3D__WebSocket4Net客户端程序
- 【D3D11游戏编程】学习笔记十:程序框架
- 微信:小程序学习笔记(3)
- 【MFC】第3课 MFC程序框架学习笔记
- PHP CI框架学习笔记-分页实现程序
- Cocos2d-x 3.1.1 学习笔记(一)关联程序逻辑与CocosStudio导出文件
- rcp学习笔记(-)-----程序框架
- laravel框架的学习笔记(一) 运行逻辑
- 微信小程序学习笔记(1)----学习资料整理
- 微信开发学习笔记之五(CI框架 常用封装)
- windows编程学习笔记一之——windows程序基本框架
- [每日学习笔记][2012.07.10]使用Java理解程序逻辑(六)
- [程序学习笔记]cocos2dx从零开始(1)--------渲染框架(一)
- android新手学习笔记(1)安装及基本程序框架