商城系統(tǒng) 注冊(cè)

微信小程序開(kāi)發(fā)庫(kù)grace和wepy的對(duì)比

2018-05-04|HiShop
導(dǎo)讀:grace和wepy都是輔助小 程序開(kāi)發(fā) 的開(kāi)源庫(kù),本文對(duì)兩者做個(gè)對(duì)比。 ...

grace和wepy都是輔助小程序開(kāi)發(fā)的開(kāi)源庫(kù),本文對(duì)兩者做個(gè)對(duì)比。

注:本文是作者本人的一些拙見(jiàn),純粹的技術(shù)討論,不想引起技術(shù)信仰之爭(zhēng),歡迎積極、正向的討論及建議。

微信小程序開(kāi)發(fā)庫(kù)grace和wepy的對(duì)比

自小程序發(fā)布后,現(xiàn)在最著名的小程序開(kāi)發(fā)框架就是wepy, 它借助一系列工具,通過(guò)預(yù)編譯的手段實(shí)現(xiàn)了和Vue接近的開(kāi)發(fā)風(fēng)格,可以認(rèn)為wepy更就是小程序的 vue(但還有一些不同,如布局模板),首先,必須承認(rèn)wepy是一個(gè)好的框架,如果你是Vue開(kāi)發(fā)者,如果要開(kāi)發(fā)一些大的小程序項(xiàng)目,wepy應(yīng)該是你的不二之選。但是我們換個(gè)角度,考慮下面兩個(gè)問(wèn)題:

小程序開(kāi)發(fā)者來(lái)源

來(lái)自前端開(kāi)發(fā)者

目前來(lái)看,如果是一名前端,那么很可能用過(guò)Angular/React/Vue中的一個(gè),首先,如果你沒(méi)有用過(guò)Vue, 那么要使用wepy的學(xué)習(xí)成本接近于學(xué)習(xí)Vue的成本,這是第一點(diǎn),學(xué)習(xí)成本會(huì)大一些。其次對(duì)于對(duì)Angular/React有強(qiáng)烈信仰的開(kāi)發(fā)者來(lái)說(shuō),他們可能會(huì)問(wèn)一聲,小程序就小程序,為什么非得弄成Vue. 在web開(kāi)發(fā)時(shí)正宗的Vue都不用,會(huì)為了開(kāi)發(fā)小程序再去學(xué)習(xí)一下wepy?

非前端開(kāi)發(fā)者

在小程序發(fā)布后,想必大多數(shù)程序員都想嘗嘗,而并非只是前端程序員,對(duì)于這部分開(kāi)發(fā)者來(lái)說(shuō),大都會(huì)采用小程序原生開(kāi)發(fā),他們基本不肯能再去學(xué)習(xí)一個(gè)像Vue同等規(guī)模的前端框架。

總結(jié)一下,站在開(kāi)發(fā)者的角度,wepy 采用了類Vue的開(kāi)發(fā)風(fēng)格,即是優(yōu)勢(shì),也是劣勢(shì)。優(yōu)勢(shì)是可以讓數(shù)量可觀的Vue開(kāi)發(fā)者輕松過(guò)渡,但缺點(diǎn)是提高了其它開(kāi)發(fā)者的使用門檻。所以,一個(gè)輕巧易上手的幫助工具就很有必要,而grace就是這樣的一個(gè)工具。

小程序定位

小程序的定位本身就是“觸手可得,用完即走”, 解決想干個(gè)啥都得下個(gè)APP的歷史現(xiàn)象。有了小程序后,不用裝太多APP,只有在第一次用的時(shí)候花費(fèi)少量流量下載即可??梢钥吹剑〕绦虻谝淮问褂脮r(shí)還是要下載,為了減少下載等待時(shí)間,節(jié)省用戶流量,小程序?qū)Τ绦虬拇笮≡O(shè)置了上線4M, 這也為什么小程序中“小”的含義。 微信的這種限制決定了小程序一般只是用于實(shí)現(xiàn)核心功能,不會(huì)用作復(fù)雜功能。這也就決定了,在大多數(shù)小程序開(kāi)發(fā)時(shí),我們需要的并不是什么強(qiáng)拽炫酷吊炸天的大框架,而是一些簡(jiǎn)單的幫助工具,而grace的定位就是一個(gè)精巧的幫助工具。在筆者了解的很多小程序,甚至大都是用原生開(kāi)發(fā)的。

