最近微信小程序吵得很火 也決定來看看這個小程序
說什么小程序 其實(shí)就是個webapp而已
先看看官網(wǎng)是個什么鬼
打開一看 項(xiàng)目結(jié)構(gòu)
quickstart
- pages (頁面文件)
- utils (工具函數(shù))
- app.js (入口文件)
- app.json (管理注冊文件 和package.json 類似)
- app.wxss (樣式文件)
- 先看app.js 入口文件
作為程序的入口 暴露了一個全局對象App
其中 又有2個方法 和一個對象
onLaunch getUserInfo globalData
//app.js
App({
onLaunch: function () {
//調(diào)用API從本地緩存中獲取數(shù)據(jù)
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{
//調(diào)用登錄接口
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"
}
}
- pages index.js 看每個頁面 一個Page對象 這尼瑪不是和vue 差不多嗎
和vue template 就是 dom 類似 自定義標(biāo)簽
<!--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>
這就是 script 和 vue實(shí)例差不多
//index.js
//獲取應(yīng)用實(shí)例
var app = getApp()
Page({
data: {
motto: 'Hello World',
userInfo: {}
},
//事件處理函數(shù)
bindViewTap: function() {
wx.navigateTo({
url: '../logs/logs'
})
},
onLoad: function () {
console.log('onLoad')
var that = this
//調(diào)用應(yīng)用實(shí)例的方法獲取全局?jǐn)?shù)據(jù)
app.getUserInfo(function(userInfo){
//更新數(shù)據(jù)
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;
}
看完了 其實(shí)和vue項(xiàng)目差不多 不過是騰訊自己封裝而已
所示小程序 和純粹的webapp比的話
微信內(nèi)部 暴露了 wx 對象 采用wx 對應(yīng) 可以大大拓展下web的能力而已
但還是不能超過原生的邊界