1.开发前准备
- 开发微信小程序首先要注册一个账号([https://mp.weixin.qq.com/wxopen/waregister?action=step1](https://mp.weixin.qq.com/wxopen/waregister?action=step1 注册地址)。
注册完成之后登陆进管理后台,可以看到里面的一些功能设置。
-
开发一个小程序需要一个appId,这个appId在开发中的开发设置中可以找到。
- 然后开始下载微信的开发者工具,下载地址(https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
)下载完成后安装,打开开发者工具(需要微信扫描登陆),选择小程序,设置小程序的名称,项目目录,appid,也可以选择云开发,点击创建就生成了一个小程序项目。
2. 目录文件介绍
-
小程序的初始项目目录。
-
pages
是所有的页面组件目录,里面包含的每一个页面都有四个文件js
(页面逻辑代码),json
(页面属性配置),wxml
(html代码),wxss
(css样式)。 -
utils
是一个存放公共js
方法的目录。 -
app.js
是全局js
逻辑文件,在任何独立页面的js
文件都能访问app.js
里面方法。 - 在app.json中进行全局的配置,例如导航栏的文字颜色,背景颜色,标题,tabbar的设置,都通过app.json进行配置。
-
app.wxcss
全局的css
样式设置。
3.app.json常用配置
详细配置参考(https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html)
-
全局配置
-
pages
用来配置页面路径信息,不需要写后缀名
{
"pages": ["pages/index/index", "pages/logs/logs"]
}
-
window
用来配置小程序导航栏和状态栏窗口背景色等。
"window": {
"backgroundTextStyle": "light",//下拉 loading文字 的样式,light/dark
"navigationBarTextStyle":"white",//导航栏标题颜色,仅支持 black / white
"navigationBarBackgroundColor": "#000",//导航栏背景色支持16进制颜色
"navigationBarTitleText": "today",//导航栏标题内容
"backgroundColor":"#000000",//下拉loading背景色
"enablePullDownRefresh":true,//是否开启下拉刷新
"onReachBottomDistance":50,//下拉刷新的距离
"pageOrientation":"portrait"//屏幕旋转配置
},
-
tabBar
配置底部tab
导航栏
"tabBar":{
"color":"#333",//字体颜色
"selectedColor":"#3D74DD",//菜单选中字体颜色
"backgroundColor":"#ececec",//导航栏背景颜色
"borderStyle":"black",//border颜色只有black和white
"position":"bottom",//位置
"custom":false,//自定义tabBar默认false
"list":[//tab数组最少两个,最多5个
{
"pagePath":"pages/index/index",//跳转页面路径
"text":"home",//tab标题
"iconPath":"assets/images/home.png",//tab默认icon路径
"selectedIconPath":"assets/images/homed.png"//tab选中icon路径
},{
"pagePath":"pages/search/search",
"text":"search",
"iconPath":"assets/images/search.png",
"selectedIconPath":"assets/images/searched.png"
}
]
}
}
-
networkTimeout
各类网络请求超时时间默认是60000毫秒
"networkTimeout":{
"request":3000,//网络请求
"connectSocket":3000,//socket请求
"uploadFile":3000,//文件上传
"downloadFile":3000//文件下载
}
-
debug
开始debug模式方便用于调试,会将页面注册,页面路由数据更新打印出来。
"debug":true
-
usingComponents
声明自定义组件为全局自定义组件或者第三方组件。
{
"usingComponents": {
"van-button": "vant-weapp/button"
}
}
-
permission
小程序接口权限设置
详细参考(https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/authorize.html)
{
"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于小程序位置接口的效果展示" // 高速公路行驶持续后台定位
}
}
}
-
页面配置
- 每个单独的页面都会有四个文件
.wxml
,.wxss
,.json
,.js
,页面单独配置需要在json
文件中配置,和app.json
的区别就是一个是总的设置,一个是局部单独的设置。配置选项和app.json
全局配置一样。
4.页面生命周期函数
- 每个页面都会有一个生命的周期从加载显示到隐藏销毁一个完整的流程,这些生命周期都包含在
page({})
,里面,包括每个页面的data
(类似于vue
里面data
)也包含在`page({})里面。
新建的page页面在
js
文件中一定要加上page({})
否则会报错。
-
data
页面所有的动态数据绑定都来自于data
,类似于vue
的data
。 -
onLoad
,页面加载时触发,只触发一次,类似于vue
的created
。 -
onShow
页面显示时触发。 -
onReady
页面渲染完成时触发。类似于vue
的mounted
。 -
onHide
页面隐藏或者切换到后台是触发。 -
onUnload
页面卸载时触发,类似于vue
的destoyed
。
Page({
data:{
value:'today'
},
onLoad(){
console.log("初始化")
},
onReady(){
console.log("准备好了")
},
onShow(){
console.log('显示')
},
onHide(){
console.log("隐藏")
},
onUnload(){
console.log("页面卸载")
},
})
5.页面事件处理函数
- 页面处理函数,是用户在当前页面的行为触发的,例如下拉刷新,滑动,分享,旋转
-
onPullDownRefresh
监听用户下拉刷新函数,前提是需要在app.json
中开启下拉刷新。 -
onReachBottom
监听用户上拉触底事件。 -
onPageScroll
监听用户滑动页面事件。 -
onShareAppMessage
监听用户点击转发按钮 -
onResize
页面尺寸改变触发。 -
onTabltemTap
当前页面是tab
页时,点击tab
触发。
Page({
onPullDownRefresh(){
console.log("下拉刷新")
},
onReachBottom(){
console.log("触底")
},
onPageScroll(){
console.log("页面滚动")
},
onShareAppMessage(){
console.log("分享")
},
onResize(){
console.log("页面尺寸改变")
},
onTabltemTap(){
console.log("点击Tab")
}
})
6.组件事件处理函数
-
page
里面可以定义组件事件处理函数,通过bindtap
绑定在page
中定义的函数,点击的时候会触发。
<view bindtap="begin">点击</view>
Page({
data:{
value:"taoday"
},
begin(){
console.log(this.data.value)
}
})
7.小程序的生命周期
- 小程序的生命周期是在
app.js
文件中定义的,在app.js
中周期函数都包括在App({})
里面,这点是和页面周期函数有区别,app({})
只能在app.js
中调用,必须且只调用一次。 -
onLaunch
监听小程序初始化。 -
onShow
监听小程序启动或者切换到前台。 -
onHide
监听小程序切换到后台。 -
onError
监听错误函数。 -
onPageNotFound
监听页面不存在函数。
App({
onLaunch (options) {
// Do something initial when launch.
},
onShow (options) {
// Do something when show.
},
onHide () {
// Do something when hide.
},
onError (msg) {
console.log(msg)
},
})
8.小程序常用语法
- 小程序的语法和
vue
语法差不多,只是在局部会有一些差异,会vue
那小程序的语法理解就方便很多了。 - 数据绑定和
vue
一样,在page
的data
设置好,在组件内通过双花括号{{}}
包裹的形式调用,组件内使用data
属性也要加双花括号。 -
wx:if
条件渲染,类似于v-if
。 -
wx:for
列表渲染,类似于v-for
,只不过不需要在设置渲染的index
和item
,默认的就是index
,item
。也可以通过wx:for-index
来指定下标名称,wx:for-item
指定item名称,同样也可以嵌套渲染。wx:key
指定唯一标识符。
<view class="index-container">
<van-button type="primary" wx:for="{{array}}" wx:key="index">{{item.name}}</van-button>
<van-button wx:if="{{flag}}">{{flag}}</van-button>
</view>
Page({
data:{
value:'today',
flag:true,
array:[
{name:"1"},
{name:"1"},
{name:"1"}
]
}
})
9.使用第三方npm
包
- 以有赞的
vant-weap
ui框架为例,首先在小程序项目的根目录下载npm
包,然后npm init
,必须npm init
,否则组件库就不会初始化,在开发工具构建npm
包的时候会报错。
npm i vant-weapp -S --production
npm init
-
打开微信开发者工具,点击 工具 -> 构建 npm,并勾选 使用 npm 模块 选项,构建完成后,即可引入组件,构建完之后会出现一个文件夹。
在构建
npm
包的时候可能会有报错的情况,构建vant-weap
就出现了一个错误,
VM6419:5 ./miniprogram_npm/_vant-weapp@0.5.12@vant-weapp/action-sheet/index.wxml
../wxs/utils.wxs not found from ./miniprogram_npm/_vant-weapp@0.5.12@vant-weapp/action-sheet/index.wxml
> 1 | <wxs src="../wxs/utils.wxs" module="utils" />
| ^
2 |
3 | <van-popup
4 | show="{{ show }}"
解决方案就是把
miniprogram_npm/vant-weapp
里的组件文件夹都删除,之后再到https://github.com/youzan/vant-weapp下载一份vant
, 将dist
文件夹(vant-weapp-dev\vant-weapp-dev\dist)
中的文件复制到miniprogram_npm/vant-weapp
(即下载一份vant
,之后替换掉项目中的文件)。使用组件在
app.json
或者每个单独页面的json
文件配置。
{
"usingComponents": {
"van-button": "vant-weapp/button"
}
}
- 然后在页面使用就可以了
<van-button type="primary">按钮</van-button>