前言:
前一章简述了微信小程序的注册,既然注册了,那么肯定要开发微信小程序了。
俗话说的好:工欲善其事必先利其器 既然有了小程序开发,微信也发布了一款自己研发的小程序开发工具
名为:微信Web开发者工具
下载地址:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html
这是官方的开发工具,集合了开发,预览,发布为一体的开发工具,目前第三方开发工具还没有较好的,最好还是用微信自己开发的,毕竟亲儿子。
下载安装之后,直接打开软件进入首页:
在上图中有一个创建quick start项目,这就是一个简单的DEMO 基本功能包括登陆 获取用户信息,信息缓存 模块化(Utils.js)事件绑定等等,后面我们会拿出来单独的讲解。
我们需要注意APPID 没有注册开发者是获取不到APPID的,点击无AppID 可以使用大部分功能,无法预览 无法上传等功能
注册了开发者的用户 需要登陆到小程序官网 下图的位置获取APPID 。
点击添加项目之后 我们就进入了quick Start项目中 我们先来看看项目的目录结构如下:
我们可以看到最上面有一个pages目录,其实这个目录里面包括了小程序所有的界面,包含界面布局 界面逻辑 界面样式 :
每个页面信息都会包括3个文件,json文件不是必须的 一般情况下我们只需要用全局配置的 app.json文件配置就可以了。
后面我们会有一个章节来具体介绍这四个文件基本配置与基本使用方式:
例如index文件夹:
index.js :主要负责本页面的业务逻辑,包括生命周期,事件的绑定处理,数据的初始化等等。
index.wxml:主要负责本页面的界面展示 以及事件的绑定等等。
index.wxss:主要负责页面的样式,与wxml文件一起使用,优化wxml页面。
index.json:主要是负责本界面的基本配置,主要配置的信息只有window 例如 navigationBarTitleText 设置页面的标题栏名称 debug 是都支持debug模式等等。
在图中还有一个utils的文件夹:可以看出utils和pages文件是并列的,所以他就不代表页面的信息了,里面只有一个js文件,
这个js文件其实就是把代码模块化(后面会介绍)了,这里面是将日期的转换封装好了,直接引入使用就可以了。
最后剩下一系列app的文件,app.js app.wxss app.json代表的信息和上面的pages里面的页面文件夹中的其实差不多,
只是pages里面的代表的仅仅是某个界面的配置,而app的代表的是这个项目的配置。
这是一个简单的js文件: 官方地址:https://mp.weixin.qq.com/debug/wxadoc/dev/framework/app-service/app.html
App({
onLaunch:function(){
// Do something initial when launch.
},
onShow:function(){
// Do something when show.
},
onHide:function(){
// Do something when hide.
},
onError:function(msg){
console.log(msg)
},
globalData:'I am global data'
})
App()函数用来注册一个小程序。接受一个 object 参数,其指定小程序的生命周期函数等。
包括了小程序的基本生命周期:
属性类型描述触发时机
onLaunchFunction生命周期函数--监听小程序初始化当小程序初始化完成时,会触发 onLaunch(全局只触发一次)
onShowFunction生命周期函数--监听小程序显示当小程序启动,或从后台进入前台显示,会触发 onShow
onHideFunction生命周期函数--监听小程序隐藏当小程序从前台进入后台,会触发 onHide
onErrorFunction错误监听函数当小程序发生脚本错误,或者 api 调用失败时,会触发 onError 并带上错误信息
其他Any
开发者可以添加任意的函数或数据到 Object 参数中,用this可以访问
前台、后台定义:当用户点击了左上角的退出或者是手机HOME键离开小程序,小程序并没有被销毁,而是在后台运行着,单再次进只有入微信或者打开小程序的时候,
小程序就会从后台恢复到前台。只有当小程序在后台一段事件,或者系统资源占用太高才会被真正的销毁。
getApp()
我们提供了全局的getApp()函数,可以获取到小程序实例,一般情况下,大部分时候都是用来保存登陆之后的用户信息的。
// other.js
varappInstance = getApp()
console.log(appInstance.globalData)// I am global data
注意:
App()必须在app.js中注册,且不能注册多个。
不要在定义于App()内的函数中调用getApp(),使用this就可以拿到 app 实例。
不要在 onLaunch 的时候调用getCurrentPage(),此时 page 还没有生成。
通过getApp()获取实例之后,不要私自调用生命周期函数。
小程序的全局配置文件 app.json 官方地址:https://mp.weixin.qq.com/debug/wxadoc/dev/framework/config.html
我们使用app.json文件来对微信小程序进行全局配置,决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。
以下是一个包含了所有配置选项的简单配置app.json:
{
"pages": [
"pages/index/index",
"pages/logs/index"
],
"window": {
"navigationBarTitleText":"Demo"
},
"tabBar": {
"list": [{
"pagePath":"pages/index/index",
"text":"首页"
}, {
"pagePath":"pages/logs/logs",
"text":"日志"
}]
},
"networkTimeout": {
"request":10000,
"downloadFile":10000
},
"debug":true
}
pages
接受一个数组,每一项都是字符串,来指定小程序由哪些页面组成。每一项代表对应页面的【路径+文件名】信息,数组的第一项代表小程序的初始页面。小程序中新增/减少页面,都需要对 pages 数组进行修改。
文件名不需要写文件后缀,因为框架会自动去寻找路径.json,.js,.wxml,.wxss的四个文件进行整合。
这里有个小细节,我们只需要在pages中添加需要创建的页面:
例如如果我们想添加一个login页面,我们不用去创建login文件,login.js login.wxss,login.wxml,我们只需要在Pages中加上“pages/login/login”
开发工具会自动帮我们创建文件夹和里面的基本配置文件:
我们只需要在 app.json 中写
{
"pages":[
"pages/index/index"
"pages/logs/logs"
]
}
window
用于设置小程序的状态栏、导航条、标题、窗口背景色。
属性类型默认值描述
navigationBarBackgroundColorHexColor#000000导航栏背景颜色,如"#000000"
navigationBarTextStyleStringwhite导航栏标题颜色,仅支持 black/white
navigationBarTitleTextString
导航栏标题文字内容
backgroundColorHexColor#ffffff窗口的背景色
backgroundTextStyleStringdark下拉背景字体、loading 图的样式,仅支持 dark/light
enablePullDownRefreshBooleanfalse是否开启下拉刷新,详见页面相关事件处理函数。
注:HexColor(十六进制颜色值),如"#ff00ff"
如 app.json :
{
"window":{
"navigationBarBackgroundColor":"#ffffff",
"navigationBarTextStyle":"black",
"navigationBarTitleText":"微信接口功能演示",
"backgroundColor":"#eeeeee",
"backgroundTextStyle":"light"
}
}
tabBar
如果我们的小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),那么我们可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面。
Tip:通过页面跳转(wx.navigateTo)或者页面重定向(wx.redirectTo)所到达的页面,即使它是定义在 tabBar 配置中的页面,也不会显示底部的 tab 栏。
tabBar 是一个数组,只能配置最少2个、最多5个 tab,tab 按数组的顺序排序。
属性说明:
属性类型必填默认值描述
colorHexColor是
tab 上的文字默认颜色
selectedColorHexColor是
tab 上的文字选中时的颜色
backgroundColorHexColor是
tab 的背景色
borderStyleString否blacktabbar上边框的颜色, 仅支持 black/white
listArray是
tab 的列表,详见 list 属性说明,最少2个、最多5个 tab
positionString否bottom可选值 bottom、top
其中 list 接受一个数组,数组中的每个项都是一个对象,其属性值如下:
属性类型必填说明
pagePathString是页面路径,必须在 pages 中先定义
textString是tab 上按钮文字
iconPathString是图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px
selectedIconPathString是选中时的图片路径,icon 大小限制为40kb,建议尺寸为 81px * 81px
networkTimeout
可以设置各种网络请求的超时时间。
属性说明:
属性类型必填说明
requestNumber否wx.request的超时时间,单位毫秒,默认为:60000
connectSocketNumber否wx.connectSocket的超时时间,单位毫秒,默认为:60000
uploadFileNumber否wx.uploadFile的超时时间,单位毫秒,默认为:60000
downloadFileNumber否wx.downloadFile的超时时间,单位毫秒,默认为:60000
debug
可以在开发者工具中开启 debug 模式,在开发者工具的控制台面板,调试信息以 info 的形式给出,其信息有Page的注册,页面路由,数据更新,事件触发。 可以帮助开发者快速定位一些常见的问题。
page.json
每一个小程序页面也可以使用.json文件来对本页面的窗口表现进行配置。 页面的配置比app.json全局配置简单得多,只是设置 app.json 中的 window 配置项的内容,页面中配置项会覆盖 app.json 的 window 中相同的配置项。
页面的.json只能设置window相关的配置项,以决定本页面的窗口表现,所以无需写window这个键,如:
属性类型默认值描述
navigationBarBackgroundColorHexColor#000000导航栏背景颜色,如"#000000"
navigationBarTextStyleStringwhite导航栏标题颜色,仅支持 black/white
navigationBarTitleTextString
导航栏标题文字内容
backgroundColorHexColor#ffffff窗口的背景色
backgroundTextStyleStringdark下拉背景字体、loading 图的样式,仅支持 dark/light
enablePullDownRefreshBooleanfalse是否开启下拉刷新,详见页面相关事件处理函数。
disableScrollBooleanfalse设置为 true 则页面整体不能上下滚动;只在 page.json 中有效,无法在 app.json 中设置该项
{
"navigationBarBackgroundColor":"#ffffff",
"navigationBarTextStyle":"black",
"navigationBarTitleText":"微信接口功能演示",
"backgroundColor":"#eeeeee",
"backgroundTextStyle":"light"
}