微信項(xiàng)目結(jié)構(gòu)
項(xiàng)目開發(fā)的目錄結(jié)構(gòu)疮装,微信已經(jīng)為開發(fā)者規(guī)范好了,結(jié)構(gòu)清楚明了鸳碧,很容易分辨和閱讀。
- 小程序的主體部分(程序的入口)
由3個文件組成灸姊,必須放在項(xiàng)目的根目錄,如下:
文件 | 必需 | 作用 |
---|---|---|
app.js | 是 | 小程序邏輯(生命周期函數(shù)..) |
app.json | 是 | 小程序公共配置 |
app.wxss | 否 | 小程序公共樣式表 |
- 一個小程序頁面由四個文件組成秉溉,分別是:
文件類型 | 必需 | 作用 |
---|---|---|
js | 是 | 頁面邏輯(頁面周期函數(shù)..) |
wxml | 是 | 頁面結(jié)構(gòu) |
json | 否 | 頁面配置 |
wxss | 否 | 頁面樣式表 |
注意:為了方便開發(fā)者減少配置項(xiàng)力惯,描述頁面的四個文件必須具有相同的路徑與文件名碗誉。
頁面賦值和刷新
它的頁面賦值、刷新跟RN差不多(數(shù)據(jù)推動)父晶,都是通過在js邏輯層通過一個函數(shù)去實(shí)現(xiàn)的哮缺。看代碼....
頁面事件處理
路由
- 怎么傳值給下一個頁面
1.通過跳轉(zhuǎn)url拼接?title=xxx&msg=xxx
onLoad: function (options) {
console.log(options.title);
}
2.跳轉(zhuǎn)頁面通過獲取page實(shí)例取值
onLoad: function (options) {
var pages = getCurrentPages(); // 獲取頁面棧
var currPage = pages[pages.length - 1]; // 當(dāng)前頁面
var prevPage = pages[pages.length - 2]; // 上一個頁面
console.log(prevPage.data.xxx);
}
3.把當(dāng)前頁面數(shù)據(jù)放入本地緩存( wx.setStorage(wx.setStorageSync)甲喝,下一個頁面再從緩存中取出(wx.getStorage(wx.getStorageSync))同時退出登錄時要清除緩存(wx.clearStorage(wx.clearStorageSync))尝苇。
- 怎么傳值修改上一個頁面或者堆棧中的頁面值
1.跳轉(zhuǎn)頁面前通過獲取page實(shí)例修改
xxxFunction: function () {
var pages = getCurrentPages(); // 獲取頁面棧
var currPage = pages[pages.length - 1]; // 當(dāng)前頁面
var prevPage = pages[pages.length - 2]; // 上一個頁面
prevPage.data.xxx;//只修改、添加值埠胖;
prevPage.setData({
xxx:xxxxx
});//同時刷新頁面糠溜;
wx.wx.navigateBack();//返回
}
2.也可以把當(dāng)前頁面數(shù)據(jù)放入本地緩存,上一個頁面再從緩存中取出直撤。
其他的像網(wǎng)絡(luò)API非竿、存儲API 等等可以去官方查看對應(yīng)文檔,有詳細(xì)的介紹谋竖。官方地址:https://developers.weixin.qq.com/miniprogram/dev/api/
下面講講小程序中的一些特殊設(shè)計點(diǎn)
為了讓開發(fā)者開發(fā)的項(xiàng)目更容易擴(kuò)展和迭代红柱、解耦、復(fù)用圈盔。微信小程序框架提供了很多能力豹芯,簡單介紹幾個。
模板功能
WXML提供模板(template)驱敲,可以在模板中定義代碼片段,然后在不同的地方調(diào)用宽闲。
其實(shí)有點(diǎn)像IOS中的宏定義功能众眨,一個占位符,編譯打包后占位符位置替換成具體UI標(biāo)簽
自定義組件
開發(fā)者可以將頁面內(nèi)的功能模塊抽象成自定義組件容诬,以便在不同的頁面中重復(fù)使用娩梨;也可以將復(fù)雜的頁面拆分成多個低耦合的模塊,有助于代碼維護(hù)览徒。自定義組件在使用時與基礎(chǔ)組件非常相似狈定。
WXS文件
WXS(WeiXin Script)是小程序的一套腳本語言,結(jié)合 WXML习蓬,可以構(gòu)建出頁面的結(jié)構(gòu)纽什。
注意
- wxs 不依賴于運(yùn)行時的基礎(chǔ)庫版本,可以在所有版本的小程序中運(yùn)行躲叼。
- wxs 與 javascript 是不同的語言芦缰,有自己的語法,并不和 javascript 一致枫慷。
- wxs 的運(yùn)行環(huán)境和其他 javascript 代碼是隔離的让蕾,wxs 中不能調(diào)用其他 javascript 文件中定義的函數(shù)浪规,也不能調(diào)用小程序提供的API。
- wxs 函數(shù)不能作為組件的事件回調(diào)探孝。
- 由于運(yùn)行環(huán)境的差異笋婿,在 iOS 設(shè)備上小程序內(nèi)的 wxs 會比 javascript 代碼快 2 ~ 20 倍。在 android 設(shè)備上二者運(yùn)行效率無差異顿颅。
小程序其它功能和能力大家可以去官方查看
https://developers.weixin.qq.com/miniprogram/dev/index.html?t=18110719
簡單說說開發(fā)工具
https://developers.weixin.qq.com/miniprogram/dev/devtools/different.html