逻辑层将数据进行处理后发送给视图层,同时接受视图层的事件反馈。
开发者写的所有代码最终将会打包成一份 JavaScript
文件,并在小程序启动的时候运行,直到小程序销毁。这一行为类似 ServiceWorker,所以逻辑层也称之为 App Service。
注意:小程序框架的逻辑层并非运行在浏览器中,因此 JavaScript
在 web 中一些能力都无法使用,如 window
,document
等。
App()
函数用来注册一个小程序。接受一个 Object
参数,其指定小程序的生命周期回调等。
App() 必须在 app.js
中调用,必须调用且只能调用一次。不然会出现无法预期的后果。
试着在index.js里面把Page()改成了App(),报了如下的错:
不过这可能只是其中一种情况。
App(Object) ,Object参数说明:
前台、后台定义: 当用户点击左上角关闭,或者按了设备 Home 键离开微信,小程序并没有直接销毁,而是进入了后台;当再次进入微信或再次打开小程序,又会从后台进入前台。需要注意的是:只有当小程序进入后台一定时间,或者系统资源占用过高,才会被真正的销毁。
在基础库版本 1.4.0之后,小程序启动会有两种情况,一种是「冷启动」,一种是「热启动」。 假如用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时无需重新启动,只需将后台态的小程序切换到前台,这个过程就是热启动;冷启动指的是用户首次打开或小程序被微信主动销毁后再次打开的情况,此时小程序需要重新加载启动。我当前使用的基础库是2.0.4 。
小程序初始化完成时触发,全局只触发一次。
关于onLaunch()、onShow()等的参数设置,参考 https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/app.html
App()
内的函数中调用 getApp()
,使用 this
就可以拿到 app 实例。getApp()
获取实例之后,不要私自调用生命周期函数。即操作场景对应的数值,基础库 1.1.0 开始支持,低版本需做兼容处理:
可以在 App
的 onLaunch
和 onShow
中获取上述场景值,部分场景值下还可以获取来源应用、公众号或小程序的appId。详见
Tip: 由于Android系统限制,目前还无法获取到按 Home 键退出到桌面,然后从桌面再次进小程序的场景值,对于这种情况,会保留上一次的场景值。
具体参考 场景值。
Page(object),函数用来注册一个页面。接受一个 Object
类型参数,其指定页面的初始数据、生命周期回调、事件处理函数等。
具体参考 注册页面
data
是页面第一次渲染使用的初始数据。参考
页面加载时触发。一个页面只会调用一次,可以在 onLoad 的参数中获取打开当前页面路径中的参数。
注意:只有定义了此事件处理函数,右上角菜单才会显示“转发”按钮
Page
中还可以定义组件事件处理函数。在渲染层的组件中加入事件绑定,当事件被触发时,就会执行 Page 中定义的事件处理函数。
到当前页面的路径,类型为String
setData
函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data
的值(同步)。在方法中使用
getAppInfo: function (e) { var appInfo = getApp().globalData; this.setData({ userInfo:appInfo.userInfo.nickName }) }
在小程序中所有页面的路由全部由框架进行管理。
框架以栈的形式维护了当前的所有页面。 当发生路由切换的时候,页面栈的表现如下:
路由方式 | 页面栈表现 |
---|---|
初始化 | 新页面入栈 |
打开新页面 | 新页面入栈 |
页面重定向 | 当前页面出栈,新页面入栈 |
页面返回 | 页面不断出栈,直到目标返回页 |
Tab 切换 | 页面全部出栈,只留下新的 Tab 页面 |
重加载 | 页面全部出栈,只留下新的页面 |
App.onLaunch
的时候调用 getCurrentPages()
,此时 page
还没有生成。
原文:https://www.cnblogs.com/viola-sh/p/9564564.html