微信小程序开发(五) - 全局(app.js)逻辑 - js 文件

拈花ヽ惹草 提交于 2019-11-27 13:01:51

微信小程序中使用的逻辑文件 ,本质上还是.js 文件,脚本中的很多东西进行了二次封装,本质上可以在外部调试中,查看

逻辑层(App Service)

小程序开发框架的逻辑层由 JavaScript 编写。

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

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

以下是各类方法(函数)的使用



全局 app.js 函数

App()

App() 函数用来注册一个小程序。接受一个 object 参数(本质就是function 和 data),其指定小程序的生命周期函数等。

object参数说明:

属性 类型 描述 触发时机
onLaunch Function 生命周期函数–监听小程序初始化 当小程序初始化完成时,会触发 onLaunch(全局只触发一次
onShow Function 生命周期函数–监听小程序显示 当小程序启动,或从后台进入前台显示,会触发 onShow
onHide Function 生命周期函数–监听小程序隐藏 当小程序从前台进入后台,会触发 onHide
onError Function 错误监听函数 当小程序发生脚本错误,或者 api 调用失败时,会触发 onError 并带上错误信息
其他 Any 开发者可以添加任意的函数或数据到 Object 参数中,内部 用 this 可以访问 ,外部用 getApp() 访问
前台、后台定义:
当用户点击左上角关闭,或者按了设备 Home 键离开微信,小程序并没有直接销毁,而是进入了后台;
当再次进入微信或再次打开小程序,又会从后台进入前台
需要注意的是:只有当小程序进入后台一定时间,或者系统资源占用过高,才会被真正的销毁。
关闭小程序(基础库版本1.1.0开始支持):
当用户从扫一扫转发等入口(场景值为1007, 1008, 1011, 1025)进入小程序,且没有置顶小程序的情况下退出,小程序会被销毁。

代码:

var load = {
  onLaunch: function(options) {
    // Do something initial when launch.
  },
  onShow: function(options) {
      // Do something when show.
  },
  onHide: function() {
      // Do something when hide.
  },
  onError: function(msg) {
    console.log(msg)
  },
  globalData: 'I am global data'
}

App(load)

app()函数中object对象参数

onLaunch, onShow 参数
字段 类型 说明
path String 打开小程序的路径
query Object 打开小程序的query(询问)
scene Number 打开小程序的场景值
shareTicket String 获取转发信息
referrerInfo Object 当场景为由从另一个小程序或公众号或App打开时,返回此字段
referrerInfo.appId String 来源小程序或公众号或App的 appId
referrerInfo.extraData Object 来源小程序传过来的数据,scene=1037或1038时支持
以下场景支持返回 referrerInfo.appId
场景值 场景 appId 信息含义
1020 公众号 profile 页相关小程序列表 返回来源公众号 appId
1035 公众号自定义菜单 返回来源公众号 appId
1036 App 分享消息卡片 返回来源应用 appId
1037 小程序打开小程序 返回来源小程序 appId
1038 从另一个小程序返回 返回来源小程序 appId
1043 公众号模板消息 返回来源公众号 appId

获取app() 内容的方法

getApp()

此函数 为全局 函数 可以用来获取到小程序 实例

代码(其他子文件中的js代码)

// other.js
var appInstance = getApp()
console.log(appInstance.globalData) // 控制台输出 :I am global data

注意:

  1. App() 必须app.js 中注册,且不能注册多个。
  2. 不要在定义于 App() 内的函数中调用 getApp() ,使用this 就可以拿到 app 实例。
  3. 不要在 onLaunch 的时候调用 getCurrentPages(),此时 page 还没有生成。
  4. 通过 getApp() 获取实例之后,不要私自调用生命周期函数
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!