微信小程序笔记<三>入口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/ 目录导入微信开发工具 这一 ...
随机推荐
- SmartGit 授权Non-Commerical
Window: %APPDATA%/syntevo/SmartGit/ 搜索settings.xml, 并且移除这个文件 重启
- InfluxDB 1.6文档
警告!此页面记录了不再积极开发的InfluxDB的早期版本.InfluxDB v1.7是InfluxDB的最新稳定版本. InfluxDB是一个时间序列数据库,旨在处理高写入和查询负载.它是TICK堆 ...
- Azure Application Gateway (5) Application Gateway SSL Offload配置
<Windows Azure Platform 系列文章目录> 之前有个客户提出了一个需求,他们的互联网访问的架构分为两种: 1.第一层是使用Azure Application Gatew ...
- Set ARITHABORT Option设置为ON
MSDN注释中提到,应该总是将Set ARITHABORT Option设置为ON,原因有四: 1,如果SSMS和application client的设置不同,那么会导致application cl ...
- <亲测>阿里云centos7 挂载数据盘配置
阿里云centos7 挂载数据盘配置 2018年07月17日 15:13:53 阅读数:235更多 个人分类: linux阿里云ECS数据盘挂载 查看磁盘情况 fdisk -l 其中/dev/v ...
- jQuery控制元素显示、隐藏、切换、滑动的方法
jQuery 隐藏和显示 通过 hide() 和 show() 两个函数,jQuery 支持对 HTML 元素的隐藏和显示: 实例 $("#hide").click(functio ...
- Python Selenium set Chrome Preference Download Location.
def set_chrome_pref(self): chromeOptions = webdriver.ChromeOptions() prefs = {"download.default ...
- 【springboot】之利用shell脚本优雅启动,关闭springboot服务
springbot开发api接口服务,生产环境中一般都是运行独立的jar,在部署过程中涉及到服务的优雅启动,关闭, springboot官方文档给出的有两种方式, 1.使用http shutdown ...
- 算法:整数与ip地址转换
直接上代码(不要直接拷贝,中间少了一行啊): #include <string> #include <iostream> using namespace std; ...
- go学习day2
值类型和应用类型 1.值类型:变量直接存储值,内存通常在栈中分配 基本数据类型int.float.bool.string以及数组和struct.如果在函数里面修改了,函数外不变 2.引用类型:变量存储 ...