前言 更好的閱讀體驗請:我的微信小程式入門踩坑之旅 小程式出來也有一段日子了,剛出來時也留意了一下。不過趕上生病,加上公司里也有別的事,主要是自己犯懶,就一直沒做。這星期一,趕緊趁著這股熱乎勁,也不是很忙,終於磨磨唧唧的寫了個小demo,(當然還有好多介面沒有使用)。 預計閱讀時間:5min 正文 ...
前言
更好的閱讀體驗請:我的微信小程式入門踩坑之旅
小程式出來也有一段日子了,剛出來時也留意了一下。不過趕上生病,加上公司里也有別的事,主要是自己犯懶,就一直沒做。這星期一,趕緊趁著這股熱乎勁,也不是很忙,終於磨磨唧唧的寫了個小demo,(當然還有好多介面沒有使用)。
預計閱讀時間:5min
正文
介紹
小程式的框架,挺像Vue的。
wxml
<view> Hello {{name}}! </view> <button bindtap="changeName"> Click me! </button>
js部分
// This is our App Service. // This is our data. var helloData = { name: 'WeChat' } // Register a Page. Page({ data: helloData, changeName: function(e) { // sent data change to view this.setData({ name: 'MINA' }) } })
開發者通過框架將邏輯層數據中的 name 與視圖層的 name 進行了綁定,所以在頁面一打開的時候會顯示 Hello WeChat!
當點擊按鈕的時候,視圖層會發送 changeName 的事件給邏輯層,邏輯層找到對應的事件處理函數
邏輯層執行了 setData 的操作,將 name 從 WeChat 變為 MINA,因為該數據和視圖層已經綁定了,從而視圖層會自動改變為 Hello MINA!
工具: 微信 web 開發者工具
我一般在這裡只預覽效果用。
app.json
app.json文件來對微信小程式進行全局配置,決定頁面文件的路徑、視窗表現、設置網路超時時間、設置多 tab 等。
改變pages里配置,會更改啟動程式時的主頁面。
window是設置頁面的視窗表現,包括狀態欄,導航欄顏色 等等。
tarbar是底部tab欄的表現。
官方還有 networkTimeout和 debug選項,在這裡沒有配置。
networkTimeout可以設置各種網路請求的超時時間。
{ "pages": [ "pages/index/other", "pages/other/index", "pages/logs/logs", "pages/login/login", "pages/douban/douban", "pages/douban/user", "pages/other/comment" ], "window": { "backgroundTextStyle": "light", "navigationBarBackgroundColor": "#3CB371", "navigationBarTitleText": "Ed Glayxe", "navigationBarTextStyle": "light", "backgroundColor": "#3CB371" }, "tabBar": { "list": [{ "pagePath": "pages/index/index", "text": "我的", "iconPath": "images/tabList/my_a.png", "selectedIconPath": "images/tabList/my_b.png" }, { "pagePath": "pages/logs/logs", "text": "日誌", "iconPath": "images/tabList/log_a.png", "selectedIconPath": "images/tabList/log_b.png" }, { "pagePath": "pages/other/other", "text": "段子", "iconPath": "images/tabList/joke_a.png", "selectedIconPath": "images/tabList/joke_b.png" }, { "pagePath": "pages/login/login", "text": "登錄", "iconPath": "images/tabList/Login_a.png", "selectedIconPath": "images/tabList/Login_b.png" }, { "pagePath": "pages/douban/douban", "text": "用戶列表", "iconPath": "images/tabList/user_a.png", "selectedIconPath": "images/tabList/user_b.png" }] } }
頁面文件
app.js、app.json、app.wxss這三個文件是必不可少的文件。.js尾碼的是腳本文件,.json尾碼的文件是配置文件,.wxss尾碼的是樣式表文件。微信小程式會讀取這些文件,並生成小程式實例。這些都是公共文件。
在我的wxss里引入了weui的wxss 有的頁面使用了它的UI。
Pages 裡面是對應的頁面。每個對應的頁面里都有 相應的js wxml wxss文件。對文件進行配置。
在common文件夾了 寫了一個評論template 嘗試了一下引入模板。
在utils里封裝了一下內部的方法。
問題
在小程式里支持flex佈局,還是挺不錯的。
我有時佈局的時候都給寫個html文件,在瀏覽器里看看樣式。然後照搬到微信小程式里。但是我寫的頁面並不複雜。並不能完全的發現更多的不同。
在小程式里試圖層為view ,但它並不像div一樣,view 和text在一起會重疊。我覺得相當於 div和span。
還有一些CSS樣式並不支持。
我記得昨天有個東西我找了好久,就是
“enablePullDownRefresh”: true。允許用戶下拉。
一開始我以為這是自己寫的。這是配置在json文件里。官方的文件幾乎沒怎麼看。。然後就尷尬了。
var util = require("../../utils/util.js"); var app = getApp(); Page({ data: { textDataList: [], tempid: 0, lastid: 0 }, onLoad: function() { util.alertLoading('數據載入中', 2000); this.loadData(); }, refreshData: function() { util.alertLoading('刷新中', 2000); this.loadData(); }, loadData: function() { var that = this; var url = 'http://api.budejie.com/api/api_open.php'; var requireData = { a: 'list', c: 'data', type: '29' }; util.request(url, requireData, function(res) { var newData = res.data; that.setData({ textDataList: newData.list, tempid: newData.list[0].id }) console.log(that.data.tempid); }) }, onReachBottom: function() { util.alertLoading("載入中!", 2000); console.log("載入這個沒做 = =!"); }, onPullDownRefresh: function() { util.alertLoading("刷新中!", 1000); var that = this; var url = 'http://api.budejie.com/api/api_open.php'; var requireData = { a: 'list', c: 'data', type: '29' }; util.request(url, requireData, function(res) { var newData = res.data; that.setData({ textDataList: newData.list, lastid: newData.list[0].id }) console.log(that.data.lastid); }); if (this.data.lastid === this.data.tempid) { util.alertSuccess("已經是最新了", 1000); } } })
快下班了,其實寫之前我想寫的更詳細一點,但更多的介紹我想沒有比官方更清楚的。
我覺得最好的學習方式就是擼一遍代碼,比看10個demo有用的多。
時間倉促,頁面很簡單。也希望把你的demo分享給我互相學習。感謝你的閱讀,
Bye。
項目地址: https://github.com/miloers/WxSmall