微信小程序笔记<三>入口app.js —— 注册小程序
小程序开发框架在逻辑层使用的语言就是JavaScript,所以想玩小程序JavaScript的基本功一定要扎实。但小程序基于js做了一些修改,以方便开发者更方便的使用微信的一些功能,使得小程序更好的贴合微信使用。
小程序的 App Service 具有以下特性:
- 增加 App() 和 Page() 方法,分别用来对小程序和页面进行注册。
- 增加 getApp() 和
getCurrentPage()方法,分别用来获取 App 实例和当前页面栈。 - 提供微信特有功能的API,如微信用户数据,扫一扫,支付等。
- 每个页面有独立的作用域,并提供模块化能力。
- 由于框架并非运行在浏览器中,所以
JavaScript在 web 中一些能力都无法使用,如document,window 等。
先来看看小程序的入口 —— app.js
app.js是整个小程序的入口文件,也是用来对整个小程序进行注册的文件。
App()
App() 用来注册一个小程序,一个小程序中有且只能有一个 App() 且 App() 只能在App.js中被调用。其接收一个 Object 对小程序的生命周期进行监控。

以上为官方给出的App()函数的接收Object
//app.js
let showCount = 0; let hideCount = 0;
App({
// 初始化
onLaunch:function(){
console.log("打开小程序");
},
// 显示
onShow:function(){
console.log("前台显示_" + (showCount++));
},
// 隐藏
onHide:function(){
console.log("后台隐藏_" + (hideCount++));
},
// 错误监听
onError:function(){
console.log("程序异常");
}
})
一个简单的小程序入口,后台切换调试来看一下控制器监听到的显示结果。

onLaunch, onShow 参数
App({
onLaunch: function (obj) {
console.log(obj); // {path: "app", scene: 1001, query: {…}}
},
onShow: function (obj) {
console.log(obj); // {path: "app", scene: 1001, query: {…}}
},
onHide:function(obj){
console.log(obj); // undefined
}
})

调试的时候仅看到 path 、 scene 和 query 三个参数,另外四个参数需要特定场景下使用( 本人未使用过这四个参数,若有使用过的朋友谢谢留言 )。

shareTicket 在转发场景下使用。
referrerInfo 对象参数仅在以下场景中使用,referrerInfo 主要用来获取本程序外传入数据。

