最近微信小程序很火,很喜欢那种轻应用,用完就走的理念。于是,下载好微信开发者工具,学习一下官方demo。
体验下来,有类似react和vue的感觉,dom类似react那种组件的,data-binding和vue类似。
1 注册
到微信公众平台申请账号,https://mp.weixin.qq.com/,并且绑定管理员账户方便上机调试。
下载微信开发者工具,登录管理员微信账户。
2 初始
创建项目并初始化,输入第一步生成的AppID。
3 目录结构
其中,.js后缀的是脚本文件,.json后缀的文件是配置文件,.wxss后缀的是样式表文件。微信小程序会读取这些文件,并生成小程序实例。
4 全局配置 app.json
app.json决定页面文件的路径、窗口的title、底部tab的表现、网络超时时间、debug模式等,
下面是一个包含了所有配置项的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
}
5 创建页面
每个页面包含4个文件 **.js、**.wxml、**.wxss、**.json
index.js
//index.js
//获取应用实例
var app = getApp()
Page({
data: {
motto: 'Hello World',
userInfo: {}
},
//事件处理函数
bindViewTap: function() {
wx.navigateTo({
url: '../logs/logs'
})
},
onLoad: function () {
console.log('onLoad')
var that = this
//调用应用实例的方法获取全局数据
app.getUserInfo(function(userInfo){
//更新数据
that.setData({
userInfo:userInfo
})
})
}
})
getApp函数用来获取应用实例
page函数用来注册一个页面,其指定页面的初始数据、生命周期函数、事件处理函数和自己定义的函数,参数是一个对象。这里非常类似vue的。
index.wxss是页面的样式表
其中定义的规则会覆盖掉app.wxss中的样式规则
index.json是页面的配置文件
当有页面的配置文件时,配置项在该页面会覆盖 app.json 的 window 中相同的配置项。如果没有指定的页面配置文件,则在该页面直接使用 app.json 中的默认配置。
6 数据绑定
logs页面的结构
<!--logs.wxml-->
<view class="container log-list">
<block wx:for="{{logs}}" wx:for-item="log">
<text class="log-item">{{index + }}. {{log}}</text>
</block>
</view>
在block标签上使用wx:for来遍历logs数组,和vue的v-for一样,自定义指令。
//logs.js
var util = require('../../utils/util.js')
Page({
data: {
logs: []
},
onLoad: function () {
this.setData({
logs: (wx.getStorageSync('logs') || []).map(function (log) {
return util.formatTime(new Date(log))
})
})
}
})
7 路由跳转
index.html页面的view标签的bindtap指令,绑定了bindViewTap函数,
<!--index.wxml-->
<view class="container">
<view bindtap="bindViewTap" class="userinfo">
<image class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image>
<text class="userinfo-nickname">{{userInfo.nickName}}</text>
</view>
<view class="usermotto">
<text class="user-motto">{{motto}}</text>
</view>
</view>
页面跳转函数 wx.navigateTo()
bindViewTap: function() {
wx.navigateTo({
url: '../logs/logs'
})
}
8 调试
在调试栏目下面,在pc上面调试。
或者在项目栏目下面,点击预览,使用手机扫码预览。