什么是原生開(kāi)發(fā)方式?這個(gè)概念其實(shí)挺難用文字去準(zhǔn)確界定的,因?yàn)楣俜揭矝](méi)有對(duì)原生開(kāi)發(fā)方式作出定義。這個(gè)概念其實(shí)也是不言而喻的,我們按照小程序官方文檔中的描述去開(kāi)發(fā)小程序就屬于原生開(kāi)發(fā)的方式。
定義一個(gè)名詞對(duì)于數(shù)學(xué)是有意義的,但對(duì)于互聯(lián)網(wǎng)而言,定義只是大佬們腦回路中的靈感閃現(xiàn)。雷軍可以重新定義”什么是現(xiàn)貨“、羅永浩可以重新定義”操作系統(tǒng)“,互聯(lián)網(wǎng)時(shí)代的定義又不用負(fù)責(zé)任,每個(gè)人都可以去重新定義一堆老久的名詞,不然哪里來(lái)的流量?
咱就不去定義所謂的原生開(kāi)發(fā),我們只需要了解一些小程序原生開(kāi)發(fā)的缺陷以及為什么會(huì)出現(xiàn)眾多的第三方小程序框架就可以了。經(jīng)過(guò)兩年多的發(fā)展,小程序已解決很多早期時(shí)候諸如:沒(méi)有自定義組件、UI控制自由度不高、ES6支持度不高、開(kāi)發(fā)工具幾乎等同于廢材等問(wèn)題,但現(xiàn)在的版本依然有一些缺陷:
不能直接使用Less/Sass/Stylus等預(yù)編譯CSS
ES新標(biāo)準(zhǔn)支持度太低,比如不支持Asncy/Await(ES6/ES7就是那么尷尬,NodeJS對(duì)于ES的標(biāo)準(zhǔn)支持甚至還不如小程序)
雖然支持Promise,但官方的API返回結(jié)果并不是Promise,依然是Callback回調(diào)函數(shù)
沒(méi)有狀態(tài)管理,參考Vuex和Redux
沒(méi)有雙向數(shù)據(jù)綁定(嚴(yán)格說(shuō)這不算是一個(gè)缺陷,主要是出于性能的考慮)
沒(méi)有過(guò)濾器(LinUI使用wxs實(shí)現(xiàn)了一些主流過(guò)濾器,但官方的支持顯然會(huì)更加方便)
強(qiáng)制將WXSS、WXML和JS代碼分離到3個(gè)不同的文件中
這些缺點(diǎn)讓習(xí)慣了現(xiàn)代化前端開(kāi)發(fā)方式的開(kāi)發(fā)者寫起代碼來(lái)并不是那么舒服。那為什么現(xiàn)在會(huì)出現(xiàn)如此多的第三方開(kāi)發(fā)框架呢?除了以上原生小程序語(yǔ)法缺陷外,還有一些其他的原因:
小程序已不再特別指代微信小程序,現(xiàn)在還有支付寶/百度/頭條小程序。開(kāi)發(fā)者可能有多端開(kāi)發(fā)小程序的需求,希望讓一份代碼能夠在多端運(yùn)行,這是一個(gè)很直接述求
一些開(kāi)發(fā)者希望使用Vue和React來(lái)開(kāi)發(fā)小程序
在我看來(lái),小程序的缺陷或者多端編譯都不是第三方框架出現(xiàn)的主要原因,第三條:為了使用而使用,才是真正的原因。
咨詢熱線
010-85377344
135-21581588
微信客服
QQ客服
3026106565 點(diǎn)擊咨詢