getApp()
在 app.js 外获取小程序实例,看一个例子
//app.js
App({
onLaunch: function (obj) {},
onShow: function (obj) {},
onHide:function(){},
data:{"sayHi":"Hello World"} // 这里定义一个全局属性
}) // ------------------------------------------------------------------------------- // index/index.js
Page({
onLoad: function(obj) {
console.log(getApp().data.sayHi); // 输出 Hello World
},
onReady: function () {},
onShow: function () {},
onHide: function () {},
onUnload: function () {},
onPullDownRefresh: function () {},
onReachBottom: function () {},
onShareAppMessage: function () {}
})
使用 getApp() 是注意一下几点
不要在定义于 App() 内的函数中调用 getApp() ,使用 this 就可以拿到 app 实例。( 在 App() 中 getApp() 是 undefined )
通过 getApp() 获取实例之后,不要私自调用生命周期函数。
微信小程序笔记<三>入口app.js —— 注册小程序的更多相关文章
- 微信小程序笔记<二>认识app.json
*.json文件在小程序开发中必不可少,从 app.json 开始认识小程序中的配置文件*.json: app.json 为小程序必须文件,它不仅作为配置文件管理着小程序的UI还充当着路由器的功能: ...
- 小程序笔记三:幻灯片swiper 和图片自定义高度
滑动组件:scroll-view wxml代码 <view> <scroll-view scroll-x="true" class="tab-h&quo ...
- [小问题笔记(七)] JS和 jQuery常用语句笔记(隐藏/显示/禁用标签 日期操作 跳转等)
隐藏/显示标签 $("#div1").css("display", "none");$("#div2").css(&qu ...
- [小问题笔记(一)] js关闭页面window.close() 无效,不弹提示直接关闭
window.close(); 单独写这句,各个浏览器效果都不一样.比如IE(不是所有版本)会弹提示: 点确定之后才会关闭.而有些浏览器压根就没反应. 需要让它不弹提示,直接关闭,在window.cl ...
- php支付走过的坑(微信篇 包含h5支付和app支付 注册 秘钥 环境等等配置)
支付这东西,说容易也容易,说难也难 代码这玩意还比较好说 但是 如果没有demo 直接去看官方文档 十有八九一脸懵逼 今天就整理一下 支付这块走过的坑 涉及 微信h5支付 支付宝h5支付 (api文档 ...
- SpringCloud笔记三:Eureka服务注册与发现
目录 什么是Eureka? Eureka注册的三大步 第一步,引用Maven 第二步,配置yml 第三步,开启Eureka注解 新建Eureka子项目 把provider子项目变成服务端 Eureka ...
- 【微信小程序】App.js生命周期
1.小程序的生命周期-App.js App() 必须在 app.js 中注册,且不能注册多个.所以App()方法在一个小程序中有且仅有一个. App({ onLaunch: function () { ...
- 微信小程序里解决app.js onLaunch事件与小程序页面的onLoad加载前后异常问题
使用 Promise 解决小程序页面因为需要app.js onLaunch 参数导致的请求失败 app.js onLaunch 的代码 "use strict"; Object.d ...
- 微信小程序教学第三章第四节(含视频):小程序中级实战教程:下拉更新、分享、阅读标识
下拉更新.分享.阅读标识 本文配套视频地址: https://v.qq.com/x/page/h0554i4u5ob.html 开始前请把 ch3-4 分支中的 code/ 目录导入微信开发工具 这一 ...
随机推荐
- Android 单元测试覆盖率计算
在工程下面的build.gradle 增加配置 1.增加Plugin apply plugin: 'jacoco' 2. 增加jacoco版本 jacoco{ version "0.7.4. ...
- angular2的ngfor ngif指令嵌套
angular2的ngfor ngif指令嵌套 ng2 结构指令不能直接嵌套使用,可使用<ng-container>标签来包裹指令 示例如下: <ul> <ng-cont ...
- 用shell通过jps -m来杀死进程
#!/bin/sh ### find pid jps=`jps -m` echo "$jps"|while read i do if[[ $i =~"agentTestT ...
- Elasticsearch的数据导出和导入操作(elasticdump工具),以及删除指定type的数据(delete-by-query插件)
Elasticseach目前作为查询搜索平台,的确非常实用方便.我们今天在这里要讨论的是如何做数据备份和type删除.我的ES的版本是2.4.1. ES的备份,可不像MySQL的mysqldump这么 ...
- oracle rename数据文件的两种方法
oracle rename数据文件的两种方法 2012-12-11 20:44 10925人阅读 评论(0) 收藏 举报 分类: oracle(98) 版权声明:本文为博主原创文章,未经博主允许不 ...
- Android 如何让EditText不自动获取焦点 (转)
在项目中,一进入一个页面, EditText默认就会自动获取焦点. 那么如何取消这个默认行为呢? 在网上找了好久,有点 监听软键盘事件,有点 调用 clearFouse()方法,但是测试了都没有! x ...
- Winform Chart
Chart图表解释说明: 第一步:使用VS创建Winform项目: 第二步:工具箱中拖入Chart控件: 第三步:所有控件拖入其他控件如下图所示: using System; using System ...
- PL/SQL Developer 使用小技巧
1.PL/SQL Developer记住登陆密码 在使用PL/SQL Developer时,为了工作方便希望PL/SQL Developer记住登录Oracle的用户名和密码: 设置方法:tools- ...
- PHP_EOL DIRECTORY_SEPARATOR
换行符 PHP_EOL unix系列用 \n windows系列用 \r\n mac用 \r PHP中可以用PHP_EOL来替代,以提高代码的源代码级可移植性 路径上的斜杠 DIRECTORY_ ...
- wxPython 入门开发示例
1.背景资料 wxPython API:https://www.wxpython.org/Phoenix/docs/html/ 2.入门示例 wxPython最重要的两个概念:App与Frame,其中 ...