摘要:所以在小程序出現(xiàn)之后,一股框架之風(fēng)也很快的出現(xiàn),微信小程序剛推出之后,就出現(xiàn)了兩個(gè)比較出名的小程序開(kāi)發(fā)框架,。
原文地址:https://ant-move.github.io/we...
這里說(shuō)的去除小程序框架其實(shí)并不嚴(yán)謹(jǐn),因?yàn)樾〕绦虮旧硪菜闶且粋€(gè)框架,而且是一個(gè)功能更加完善的框架系統(tǒng)。在前端的概念中,我們一般說(shuō)一個(gè)框架是指一個(gè)用來(lái)幫助開(kāi)發(fā)者構(gòu)建用戶界面的框架,而小程序框架本身不僅僅包含了 UI 層的功能,還提供了 API 能力、服務(wù)端的能力,所以說(shuō)小程序框架本身是一個(gè)比常規(guī)的前端框架更完善的東西,或者說(shuō)是一個(gè)完善的構(gòu)建應(yīng)用系統(tǒng)。
本文中所說(shuō)的原生小程序與小程序框架的對(duì)比,均指與第三方小程序框架的對(duì)比。
在小程序的世界里,原生小程序框架已經(jīng)足夠好,它就是那把給你雕刻小而美應(yīng)用的雕刻刀,而不必要去尋找一把屠龍刀。
框架的取舍最近 Vue 作者尤大關(guān)于框架設(shè)計(jì)平衡的分享中也提到了框架的取舍問(wèn)題。
當(dāng)我們?nèi)?gòu)建一個(gè)復(fù)雜的前端應(yīng)用的時(shí)候,如果沒(méi)有工具,而是使用原生 JavaScript 去開(kāi)發(fā)的話,那只會(huì)花費(fèi)更多的時(shí)間。然而 web 應(yīng)用的開(kāi)發(fā)環(huán)境是否也適用于小程序開(kāi)發(fā)呢?
對(duì)小程序來(lái)說(shuō),原生小程序框架就是我們的工具,它足以用來(lái)構(gòu)建一個(gè)復(fù)雜的小程序應(yīng)用。
小程序框架在小程序生態(tài)發(fā)展的初期的確起到了很大的促進(jìn)作用,然而隨著小程序原生框架的不斷完善,這些小程序框架的作用已經(jīng)不再具備優(yōu)勢(shì)。
框架的確給前端帶來(lái)了生產(chǎn)力的提高,也帶動(dòng)了前端界生態(tài)的發(fā)展。所以在小程序出現(xiàn)之后,一股框架之風(fēng)也很快的出現(xiàn),微信小程序剛推出之后,就出現(xiàn)了兩個(gè)比較出名的小程序開(kāi)發(fā)框架,wepy、mpvue。這兩個(gè)框架都帶著一個(gè)共同的出發(fā)點(diǎn),那就是將前端框架的開(kāi)發(fā)體驗(yàn)移植到小程序開(kāi)發(fā)中,從語(yǔ)法層做了改動(dòng),使用用戶可以采用類(lèi)似 Vue.js 風(fēng)格的語(yǔ)法去開(kāi)發(fā)微信小程序。
這些小程序框架初期主要做的是對(duì)小程序原生開(kāi)發(fā)體驗(yàn)的增強(qiáng),隨著小程序生態(tài)的發(fā)展,又增加了跨端開(kāi)發(fā)能力的支持。然而我們框架的引入真的增強(qiáng)了開(kāi)發(fā)體驗(yàn)嗎?我們是否真的需要跨端能力?是否需要通過(guò)引入框架的形式來(lái)實(shí)現(xiàn)跨端支持?
答案是否定的,引入框架對(duì)于小程序開(kāi)發(fā)來(lái)說(shuō)只會(huì)帶來(lái)更多的問(wèn)題。
原生小程序 VS Web 框架如下是原生小程序與 Web 框架功能的對(duì)比情況,可以看到 Web 框架具備的能力,原生小程序也具備。
小程序出現(xiàn)的時(shí)候 Web 框架已經(jīng)發(fā)展的比較成熟,所以可以簡(jiǎn)單猜測(cè)小程序的框架借鑒了許多 Web 框架的特性,這也是為什么小程序開(kāi)發(fā)方式與前端開(kāi)發(fā)方式如此接近的原因。功能對(duì)比
模塊 | Vue.js | React.js | 原生小程序 |
---|---|---|---|
數(shù)據(jù)監(jiān)聽(tīng) | 支持 | 支持 | 支持 |
組件式開(kāi)發(fā) | 支持 | 支持 | 支持 |
組件庫(kù) | 開(kāi)源組件庫(kù)豐富 | 開(kāi)發(fā)組件庫(kù)豐富 | 原生小程序組件支持 |
數(shù)據(jù)狀態(tài)管理 | vuex | redux | globalData 可實(shí)現(xiàn)基本的數(shù)據(jù)管理 |
路由 | vue-router | react-router | 原生支持 |
模塊開(kāi)發(fā) | npm | npm | npm(有輕微的約束限制) |
在開(kāi)發(fā)前端應(yīng)用的時(shí)候,Vue 和 React 技術(shù)棧是比較流行的兩種類(lèi)型,而對(duì)于選擇什么樣的生態(tài)工具時(shí),許多開(kāi)發(fā)者并不確定選擇什么樣的技術(shù)棧,所以一般都會(huì)選擇 Vue 全家桶和 React 全家桶。原生小程序框架從能力上就考慮了小程序場(chǎng)景所需的技術(shù)棧,這也是筆者推崇原生小程序開(kāi)發(fā)方式的原因,如果你對(duì)你當(dāng)前構(gòu)建的應(yīng)用場(chǎng)景需要什么樣的技術(shù)棧特別清晰,那么就用原生的好了,因?yàn)樵〕绦蚩蚣芫褪腔谛〕绦驁?chǎng)景開(kāi)發(fā)的。選擇什么樣的技術(shù)棧,提供什么樣的框架能力,這應(yīng)該是小程序平臺(tái)團(tuán)隊(duì)去思考的問(wèn)題。
原生小程序的優(yōu)勢(shì)從上面的功能層級(jí)對(duì)比我們可以發(fā)現(xiàn),原生小程序與框架相比,功能是非常接近的,簡(jiǎn)單來(lái)說(shuō)就是同一個(gè)物種,只不過(guò)是花貓、白貓的區(qū)別。那么除此之外,原生小程序還有哪些優(yōu)勢(shì)呢?
穩(wěn)定
安全
可靠
原生小程序由專(zhuān)業(yè)的小程序團(tuán)隊(duì)維護(hù)更新,這是社區(qū)開(kāi)源項(xiàng)目無(wú)法比擬的。即使是熱門(mén)的開(kāi)源項(xiàng)目也難保不會(huì)出現(xiàn)停滯更新維護(hù)的情況,也許有一天你就發(fā)現(xiàn)代碼中的坑只得你自己的修復(fù)。
原生小程序還處于快速發(fā)展的階段,每過(guò)一段時(shí)間就會(huì)發(fā)布新功能,如果使用原生小程序開(kāi)發(fā)的話就可以及時(shí)的享用,而如果依賴(lài)于三方框架的話,只得依賴(lài)于框架作者更新之后才能使用。
作為一個(gè)開(kāi)發(fā)人員,有時(shí)候選擇一個(gè)什么樣的框架是很難的,如果你想正確的選擇框架,就得必須要了解框架所做的一些內(nèi)部權(quán)衡,你必須知道這個(gè)框架朝著哪個(gè)方向發(fā)展,并且知道它與你構(gòu)建的東西是否一致。而對(duì)于小程序來(lái)說(shuō),上述的問(wèn)題其實(shí)不存在,小程序框架就是小程序平臺(tái)團(tuán)隊(duì)為你量身打造的。
想了解更多小程序框架可以查看如下三個(gè)框架:
WePY 讓小程序支持組件化開(kāi)發(fā)的框架 WePY 框架在開(kāi)發(fā)過(guò)程中參考了 Vue 等現(xiàn)有框架的一些語(yǔ)法風(fēng)格和功能特性,對(duì)原生小程序的開(kāi)發(fā)模式進(jìn)行了再次封裝,更貼近于 MVVM 架構(gòu)模式, 并支持ES6/7的一些新特性。
mpvue 是一個(gè)使用 Vue.js 開(kāi)發(fā)小程序的前端框架,目前支持 微信小程序、百度智能小程序,頭條小程序 和 支付寶小程序。 框架基于 Vue.js,修改了的運(yùn)行時(shí)框架 runtime 和代碼編譯器 compiler 實(shí)現(xiàn),使其可運(yùn)行在小程序環(huán)境中,從而為小程序開(kāi)發(fā)引入了 Vue.js 開(kāi)發(fā)體驗(yàn)。
Taro 是一套遵循 React 語(yǔ)法規(guī)范的 多端開(kāi)發(fā) 解決方案。使用 Taro,我們可以只書(shū)寫(xiě)一套代碼,再通過(guò) Taro 的編譯工具,將源代碼分別編譯出可以在不同端(微信/百度/支付寶/字節(jié)跳動(dòng)/QQ小程序、快應(yīng)用、H5、React-Native 等)運(yùn)行的代碼。小程序跨端需求
繼微信小程序推出后,阿里,百度,頭條也推出了自己的小程序平臺(tái),這就給小程序開(kāi)發(fā)者帶來(lái)一個(gè)問(wèn)題,是每個(gè)平臺(tái)開(kāi)發(fā)一套還是尋求代碼復(fù)用的技術(shù)方案。
其實(shí)跨端方案很多,現(xiàn)有的小程序框架大多都內(nèi)置了跨端能力支持,對(duì)于跨端支持能力要求并不是特別高的團(tuán)隊(duì),也可以搭建自己的跨端方案,因?yàn)檫@些小程序框架都很類(lèi)似,所以說(shuō)搭建一套針對(duì)特定場(chǎng)景的跨端方案也變得可行。
Antmove - 編譯型小程序跨端解決方案Antmove 是一個(gè)致力于提供通用型小程序跨端的解決方案,通過(guò)代碼編譯的手段和 runtime 的處理,實(shí)現(xiàn)小程序跨平臺(tái)的目的,Antmove 與其它小程序開(kāi)發(fā)框架的區(qū)別就是,它盡可能的通過(guò)代碼編譯的方式來(lái)解決多端差異問(wèn)題(一個(gè)平臺(tái)的代碼轉(zhuǎn)換到另一個(gè)平臺(tái)),編譯方式難以處理的才會(huì)進(jìn)行運(yùn)行時(shí)的抹平,而這部分只有簡(jiǎn)單的數(shù)據(jù)轉(zhuǎn)換處理,不會(huì)引入特定的編碼約束。
以微信小程序轉(zhuǎn)支付寶小程序?yàn)槔?,微信小程序和支付寶小程序底層設(shè)計(jì)不同,導(dǎo)致雙方組件機(jī)制不一樣,微信小程序組件間的通信是基于事件的,而支付寶小程序是基于 props 的。在將使用了微信小程序事件能力的小程序應(yīng)用轉(zhuǎn)換為支付寶小程序應(yīng)用的過(guò)程中,Antmove 不會(huì)去構(gòu)造一套事件機(jī)制,它盡可能的避免任何不必要的運(yùn)行時(shí)開(kāi)銷(xiāo),而是利用支付寶小程序的 props 機(jī)制去實(shí)現(xiàn)同樣的功能。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/106672.html
摘要:使用簽署免費(fèi)證書(shū)后端掘金本文操作在操作系統(tǒng)下完成,需要和超文本傳輸安全協(xié)議英語(yǔ),縮寫(xiě),常稱(chēng)為,紅黑樹(shù)深入剖析及實(shí)現(xiàn)后端掘金紅黑樹(shù)是平衡二叉查找樹(shù)的一種。 使用 Lets Encrypt 簽署免費(fèi) Https 證書(shū) - 后端 - 掘金 本文操作在Linux操作系統(tǒng)下完成,需要Python和Nginx 超文本傳輸安全協(xié)議(英語(yǔ):Hypertext Transfer Protocol Sec...
摘要:怎么影響了我的思考方式對(duì)前端開(kāi)發(fā)者來(lái)說(shuō),能強(qiáng)化了面向接口編程這一理念。使用的過(guò)程就是在加深理解的過(guò)程,確實(shí)面向接口編程天然和靜態(tài)類(lèi)型更為親密。摘要: 學(xué)會(huì)TS思考方式。 原文:TypeScript - 一種思維方式 作者:zhangwang Fundebug經(jīng)授權(quán)轉(zhuǎn)載,版權(quán)歸原作者所有。 電影《降臨》中有一個(gè)觀點(diǎn),語(yǔ)言會(huì)影響人的思維方式,對(duì)于前端工程師來(lái)說(shuō),使用 typescript 開(kāi)...
摘要:怎么影響了我的思考方式對(duì)前端開(kāi)發(fā)者來(lái)說(shuō),能強(qiáng)化了面向接口編程這一理念。使用的過(guò)程就是在加深理解的過(guò)程,確實(shí)面向接口編程天然和靜態(tài)類(lèi)型更為親密。 電影《降臨》中有一個(gè)觀點(diǎn),語(yǔ)言會(huì)影響人的思維方式,對(duì)于前端工程師來(lái)說(shuō),使用 typescript 開(kāi)發(fā)無(wú)疑就是在嘗試換一種思維方式做事情。 其實(shí)直到最近,我才開(kāi)始系統(tǒng)的學(xué)習(xí) typescript ,前后大概花了一個(gè)月左右的時(shí)間。在這之前,我也在...
閱讀 3959·2023-04-26 02:00
閱讀 3220·2021-11-22 13:54
閱讀 1828·2021-08-03 14:03
閱讀 812·2019-08-30 15:52
閱讀 3239·2019-08-29 12:30
閱讀 2523·2019-08-26 13:35
閱讀 3479·2019-08-26 13:25
閱讀 3100·2019-08-26 11:39