下面總結(jié)一下主要區(qū)別:

定位不同;grace的定位是一個(gè)精巧、易用的小程序開(kāi)發(fā)輔助庫(kù),而wepy是一個(gè)功能全面的類vue框架.

grace使用簡(jiǎn)單易上手,wepy對(duì)不了解Vue的開(kāi)發(fā)者有不小的學(xué)習(xí)成本,并且開(kāi)發(fā)環(huán)境依賴多,配置比較復(fù)雜。

grace更貼近于原生,wepy更貼近于web.

下面我們看看Grace都有哪些功能:

Grace可以干什么

我們看看grace的特點(diǎn):

輕量、小巧、上手簡(jiǎn)單

支持和Vue一樣優(yōu)雅的數(shù)據(jù)響應(yīng)式

支持?jǐn)?shù)據(jù)自動(dòng)更新、更改緩存、批量更新

強(qiáng)大的網(wǎng)絡(luò)功能

支持全局事件總線

支持跨頁(yè)面?zhèn)髦?/p>

支持mixins

主打是精巧,可以看到目前核心功能主要涉及三個(gè)方面:數(shù)據(jù)、網(wǎng)絡(luò)、事件。

數(shù)據(jù)

小程序是數(shù)據(jù)與頁(yè)面渲染分離的,所以在開(kāi)發(fā)中會(huì)有大量的setData操作,grace為了簡(jiǎn)化這大量的顯式數(shù)據(jù)更新,實(shí)現(xiàn)了和Vue一致的數(shù)據(jù)響應(yīng)式-可以通過(guò)賦值直接更新數(shù)據(jù)。與此同時(shí),為了避免頻繁setData帶來(lái)的性能消耗,grace不僅支持手動(dòng)批量刷新而且grace可以自動(dòng)跟蹤頁(yè)面前后臺(tái)切換,如果頁(yè)面切換到后臺(tái),則不會(huì)再去調(diào)用setData,而是將變動(dòng)先緩存,等到頁(yè)面切換到前臺(tái),才會(huì)統(tǒng)一刷新,有效避免不必要的性能消耗。

網(wǎng)絡(luò)

大多數(shù)小程序都需會(huì)和后臺(tái)通過(guò)http進(jìn)行通信,為此,grace提供了強(qiáng)大、靈活、良好的Promise API,同時(shí)支持全局請(qǐng)求配置、請(qǐng)求/響應(yīng)攔截器等。更重要的是,Promise風(fēng)格的API可以支持ES7的async/await。

事件

小程序原生在跨頁(yè)面通信方面比較弱,為此,grace提供了一個(gè)全局事件總線,你可以在任何頁(yè)面通過(guò)注冊(cè)/觸發(fā)事件來(lái)進(jìn)行通信。 不僅如此, grace還在事件總線的基礎(chǔ)上,實(shí)現(xiàn)了更友好的頁(yè)面數(shù)據(jù)回傳的回調(diào)。

除了這些,grace還支持 mixins,提供了一種擴(kuò)展新功能的方式,它可以在全局給頁(yè)面添加一些功能,開(kāi)發(fā)者可以自己發(fā)揮。

Grace今后的發(fā)展

筆者覺(jué)得小程序的量級(jí)一般都不會(huì)太大,為了避免過(guò)度設(shè)計(jì),grace會(huì)一直保持精巧而易用的原則,不會(huì)添加太多使用頻率比較小的功能。如果大家有什么好建議,或者希望grace添加什么新功能,都可以在github提issue.

電話咨詢 預(yù)約演示 0元開(kāi)店