來源:派臣科技|時(shí)間:2019-12-07|瀏覽:次
關(guān)于JavaScript是好是壞,還沒有定論,所以在本文中,我們將討論JavaScript的優(yōu)點(diǎn)、缺點(diǎn)和替代方案。
標(biāo)題問題的簡短回答是“不”。
較長的答案比較復(fù)雜,以“kindof…”開頭,對于開發(fā)人員有幾種JavaScript替代方案,但是(目前)在部署之前必須將它們轉(zhuǎn)換成JavaScript。
人們討厭JavaScript
如果我們考慮到這種編程語言的一些明顯缺陷(包括IEEE 754的雙精度),即許多函數(shù)和屬性在不同的瀏覽器中執(zhí)行的方式不同,強(qiáng)制轉(zhuǎn)換和有問題的全局變量(僅舉幾個例子),這并不奇怪。
然而,最近一項(xiàng)有98,000名開發(fā)人員參與的調(diào)查顯示,JavaScript實(shí)際上是第二大最受歡迎的編程語言,49%的人支持JavaScript。
在我看來,編程語言允許自動完成、滾動和下拉菜單效果、在頁面上動畫化不同的元素、播放音頻和視頻以及許多其他能夠帶來豐富客戶體驗(yàn)的很酷的特性,有什么理由不喜歡它呢?
此外,我們正在討論的是一種與許多其他語言兼容的常青語言,而這種通用性是極其重要的。
JavaScript的好處
說到JavaScript,我們真的很喜歡它,下面是它是最受歡迎和使用最廣泛的編程語言之一的一些原因:
當(dāng)涉及到前端開發(fā)和客戶端接口時(shí),它是惟一的實(shí)際選擇,因?yàn)樗试S程序員創(chuàng)建各種交互元素和動態(tài)web頁面;
JavaScript很輕,語法簡單,使用單線程事件循環(huán)模型,消除了很多編程復(fù)雜性;
這是prototype-oriented;
隨著Node的引入。JavaScript打開了后端編程選項(xiàng),這些選項(xiàng)曾經(jīng)只保留給服務(wù)器端語言,如Java、Python或Ruby。
JavaScript的壞處
以下是一些開發(fā)者盡量避免使用JavaScript的原因:
它是弱類型的,這使得代碼比較模糊;
由于用戶可以看到代碼,JavaScript可能被用于惡意目的,危害客戶端安全;
代碼發(fā)布之前必須在不同的瀏覽器上測試,因?yàn)樗粫韵嗤姆绞皆诿總€瀏覽器上執(zhí)行;
缺乏調(diào)試使得開發(fā)人員很難發(fā)現(xiàn)問題。
JavaScript的可行替代品
公平地說,JavaScript沒有真正的替代品,因?yàn)檎麄€JS框架都可以被繞過。
所有這些替代方案實(shí)際上都是權(quán)宜之計(jì),只允許在編寫代碼時(shí)避免使用JavaScript,但問題是,為典型用戶計(jì)算機(jī)編寫的代碼需要在其上運(yùn)行。這些替代方案使用將另一種語言轉(zhuǎn)換為JavaScript的過程。
下面是5個顯著改進(jìn)JavaScript的值得注意的替代方案。
1. 飛鏢
Dart是一種面向?qū)ο蟮念愃朴赾的語言谷歌,旨在取代JavaScript。Dart是靜態(tài)類型的,這意味著它消除了JS代碼中一些最常見的錯誤來源。它支持類型推斷,這是一個很大的優(yōu)點(diǎn)。
盡管如此,這個JS替代方案最有利的特性之一是,它允許您超越客戶端開發(fā),創(chuàng)建獨(dú)立的應(yīng)用程序。使用谷歌的UI工具包,可以構(gòu)建本地web、桌面和移動應(yīng)用程序。然而,作為程序員的新手,Dart在市場上并不常用,它提供的在線資源有限,這意味著一旦遇到問題,就很難找到解決方案。
2. 打印稿
由Microsoft開發(fā)的TypeScript實(shí)際上更像是一個JavaScript的超集,這意味著它基本上添加了新的方法,改進(jìn)和更新了現(xiàn)有的JS特性,并消除了它的某些限制,最重要的是添加了可選的靜態(tài)類型。換句話說,在編譯成JS后,用TypeScript編寫的應(yīng)用程序幾乎可以在任何瀏覽器中查看。
例如,Angular.js完全是在TypeScript中構(gòu)建的。
這個JS的另一個優(yōu)點(diǎn)是它與Node.js兼容。
但是,社區(qū)比較小,用TypeScript編碼需要更多的時(shí)間。
3.KAFFEINE見面吧
Kaffeine實(shí)際上是JavaScript語法的一組擴(kuò)展,目的是使某些任務(wù)更容易。例如,它幫助前端開發(fā)人員使用JavaScript的回調(diào)函數(shù),因?yàn)樗С之惒讲僮鳌?/p>
對于Kaffeine,調(diào)試的過程要簡單得多,而且除了對開發(fā)人員來說很容易之外,這個JS擴(kuò)展對終端用戶也很有好處,因?yàn)闉g覽器不會凍結(jié),這意味著用戶體驗(yàn)是平穩(wěn)的。
同樣,一個小得多的社區(qū)和資源的缺乏使得這種編程語言有點(diǎn)晦澀。
4. 榆樹
Elm是一種靜態(tài)類型的函數(shù)語言,它與Haskell的相似度超過了與C的相似度,但與前者不同的是,它不會讓開發(fā)人員對其復(fù)雜性感到困惑。
它與JavaScript的主要區(qū)別在于,它不是一種通用語言,而是一種提供高級前端web應(yīng)用程序開發(fā)經(jīng)驗(yàn)的解決方案。
在Elm中編碼時(shí),當(dāng)錯誤發(fā)生時(shí),開發(fā)人員可以立即得到通知,以便他們能夠及時(shí)地修正它,這可以防止在以后的開發(fā)階段出現(xiàn)大量的bug。這個程序使用的口號是“在實(shí)踐中沒有運(yùn)行時(shí)異常”,這基本上意味著如果用Elm編寫的應(yīng)用程序開始運(yùn)行,它就不太可能崩潰。
它的一些缺點(diǎn)包括缺乏服務(wù)器端,學(xué)習(xí)曲線比較陡峭,以及缺少一些高級功能。
5. COFFEESCRIPT
據(jù)說CoffeeScript可以提高原始語言的可讀性,簡化代碼并使其更短。它與Node.js的兼容性是另一個優(yōu)點(diǎn)。
然而,值得一提的是,希望使用CoffeeScript的開發(fā)人員仍然需要大量使用JavaScript。它的主要缺點(diǎn)之一是一組有限的特性,以及JavaScript發(fā)布的ES6版本升級實(shí)際上使CoffeeScript變得多余(這次升級加速了JavaScript,使其幾乎與CoffeeScript一樣快)。
簡而言之,JavaScript目前是一種客戶端編程語言,它將一直存在下去。
這些替代方案可以增強(qiáng)它,并解決它的一些缺點(diǎn),但實(shí)際上不能在沒有JavaScript框架的情況下運(yùn)行,因此可以肯定地說,我們?nèi)匀恍枰却齁avaScript真正的繼承者能夠獨(dú)立于它工作。