IDE结构

微信小程序学习笔记(2)----HelloWorld分析_分析

上图是微信开发工具自动生成的一个HelloWorld,微信小程序的开发、调试都在这个工具中完成,相比于eclipse、Idea之类的Idea,小程序显示功能比较少,没多少菜单。

编辑

编辑菜单中是存放代码的,可以创建文件及文件夹、编辑代码,还有代码提示功能虽然不是很强大。值得注意的是修改代码后,文件上会有一个绿色小点,保存后会消失,修改代码需要编译后才能生效。

调试

微信小程序学习笔记(2)----HelloWorld分析_微信_02


调试菜单主要是查看代码运行效果,微信小程序应该只能在微信和这个开发工具中运行了。这个调试窗口功能和chrome的调试窗有点区别,Console、Soruce、Network都和chrome的大体一样,

Storage用于显示当前项目的使用 wx.setStorage 或者 wx.setStorageSync 后的数据存储情况。

Appdata 用于显示当前项目当前时刻 appdata 具体数据,实时地反馈项目数据情况,可以在此处编辑数据,并及时地反馈到界面上。

Wxml这个和Chrome的Elemnets功能比较相似,可以看到页面的HTML结果和CSS样式,Chrome中的事件、盒子模型和其它都是没有的

项目

微信小程序学习笔记(2)----HelloWorld分析_微信_03


这个要是用户发布小程序和真机预览用的,可惜账号没有权限,无法真实体验一下

代码结构

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下的一样的结果,只不过是显示日志文件,可以删除的