ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

框架-逻辑层(逻辑层简介和注册程序)

2022-08-20 00:30:09  阅读:192  来源: 互联网

标签:逻辑 简介 App 程序 onLaunch getApp 注册 微信 页面


逻辑层简介

小程序逻辑层

小程序开发框架的逻辑层是使用JavaScript编写的。

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

在 JavaScript 的基础上,微信做了一些修改,以方便地开发小程序。

  • 增加 App 和 Page 方法,进行程序和页面的注册。
  • 增加 getApp和getCurrentPages 方法,分别用来获取 App 实例和当前页面栈。
  • 提供丰富的 API,如微信用户数据,扫一扫,支付等微信特有能力。
  • 每个页面有独立的作用域,并提供模块化能力。
  • 由于框架并非运行在浏览器中,所以 JavaScript 在 web 中一些能力都无法使用,如 document,window 等。
  • 开发者写的所有代码最终将会打包成一份 JavaScript,并在小程序启动的时候运行,直到小程序销毁。类似 ServiceWorker,所以逻辑层也称之为 App Service。

注册程序

App()

App() 函数用来声明小程序。其接收 object 类型参数,其指定小程序的生命周期函数等。

object参数说明:
image

image

前台、后台定义: 当用户点击左上角“关闭”,或者按了设备 “Home” 键离开微信,小程序并没有直接销毁,而是进入了后台;

当再次进入微信或打开小程序,又会从后台进入前台。

需要注意的是:只有当小程序进入后台一定时间,或者系统资源占用过高,才会被真正的销毁。

关闭小程序: 当用户从扫一扫、转发等入口(场景值为1007, 1008, 1011, 1025)进入小程序,且没有置顶小程序的情况下退出,小程序会被销毁。(基础库版本1.1.0开始支持,1.4.0版本已改变规则不再适用

示例代码:

App({
  onLaunch: function(options) {
    // Do something initial when launch.
  },
  onShow: function(options) {
      // Do something when show.
  },
  onHide: function() {
      // Do something when hide.
  },
  one rror: function(msg) {
    console.log(msg)
  },
  globalData: '爱如海大'
})

onLaunch, onShow 参数

上面讲到App()函数,其中onLaunch, onShow参数有他们特定的回调参数
image

image

以下场景支持返回 referrerInfo.appId:
image

getApp()

全局的getApp()函数可以用来获取到小程序实例。

// other.js
var appInstance = getApp()
console.log(appInstance.globalData) //我们之前在app.js中定义了globalData,故将会输出 '爱如海大'

注意:

  • App() 必须在 app.js 中申明,且不能申明多个。
  • 不要在定义于 App() 内的函数中调用 getApp() ,使用 this 就可以拿到 app 实例。
  • 不要在 onLaunch 的时候调用 getCurrentPages(),因为此时 page 还没有生成。
  • 通过 getApp() 获取实例之后,不要私自调用生命周期函数。

getCurrentPages():获取到页面栈的所有页面Page对象组成的数组

image

标签:逻辑,简介,App,程序,onLaunch,getApp,注册,微信,页面
来源: https://www.cnblogs.com/Steph/p/16606988.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有