因爲工做上的緣由,有需求要使用 WePy,恰好,有了雲開發的契機,就決定研究一下。javascript
想要作雲開發和 WePY,首先要先熟悉 WePY。 WePY 其實以前就據說過,不過本身一直沒有使用,更多仍是習慣用小程序原生寫法來進行開發。java
後續,也用過一些其餘的框架,好比 MinUI 。git
和 MinUI 相比,WePY 給我來講最大的感覺是提供了 promise 的支持和 async/await 的支持,這個支持能夠極大的改善 JavaScript 編程時遇到的 Callback Hell 的問題,可讓咱們更加愉悅的開發。github
此外,我比較看重的特性是支持外部的 NPM 包,支持 NPM 包意味着能夠更好的使用 JavaScript 本來的工程化的產品,也是大大提高生產力的特性。不過,相比於 Promise 的支持和 async/await 的支持,這個現在已經被微信小程序官方團隊所支持的 npm 也顯得不那麼重要了。npm
在看文檔時注意到,WePY 是使用 wepy init
來進行初始化的,並且可使用 wepy list
來查看項目的模板。發現了其中有一個基於 ZanUI 的模板。編程
因爲 ZanUI 及改名後的 VantUI 我都比較熟悉,因此從他下手,去研究一下如何製做 WePY 的模板。小程序
複製 repo名/模板名,並在前面加上 github 的域名,就找到了對應的 repo 。微信小程序
簡單的看了一下項目的文件,發現其中並無什麼特殊的,須要指明初始化內容的文件,因此猜想大機率是不須要進行單獨的配置的。promise
這方面 WePY 的文檔作的不是很好,我在文檔中並無找到相關的說明。若是能夠的話,但願開發者能夠加一個功能,好比加上一個 .wepy-template
,能夠在裏面加入一些交互式的問題,從而來讓用戶設置一些內容。微信
在肯定了模板其實並不困難之後,我就開始作本身的雲開發模板了。
作一個模板只須要三步
提及來簡單,不過,在實際製做時,仍是應當注意一些問題:
git init
來初始化版本控制。這是由於雲開發是與小程序的 AppID 進行綁定的,若是前期沒有作好控制,容易出現後續將 AppID 加入了版本追蹤。因此在一開始,我就將項目進行了初始化,方便後續的回溯。wepy init
命令將整個過程完整的走一遍。確保你的模板是可用的。在作第一個版本的時候,我是將雲函數的目錄放在 src
目錄下,後續,在運行時發現, WePY 會自動編譯雲函數的目錄,致使出錯。不得已,我將雲函數的目錄放置在了項目的根目錄。
當時在研究這部分時,我試圖去尋找 wepy.config.js
文件的配置說明,但願找到一個 exclude
配置項目,來忽略一部分目錄,惋惜,我並無找到。
在使用原生寫法的時候,我經常會在 Page({})
函數外部放上一些引用。好比這樣
const database = wx.cloud.database()
const storeCollection = database.collection('store')
Page({
onReady():function(){
// some code
}
})
複製代碼
在 WePY 中我試圖將代碼放在 Page
實例的內部,不過會致使報錯,所以,我不得不廢棄這樣的寫法,改用 constructor 來實現。
export default class Index extends wepy.page {
constructor () {
super()
this.db = wx.cloud.database()
}
onLoad() {
console.log('onLoad')
console.log(this.db)
}
}
複製代碼
在 WePY 中,因爲傳承了 Vue 的思想,並無提供對 getApp
的 hack ,不過在實際的測試過程當中,發現 getApp()
依然可用。
若是不引入 Redux 之類的狀態管理工具的狀況下,getApp() 的單例模式做爲一個全局的 Bus 來進行數據的傳遞仍是很是方便的。
總的來講, WePY 是一個值得嘗試的框架,單純 Async/Await 的引入,可讓你的代碼變得更加簡潔易懂。特別是若是你的項目須要長期運轉的狀況下,整潔的代碼會幫助你的項目成功。
此外,若是你很習慣於 Vue 的寫法,那麼 WePY 不容錯過,computed 屬性仍是很是實用的。