您的位置:首页 > 移动开发 > 微信开发

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

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

逻辑层(App Service)

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

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

与 原生
JavaScript
不同的是 :


增加
App
Page
方法,进行程序和页面的注册

增加
getApp
getCurrentPages
方法,分别用来获取 App 实例当前页面栈

提供丰富的 API,如微信用户数据,扫一扫,支付等微信特有能力

每个页面有独立的作用域,并提供模块化能力。

由于框架并非运行在浏览器中,所以 JavaScript 在 web 中一些能力都无法使用,如
document,window
等。

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

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

全局
app.js
函数

App()

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

object参数说明:

属性类型描述触发时机
onLaunchFunction生命周期函数–监听小程序初始化当小程序初始化完成时,会触发 onLaunch(全局只触发一次
onShowFunction生命周期函数–监听小程序显示当小程序启动,或从后台进入前台显示,会触发 onShow
onHideFunction生命周期函数–监听小程序隐藏当小程序从前台进入后台,会触发 onHide
onErrorFunction错误监听函数当小程序发生脚本错误,或者 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 参数

字段类型说明
pathString打开小程序的路径
queryObject打开小程序的query(询问)
sceneNumber打开小程序的场景值
shareTicketString获取转发信息
referrerInfoObject当场景为由从另一个小程序或公众号或App打开时,返回此字段
referrerInfo.appIdString来源小程序或公众号或App的 appId
referrerInfo.extraDataObject来源小程序传过来的数据,scene=1037或1038时支持
以下场景支持返回
referrerInfo.appId


场景值场景 appId信息含义
1020公众号 profile 页相关小程序列表返回来源公众号 appId
1035公众号自定义菜单返回来源公众号 appId
1036App 分享消息卡片返回来源应用 appId
1037小程序打开小程序返回来源小程序 appId
1038从另一个小程序返回返回来源小程序 appId
1043公众号模板消息返回来源公众号 appId

获取
app()
内容的方法

getApp()

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

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

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


注意:

App() 必须
app.js
中注册,且不能注册多个。

不要在定义于 App() 内的函数中调用
getApp()
,使用
this
就可以拿到 app 实例。

不要在
onLaunch
的时候调用
getCurrentPages()
,此时
page
还没有生成。

通过 getApp() 获取实例之后,不要私自调用生命周期函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: