00.一个小程序页面由四个文件组成,分别是:
xxx
xxx.js 页面逻辑
xxx.json 页面配置
xxx.wxml 页面结构
xxx.wxss 页面样式
01.小程序框架组成
在小程序中 ,通过App()来注册一个小程序 ,通过Page()来注册一个页面
1.逻辑层
1.注册小程序
2.注册页面
3.页面生命周期
4.页面路由
5.模块化
6.API
2.视图层
1.wxml
2.wxss
3.wxs
wxs是微信小程序自身的脚本语言,用来过滤和计算。wxs可以通过文件可模块标签来定义,文件需要.wxs后缀文件
wxs是专门用于wxml页面的,如果你有在页面中使用js脚本的需求可以使用,但是wxs是不能被其它js文件引用的
实际开发应该根据情况,选择使用js或wxs,但本人的绝大部分开发都是用js中完成的
## 示例1:小程序的生命周期
02.注册小程序
每个小程序都需要在 app.js 中调用 App 方法注册小程序实例,绑定生命周期回调函数、
错误监听和页面不存在监听函数等
1.创建App实例,小程序生命周期函数
// app.js
App({
onLaunch (options) {//监听小程序初始化 当小程序初始化完成时,会触发 onLaunch(全局只触发一次)
// Do something initial when launch.
},
onShow (options) {//监听小程序显示 当小程序启动,或从后台进入前台显示,会触发 onShow
// Do something when show.
},
onHide () {//监听小程序隐藏 当小程序从前台进入后台,会触发 onHide
// Do something when hide.
},
onError (msg) {//错误监听函数 当小程序发生脚本错误,或者 api 调用失败时,会触发 onError 并带上错误信息
console.log(msg)
},
globalData: 'I am global data'
})
注1:与SPA项目的比较
1.相当于SPA项目中的main.js中定义全局Vue对象,
2.onLaunch/onShow/onHide/onError就相当于钩子函数
注2:其他开发者可以添加任意的函数或数据到 Object 参数中,用 this 可以访问
2.整个小程序只有一个 App 实例,是全部页面共享的。开发者可以通过 getApp 方法
获取到全局唯一的 App 实例,获取App上的数据或调用开发者注册在 App 上的函数。
// xxx.js
const appInstance = getApp()
console.log(appInstance.globalData) // I am global data
## 示例2:数据绑定/生命周期/数据继承
03.注册页面
对于小程序中的每个页面,都需要在页面对应的 js 文件中进行注册,指定页面的初始数据、生命周期回调、事件处理函数等
简单的页面可以使用Page(Object object)构造器进行构造。
Page(Object object)构造器作用:
注册小程序中的一个页面。接受一个 Object 类型参数,其指定页面的初始数据、生命周期回调、事件处理函数等
Page({
data: {//页面第一次渲染使用的初始数据
text: "This is page data."
},
onLoad: function (options) {//监听页面加载
console.log("page ---onLoad---");
},
onReady: function () {//监听页面初次渲染完成
console.log("page ---onReady---");
},
onShow: function () {//监听页面显示
console.log("page ---onShow---");
},<