编写代码
创建小程序实例
在开发人员工具的左侧导航中单击“编辑”,我们可以看到该项目已被初始化并包含一些简单的代码文件。最关键和必不可少的是app.js,app.json和app.wxss。其中.js后缀是脚本文件,.json后缀是配置文件,.wxss后缀是样式表文件。 微信小程序将读取这些文件并生成小程序个实例。
下面我们简要了解这三个文件的功能,这方便从头开始修改和开发我们自己的微信小程序。
。app.js是小程序的脚本代码。我们可以监视和处理小程序的生命周期函数,并在此文件中声明全局变量。调用框架提供的丰富API,例如本示例中的同步存储和本地数据的同步读取。有关更多可用的API,请参阅API文档
//app.jsApp({ 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.json是整个小程序的全局配置。在此文件中,我们可以配置组成小程序的页面,配置小程序的窗口背景色,配置导航栏样式以及配置默认标题。请注意,没有注释可以添加到此文件。有关更多可配置项,请参阅配置详细信息
{ "pages":[ "pages/index/index", "pages/logs/logs" ], "window":{ "backgroundTextStyle":"light", "navigationBarBackgroundColor": "#fff", "navigationBarTitleText": "WeChat", "navigationBarTextStyle":"black" }}
app.wxss是整个小程序的公共样式表。我们可以直接在页面组件的class属性上使用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.json的页面中,并且页面的第一页是小程序的主页。
每个小程序页面由四个不同的后缀文件组成,它们在同一路径下具有相同的名称,例如index.js,index.wxml,index.wxss,index.json。具有.js后缀的文件是脚本文件,具有.json后缀的文件是配置文件,.wxss后缀的文件是样式表文件,具有.wxml后缀的文件是页面结构文件。
index.wxml是页面的结构文件:
{{userInfo.nickName}} {{motto}}
在此示例中,用于构建页面结构,绑定数据和交互式处理功能。
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 }) }) }}) index.wxss 是页面的样式表:/**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;}
不需要页面的样式表。当存在页面样式表时,页面样式表中的样式规则将与app.wxss中的样式规则重叠。如果不指定页面的样式表,则还可以直接使用页面的结构文件中app.wxss中指定的样式规则。
index.json是页面的配置文件:
不需要页面的配置文件。当页面有配置文件时,页面上的配置项将覆盖app.json窗口中的相同配置项。如果没有指定的页面配置文件,则app.json中的默认配置将直接在此页面上使用。
日志的页面结构
{{index + 1}}. {{log}}
日志页面使用控制标签来组织代码,使用wx:for-items绑定日志数据,并循环日志数据以扩展节点。
//logs.jsvar 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)) }) }) }})
结果如下:
4.移动预览
在开发人员工具的左侧菜单栏中选择“项目”,单击“预览”,然后在扫描代码后即可在微信客户端中体验它。