IDE结构
上图是微信开发工具自动生成的一个HelloWorld,微信小程序的开发、调试都在这个工具中完成,相比于eclipse、Idea之类的Idea,小程序显示功能比较少,没多少菜单。
编辑
编辑菜单中是存放代码的,可以创建文件及文件夹、编辑代码,还有代码提示功能虽然不是很强大。值得注意的是修改代码后,文件上会有一个绿色小点,保存后会消失,修改代码需要编译后才能生效。
调试
调试菜单主要是查看代码运行效果,微信小程序应该只能在微信和这个开发工具中运行了。这个调试窗口功能和chrome的调试窗有点区别,Console、Soruce、Network都和chrome的大体一样,
Storage用于显示当前项目的使用 wx.setStorage 或者 wx.setStorageSync 后的数据存储情况。
Appdata 用于显示当前项目当前时刻 appdata 具体数据,实时地反馈项目数据情况,可以在此处编辑数据,并及时地反馈到界面上。
Wxml这个和Chrome的Elemnets功能比较相似,可以看到页面的HTML结果和CSS样式,Chrome中的事件、盒子模型和其它都是没有的
项目
这个要是用户发布小程序和真机预览用的,可惜账号没有权限,无法真实体验一下
代码结构
app.wxss
/**app.wxss**/
.container {
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
padding: 200rpx 0;
box-sizing: border-box;
}
这个app.wxss可以看到是全局的css文件,在这个文件个定义的css样式,其它所有页面都可以使用
app.json
{
"pages":[
"pages/index/index",
"pages/logs/logs"
],
"window":{
"backgroundTextStyle":"light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "WeChat",
"navigationBarTextStyle":"black"
}
}
app.json是小程序的全局配置文件,这里的配置会传递给其它所有页面,具体有哪些配置,每个配置的作用可以阅读官方文档https://mp.weixin.qq.com/debug/wxadoc/dev/framework/config.html?t=1475052047016
app.js
//app.js
App({
onLaunch: function () {
//调用API从本地缓存中获取数据
var logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs)
},
getUserInfo:function(cb){
var that = this
if(this.globalData.userInfo){
typeof cb == "function" && cb(this.globalData.userInfo)
}else{
//调用登录接口
wx.login({
success: function () {
wx.getUserInfo({
success: function (res) {
that.globalData.userInfo = res.userInfo
typeof cb == "function" && cb(that.globalData.userInfo)
}
})
}
})
}
},
globalData:{
userInfo:null
}
})
app.js 可以看作是小程序的生命周期文件,具体说明参看官方文档
https://mp.weixin.qq.com/debug/wxadoc/dev/framework/app-service/app.html?t=1475052055990
utils/util.js
function formatTime(date) {
var year = date.getFullYear()
var month = date.getMonth() + 1
var day = date.getDate()
var hour = date.getHours()
var minute = date.getMinutes()
var second = date.getSeconds()
return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}
function formatNumber(n) {
n = n.toString()
return n[1] ? n : '0' + n
}
module.exports = {
formatTime: formatTime
}
util.js是自动生成的时间格式化工具在其它页面可以通过
var util = require('../../utils/util.js')
引用
index.wxml index.js index.wxss
<!--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>
/**index.wxss**/
.userinfo {
display: flex;
flex-direction: column;
align-items: center;
}
.userinfo-avatar {
width: 128rpx;
height: 128rpx;
margin: 20rpx;
border-radius: 50%;
}
.userinfo-nickname {
color: #aaa;
}
.usermotto {
margin-top: 200px;
}
//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
})
})
}
})
index.wxml可看作是一个页面的视图文件,可以看作是HTML文件
index.wxss 可以看作是页面的样式文件,可以看作是css文件
index.js 可以看到是页面的生命周期文件,主要是页面生命周期、事件回调、业务处理等
值得注意
index.wxss和index.js 在index.wxml中不需要手动导入,通过文件名匹配,所以在建立文件时应尽量按个规则来
logs
这个目录下的和index下的一样的结果,只不过是显示日志文件,可以删除的