一、小程序应用场景
小程序主打的是比APP更轻量的形态,简单的开发,却接近app的体验,无需下载,扫码打开。一些高频的金融类、电商类、教育类等其实是不适合接入小程序的。这些应用服务对功能的要求都很重,小程序难以承载。而且小程序不能像微信公众号一样被关注、群推送消息以及转发朋友圈,这也就意味着,它没有办法获取用户更多的信息,也不便于深度营销。
主打适合小程序的产品:
* 初创型企业的MVP产品
*开发和设计能力有限的产品
*功能轻、用完即走、非即时、可异步
*基于轻社交场景应用、跨平台使用
二、从操作 DOM 转为操作数据
微信开放的接口更为严谨,结构必须采用他提供给我们的组件,外部的框架和插件都不能在这里使用,让开发者完全脱离操作 DOM,开发思想转变很大。
生命周期:( 从index.js文件看)
1) 在首页的console 可以看出顺序是 App Launch-->App Show-->onload-->onShow-->onReady。
首先是整个 app 的启动与显示,app 的启动在 app.js 里面可以配置,其次再进入到各个页面的加载显示等等。
例如,App()函数用来注册一个小程序,接受一个Object参数,其指定小程序。
生命周期函数等。
App({
onLaunch: function() {
// Do something initial when launch.
},
onShow: function() {
// Do something when show.
},
onHide: function() {
// Do something when hide.
},
globalData: 'I am global data'
})
2)小程序的开发是基于微信提供的一套应用框架进行开发的。微信通过封装微信客户端提供的文件系统、网络通信、任务管理、数据安全等基础功能,对上层提供了一套完整的Javascript Api,使得开发者能够非常方便的使用到微信客户端提供的各种基础功能,快速构建一个应用。
框架提供了自己的视图层描述语言 WXML 和 WXSS,以及基于 JavaScript 的逻辑层框架,并在视图层与逻辑层之间通过**单向数据绑定**进行数据传输,使开发者更加聚焦于数据与逻辑上。
三、新建的项目各文件详解:
1) pages文件夹:是页面管理文件夹
下面一般可以自定义页面,如demo中的index欢迎页面。首页index页面包含几个文件:index.js,index.wxss,index.wxml,index.json
先来逐一介绍下这些文件是干嘛的。
index.js文件是以js结尾的文件,是页面的脚本文件,在这个文件中我们可以监听并处理页面的生命周期函数,获取小程序实例,声明并处理数据,响应页面交互事件等。是必须要的。
index.wxml文件是页面的结构文件(类似于H5的html标记文件)。是必须要的。
index.wxss文件是页面的样式表。非必要。当有页面样式表文件时候,页面样式表中的样式规则会层叠覆盖app.wxss文件中的样式规则。如果不指定页面的样式规则表,也可以在页面的结构文件中直接使用app.wxss中指定的样式规则。
index.json文件是页面的配置文件。非必要。当有页面的配置文件时候,配置项在该页面会覆盖app.json文件中的window中相同的配置项,如果没有指定配置文件,则在该页面直接使用app.json中的默认配置文件。
2) app.js文件是小程序的脚本代码。监听并处理小程序的生命周期函数,并声明全局变量,调用框架的API,同步存储和同步读取本地数据。
js代码中定义了一个App对象,该对象包含onLaunch, getUserInfo两个方法和globalData成员变量。
其中onLaunch方法会在程序启动时由框架来进行调用。在该方法中,程序通过微信提供的本地存储接口getStorgeSync()获取了一个logs变量,第一次获取时会返回空,这时将变量初始化为空数组。之后在数组头部添加一个格式化的时间字符串,之后将数组变量存储在本地。
getUserInfo方法需要调用者传递一个名为cb的参数,首先判断是否获取过用户信息,如果获取过并且cb是函数的话,就会调用cb函数并将globalData成员变量传递进去,否则将调用wx.login接口来获取用户信息。在调用wx.login时,传递了一个匿名函数进行调用成功后的逻辑处理,就是success后面的部分。可以看到这里只有函数定义而没有函数名称,因此除了作为回调函数外,也无法在其它地方调用该函数。
在回调函数中执行了that.globalData.userInfo = res.userInfo来保存用户信息,其中that变量由var that = this赋值,因此该变量指向app对象本身,所以才能成功保存用户信息。
我们可以看到that对象是getUserInfo方法栈上的变量,如果没有闭包技术,此处的匿名回调函数是不能直接使用that变量的,就需要将app对象传递给回调函数(全局变量或函数参数的方式),而在闭包技术的支持下,回调函数可以像使用函数内部变量一样来访问that变量。
globalData是成员变量,该成员包含userInfo变量,用来保存用户信息。
3)app.json文件是对整个小程序的全局配置。可以在该文件中配置小程序有哪些页面组成,配置小程序窗口背景,配置导航条样式,配置默认标题。(注意,不可添加注释)
4)app.wxss文件是小程序的公共样式表文件。我们可以在页面组件的class属性上直接使用app.wxss文件中声明的样式规则。 在index.wxss中设计组件位置和属性样式。