zoukankan      html  css  js  c++  java
  • 微信小程序学习笔记(三)--框架-逻辑层

    逻辑层将数据进行处理后发送给视图层,同时接受视图层的事件反馈。

    开发者写的所有代码最终将会打包成一份 JavaScript 文件,并在小程序启动的时候运行,直到小程序销毁。这一行为类似 ServiceWorker,所以逻辑层也称之为 App Service。

    注意:小程序框架的逻辑层并非运行在浏览器中,因此 JavaScript 在 web 中一些能力都无法使用,如 windowdocument 等。

    App(Object)注册程序

    App() 函数用来注册一个小程序。接受一个 Object 参数,其指定小程序的生命周期回调等。

    App() 必须在 app.js 中调用,必须调用且只能调用一次。不然会出现无法预期的后果。

     试着在index.js里面把Page()改成了App(),报了如下的错:

    不过这可能只是其中一种情况。

    App(Object) ,Object参数说明:

     前台、后台定义: 当用户点击左上角关闭,或者按了设备 Home 键离开微信,小程序并没有直接销毁,而是进入了后台;当再次进入微信或再次打开小程序,又会从后台进入前台。需要注意的是:只有当小程序进入后台一定时间,或者系统资源占用过高,才会被真正的销毁。

    在基础库版本 1.4.0之后,小程序启动会有两种情况,一种是「冷启动」,一种是「热启动」。 假如用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时无需重新启动,只需将后台态的小程序切换到前台,这个过程就是热启动;冷启动指的是用户首次打开或小程序被微信主动销毁后再次打开的情况,此时小程序需要重新加载启动。我当前使用的基础库是2.0.4 。

    onLaunch(Object)

    小程序初始化完成时触发,全局只触发一次。

    关于onLaunch()、onShow()等的参数设置,参考 https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/app.html

    对于getApp(Object)

    • 不要在定义于 App() 内的函数中调用 getApp() ,使用 this 就可以拿到 app 实例。
    • 通过 getApp() 获取实例之后,不要私自调用生命周期函数。

    场景值

    即操作场景对应的数值,基础库 1.1.0 开始支持,低版本需做兼容处理

    可以在 App 的 onLaunch 和 onShow 中获取上述场景值,部分场景值下还可以获取来源应用、公众号或小程序的appId,详见 。感觉用来后台统计数据会用得上。

    Tip: 由于Android系统限制,目前还无法获取到按 Home 键退出到桌面,然后从桌面再次进小程序的场景值,对于这种情况,会保留上一次的场景值。

    具体参考 场景值。  

    页面 Page

    Page(object),函数用来注册一个页面。接受一个 Object 类型参数,其指定页面的初始数据、生命周期回调、事件处理函数等。

    具体参考 注册页面

    data

    data 是页面第一次渲染使用的初始数据。参考

    生命周期回调函数

    1、onLoad(Object query)

    页面加载时触发。一个页面只会调用一次,可以在 onLoad 的参数中获取打开当前页面路径中的参数。

    2、onShow()

    3、onReady()

    4、onHide()

    5、onUnload()

    参考

    页面事件处理函数

    1、onPullDownRefresh()

    2、onReachBottom()

    3、onPageScroll(Object)

    4、onPageScroll(Object)

    5、onShareAppMessage(Object)

    注意:只有定义了此事件处理函数,右上角菜单才会显示“转发”按钮

     6、onTabItemTap(Object)

    参考

    组件事件处理函数

    Page 中还可以定义组件事件处理函数。在渲染层的组件中加入事件绑定,当事件被触发时,就会执行 Page 中定义的事件处理函数。

    参考

    Page.route

    到当前页面的路径,类型为String

    参考

    Page.prototype.setData(Object data, Function callback)

    setData 函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data 的值(同步)。在方法中使用

    getAppInfo: function (e) {
          var appInfo = getApp().globalData;
          this.setData({
            userInfo:appInfo.userInfo.nickName
          })
        }

    参考

    页面生命周期

    页面路由

    在小程序中所有页面的路由全部由框架进行管理。

    页面栈

    框架以栈的形式维护了当前的所有页面。 当发生路由切换的时候,页面栈的表现如下:

    路由方式页面栈表现
    初始化 新页面入栈
    打开新页面 新页面入栈
    页面重定向 当前页面出栈,新页面入栈
    页面返回 页面不断出栈,直到目标返回页
    Tab 切换 页面全部出栈,只留下新的 Tab 页面
    重加载 页面全部出栈,只留下新的页面

    getCurrentPages()

    • 不要尝试修改页面栈,会导致路由以及页面状态错误。
    • 不要在 App.onLaunch 的时候调用 getCurrentPages(),此时 page 还没有生成。
  • 相关阅读:
    【URAL1039】Anniversary Party
    【POJ2480】Longge's problem
    【POJ2478】Farey Sequence
    【HDU2157】How many ways??
    【NOI2012】随机数生成器
    【HDU3306】Another kind of Fibonacci
    【HDU2604】Queuing
    【HDU1757】A Simple Math Problem
    【HDU1575】Tr A
    【HDU1521】排列组合
  • 原文地址:https://www.cnblogs.com/viola-sh/p/9564564.html
Copyright © 2011-2022 走看看