grace和wepy都是輔助小程序開發的開源庫,本文對二者作個對比。前端
注:本文是做者本人的一些拙見,純粹的技術討論,不想引發技術信仰之爭,歡迎積極、正向的討論及建議。
若是你還不瞭解Grace, 請參考:微信小程序開發神器-Gracevue
Github: https://github.com/wendux/gracegit
自小程序發佈後,如今最著名的小程序開發框架就是wepy, 它藉助一系列工具,經過預編譯的手段實現了和Vue接近的開發風格,能夠認爲wepy更就是小程序的 vue(但還有一些不一樣,如佈局模板),首先,必須認可wepy是一個好的框架,若是你是Vue開發者,若是要開發一些大的小程序項目,wepy應該是你的不二之選。可是咱們換個角度,考慮下面兩個問題:程序員
目前來看,若是是一名前端,那麼極可能用過Angular/React/Vue中的一個,首先,若是你沒有用過Vue, 那麼要使用wepy的學習成本接近於學習Vue的成本,這是第一點,學習成本會大一些。其次對於對Angular/React有強烈信仰的開發者來講,他們可能會問一聲,小程序就小程序,爲何非得弄成Vue. 在web開發時正宗的Vue都不用,會爲了開發小程序再去學習一下wepy?github
在小程序發佈後,想必大多數程序員都想嚐嚐,而並不是只是前端程序員,對於這部分開發者來講,大都會採用小程序原生開發,他們基本不願能再去學習一個像Vue同等規模的前端框架。web
總結一下,站在開發者的角度,wepy 採用了類Vue的開發風格,便是優點,也是劣勢。優點是可讓數量可觀的Vue開發者輕鬆過渡,但缺點是提升了其它開發者的使用門檻。因此,一個輕巧易上手的幫助工具就頗有必要,而grace就是這樣的一個工具。小程序
小程序的定位自己就是「觸手可得,用完即走」, 解決想幹個啥都得下個APP的歷史現象。有了小程序後,不用裝太多APP,只有在第一次用的時候花費少許流量下載便可。能夠看到,小程序第一次使用時仍是要下載,爲了減小下載等待時間,節省用戶流量,小程序對程序包的大小設置了上線4M, 這也爲何小程序中「小」的含義。 微信的這種限制決定了小程序通常只是用於實現核心功能,不會用做複雜功能。這也就決定了,在大多數小程序開發時,咱們須要的並非什麼強拽炫酷吊炸天的大框架,而是一些簡單的幫助工具,而grace的定位就是一個精巧的幫助工具。在筆者瞭解的不少小程序,甚至大都是用原生開發的。 微信小程序
下面總結一下主要區別:緩存
下面咱們看看Grace都有哪些功能:前端框架
咱們看看grace的特色:
主打是精巧,能夠看到目前核心功能主要涉及三個方面:數據、網絡、事件。
小程序是數據與頁面渲染分離的,因此在開發中會有大量的setData
操做,grace爲了簡化這大量的顯式數據更新,實現了和Vue一致的數據響應式-能夠經過賦值直接更新數據。與此同時,爲了不頻繁setData
帶來的性能消耗,grace不只支持手動批量刷新並且grace能夠自動跟蹤頁面先後臺切換,若是頁面切換到後臺,則不會再去調用setData
,而是將變更先緩存,等到頁面切換到前臺,纔會統一刷新,有效避免沒必要要的性能消耗。
大多數小程序都需會和後臺經過http進行通訊,爲此,grace提供了強大、靈活、良好的Promise API,同時支持全局請求配置、請求/響應攔截器等。更重要的是,Promise風格的API能夠支持ES7的async/await。
小程序原生在跨頁面通訊方面比較弱,爲此,grace提供了一個全局事件總線,你能夠在任何頁面經過註冊/觸發事件來進行通訊。 不只如此, grace還在事件總線的基礎上,實現了更友好的頁面數據回傳的回調。
除了這些,grace還支持 mixins,提供了一種擴展新功能的方式,它能夠在全局給頁面添加一些功能,開發者能夠本身發揮。
筆者以爲小程序的量級通常都不會太大,爲了不過分設計,grace會一直保持精巧而易用的原則,不會添加太多使用頻率比較小的功能。若是你們有什麼好建議,或者但願grace添加什麼新功能,均可以在github提issue.
最後,貼出Github地址,若是以爲對你有用,歡迎star, 若是有什麼建議,歡迎issue。
Grace項目地址:https://github.com/wendux/grace