RichardFeldman是《ElminAction》的作者,他在2019年的ReactiveConf上預(yù)測了Web開發(fā)未來5年的發(fā)展,很有趣,分享給大家。 假如你有機(jī)會從頭開始一項工程,你會如何選擇技術(shù)基礎(chǔ)? Richard在演講開始前提出了這個問題,他相信很多人會選擇成熟而穩(wěn)定的主流技術(shù)。 標(biāo)梵看到針對未來5年的網(wǎng)絡(luò)發(fā)展預(yù)測推斷 假如回到2006年,這一主流技術(shù)堆棧稱為LAMP: 李:Linux。 阿帕奇先生。 MySQL數(shù)據(jù)庫。 Perl,Python,PHP都有。 理查德在2006年創(chuàng)辦公司時,選擇了LAMP,也就是Perl。但選擇穩(wěn)定的東西并不能保證安全,Perl很快就走下坡路,慢慢招聘來的Perl程序員也不怎么樣。 理查德說:“無論我們選擇的技術(shù)有多流行、多主流、多有吸引力,我們還是要賭一把。因此,預(yù)測當(dāng)前的技術(shù)將走向何方并跟隨其發(fā)展,比一開始就盲目地接受他人使用的技術(shù)更為安全。 基于這樣一個前提,他的預(yù)言應(yīng)運而生: 一、TypeScript將接管JS世界。 TypeScript將在2020年前成為新業(yè)務(wù)項目中最常見的選擇。 在2025年底,每天使用TypeScript編程的程序員將會比普通JavaScript更多。 許多人都知道TypeScript,它是JavaScript的一個超集,它增加了對JS的靜態(tài)類型的檢查,這一重要特性深受許多程序員的歡迎,許多錯誤可以在編譯時發(fā)現(xiàn),而不是遺留到運行時,而且靜態(tài)類型的存在使閱讀、修改和重構(gòu)現(xiàn)有代碼變得更容易。 在Google的趨勢下,TypeScript正在蓬勃發(fā)展,而CoffeScript則在逐漸衰落。 而且,TypeScript已經(jīng)得到許多框架的支持: 然而,仍有許多人不喜歡TypeScript,他們認(rèn)為TypeScript代碼和Java一樣冗長,設(shè)計不夠合理,在某些情況下會給人一種錯誤的安全感。 理查德說,預(yù)測未來最重要的因素就是觀察這種技術(shù)對團(tuán)隊的影響,許多團(tuán)隊會說:“我們將嘗試TypeScript,我們曾經(jīng)使用過它,”但從未有團(tuán)隊說:“我們嘗試過TypeScript,然后再回到JavaScript?!?/p> 值得注意的是,目前微軟擁有兩個在TypeScript和JavaScript領(lǐng)域深造的大師級人物:TypeScript設(shè)計師AndersHejlsberg,他同時也是著名的語言設(shè)計師,如TurboPascal,Delphi,C#。另一個則是ErichGamma,他專注于編輯器和IDE,設(shè)計模式,Eclipse,VSCode,他對此非常滿意。 WebAssembly將擴(kuò)展WebApp的范圍。 WASM在2020年底之前不會對網(wǎng)絡(luò)構(gòu)成造成太大影響。 WASM將在2025年底創(chuàng)建一個新的領(lǐng)域:“重量級WebApp”。 什么是網(wǎng)上購物平臺?很容易理解,它是一種在瀏覽器中執(zhí)行的“匯編語言”,能提供接近本地代碼的速度,而且肯定比JavaScript快得多。 編程人員當(dāng)然不會直接編寫“匯編語言”,他們可以使用C/C++/Rust編寫程序,然后編譯成WebAssembly在瀏覽器中執(zhí)行,當(dāng)然JavaScript也可以調(diào)用WebAssembly代碼。 也許有人會說,既然有了V8這樣的執(zhí)行引擎,大家都覺得JavaScript的性能已經(jīng)很好了啊,為什么還要搞Web匯編呢? 理查德舉了一個例子:Figma,一款重量級的圖片編輯軟件,就像Photoshop,Sketch一樣,但它的獨特之處在于運行于瀏覽器中。 該軟件是用C++開發(fā)的,最早編譯成ASM.js子集在瀏覽器中執(zhí)行,采用WebAssembly后,運行速度提高了3倍。 更好的例子之一是游戲。例如以下場景,如果要使用CSS,估計無法使用,但WebAssembly可以解決這一問題。 那意味著WebAssembly打開了一扇門,可以通過Web方式安裝、分發(fā)這些重量級的本地應(yīng)用程序。網(wǎng)頁瀏覽器將和傳統(tǒng)的應(yīng)用商店、安裝軟件競爭! 之后您想使用某個應(yīng)用,只需在瀏覽器中輸入網(wǎng)址,立即開始使用,無需安裝。與他人共享也很方便,只需發(fā)一個鏈接即可。(是否有點類似小程序的概念?但本質(zhì)卻不同。) HTMLCSS/CSS/JS已經(jīng)死了?毫無疑問,WebAssembly擴(kuò)展了Web開發(fā)的基本盤,而WebApp則要大得多。 3.npm將會面臨更多困難。 至少一次npm的安全事件將在2020年底成為頭條新聞。 至少一臺惡意的npmpackage會在2025年前感染大量開發(fā)者。 這些年來,開發(fā)者們已經(jīng)經(jīng)歷過多次npm災(zāi)難。 作為npm(Node.jsPackageManager)的貢獻(xiàn)者,AzerKo?出于對npm管理部門的不滿,ulu刪除了它自己在NPM中的250個模塊,其中一個叫做left-pad,非常簡單,就是將特定字符填入字符串的左邊,以達(dá)到指定的長度,但這個模塊被廣泛引用,導(dǎo)致NPM生態(tài)系統(tǒng)發(fā)生大地震,Node.js,Babel以及其他數(shù)千個項目都直接受到破壞。 2018npm又爆發(fā)了一次著名的event-stream事件,一個名叫right9ctrl的家伙,騙取了著名package作者event-stream的信任,獲得了代碼所有權(quán),并將惡意代碼植入其中。 Richard還建議npm的packagte安裝腳本存在安全隱患,因此建議在npmconfigsetignore-scriptstrue本地執(zhí)行。 4.JS的替代品將穩(wěn)步增長。 這些語言編譯成JavaScript將在2020年底前持續(xù)增長,但沒有一種TypeScript發(fā)展迅速。 盡管TypeScript將在2025年底大行其道,但這些非JS語言仍將穩(wěn)步發(fā)展。 有兩種JavaScript語言可供選擇,一種是TypeScript、Dart、Coffeescript等JavaScript語言,另一種是非JavaScript語言,比如ClojureScript、ReasonML和Elm,盡管都是編譯到JavaScript中執(zhí)行,但它們提供的體驗與JavaScript不同。 理查德本人是Elm的開發(fā)者,很自然地為Elm做廣告,渲染速度快,體積小,并沒有崩潰,擁有自己的生態(tài)系統(tǒng),并因擁有非常詳細(xì)的錯誤信息而廣受好評。 因此Richard認(rèn)為,盡管TypeScript將來更受歡迎,但那些選擇了這些小規(guī)模替代品的“粉絲們”將繼續(xù)使用它們。 本文來源:標(biāo)梵互動 |
|