app.json
{
"pages":[ // pages字段用于描述小程序所有页面路径,注意,必须与pages目录下的文件夹对应,直接修改app.json文件,会自动添加目录,删除不会自动清理,需要手动删除
"pages/index/index", // 注意:写在第一位的就是首页
"pages/logs/logs"
],
"window":{ // 窗口界面
"backgroundTextStyle":"light", // 背景色,有dark和light
"navigationBarBackgroundColor": "#fff", // 导航背景色,可定义任意颜色,#fff为缩写,使用6位的即可
"navigationBarTitleText": "天气预报", // 导航标题
"navigationBarTextStyle":"black" // 导航文本颜色,black,white
},
"style": "v2", // 微信客户端 7.0 开始,UI 界面进行了大改版。小程序也进行了基础组件的样式升级。app.json 中配置 "style": "v2"可表明启用新版的组件样式。
"sitemapLocation": "sitemap.json", // 指明 sitemap.json 的位置;默认为 'sitemap.json' 即在 app.json 同级目录下名字的 sitemap.json 文件
"permission": {
"scope.userLocation": { // 获取地理位置
"desc": "定位以获取当前位置天气信息"
}
}
}
sitemap.json
小程序根目录下的 sitemap.json
文件用于配置小程序及其页面是否允许被微信索引,文件内容为一个 JSON 对象,如果没有 sitemap.json
,则默认为所有页面都允许被索引;
附录1:permission的scope权限类型
scope | 对应接口 | 描述 |
---|---|---|
scope.userLocation | wx.getLocation, wx.chooseLocation, wx.startLocationUpdate | 地理位置 |
scope.userLocationBackground | wx.startLocationUpdateBackground | 后台定位 |
scope.record | wx.startRecord, wx.joinVoIPChat, RecorderManager.start | 麦克风 |
scope.camera | camera组件, wx.createVKSession | 摄像头 |
scope.bluetooth | wx.openBluetoothAdapter, wx.createBLEPeripheralServer | 蓝牙 |
scope.writePhotosAlbum | wx.saveImageToPhotosAlbum, wx.saveVideoToPhotosAlbum | 添加到相册 |
scope.addPhoneContact | wx.wx.addPhoneContact | 添加到联系人 |
scope.addPhoneCalendar | wx.addPhoneRepeatCalendar, wx.addPhoneCalendar | 添加到日历 |
scope.werun | wx.getWeRunData | 微信运动步数 |
scope.address | wx.chooseAddress | 通讯地址(已取消授权,可以直接调用对应接口) |
scope.invoiceTitle | wx.chooseInvoiceTitle | 发票抬头(已取消授权,可以直接调用对应接口) |
scope.invoice | wx.chooseInvoice | 获取发票(已取消授权,可以直接调用对应接口) |
scope.userInfo | wx.getUserInfo | 用户信息(小程序已回收,请使用头像昵称填写,小游戏可继续调用) |
app.js
App() 必须在 app.js
中调用,必须调用且只能调用一次。不然会出现无法预期的后果
// app.js
App({
onLaunch() { // 小程序初始化完成时触发,全局只触发一次。
// 展示本地存储能力
const logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs)
// 登录
wx.login({
success: res => {
// 发送 res.code 到后台换取 openId, sessionKey, unionId
}
})
},
globalData: {
userInfo: null
}
})
函数类型
属性 | 类型 | 默认值 | 必填 | 说明 | 最低版本 |
---|---|---|---|---|---|
onLaunch | function | 否 | 生命周期回调——监听小程序初始化。 | ||
onShow | function | 否 | 生命周期回调——监听小程序启动或切前台。 | ||
onHide | function | 否 | 生命周期回调——监听小程序切后台。 | ||
onError | function | 否 | 错误监听函数。 | ||
onPageNotFound | function | 否 | 页面不存在监听函数。 | 1.9.90 | |
onUnhandledRejection | function | 否 | 未处理的 Promise 拒绝事件监听函数。 | 2.10.0 | |
onThemeChange | function | 否 | 监听系统主题变化 | 2.11.0 | |
其他 | any | 否 | 开发者可以添加任意的函数或数据变量到 Object 参数中,用 this 可以访问 |
globalData全局变量的使用
// 定义:
globalData: {
myname: "qiyibaba"
}
// 获取值:
// 1.首先定义变量
var app = getApp()
// 2.获取值
data: {
motto: app.globalData.myname
}
系统默认提供首页index.js
const app = getApp()
Page({ // 注册小程序中的一个页面。接受一个 `Object` 类型参数,其指定页面的初始数据、生命周期回调、事件处理函数等
data: { // 页面的初始数据
motto: app.globalData.myname,
userInfo: {},
hasUserInfo: false,
canIUse: wx.canIUse('button.open-type.getUserInfo'),
canIUseGetUserProfile: false,
canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName') // 如需尝试获取用户信息可改为false
},
// 事件处理函数
bindViewTap() {
wx.navigateTo({
url: '../logs/logs'
})
},
onLoad() {
if (wx.getUserProfile) {
this.setData({
canIUseGetUserProfile: true
})
}
},
getUserProfile(e) {
// 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
wx.getUserProfile({
desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
success: (res) => {
console.log(res)
this.setData({
userInfo: res.userInfo,
hasUserInfo: true
})
}
})
},
getUserInfo(e) {
// 不推荐使用getUserInfo获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息
console.log(e)
this.setData({
userInfo: e.detail.userInfo,
hasUserInfo: true
})
}
})