天天看點

Google的“ JavaScript殺手” Dart 與JavaScript的比較,前端人趕緊把Dart學起來!

Google的“ JavaScript殺手” Dart 與JavaScript的比較,前端人趕緊把Dart學起來!

英文 | https://blog.bitsrc.io/javascript-vs-dart-an-overview-e2879abde6a4

翻譯 | web前端開發

什麼是JavaScript?

JavaScript通常被稱為浏覽器腳本語言,但它也已擴充到許多伺服器端和移動應用程式開發環境。JS已經存在了将近20年,可以肯定地說它确實是一種成熟且穩定的程式設計語言。在Facebook釋出React和React Native架構之後,JS變得越來越流行。

JavaScript具有自己的軟體包管理器,例如NPM和Yarn。盡管JavaScript現在是首選和流行,但在程式設計社群中仍然有一些不同的評論。盡管如此,可以肯定地說JavaScript的流行性毋庸置疑,因為它包含将近200萬個在StackOverFlow上标記的問題。

什麼是Dart?

Dart是由Google專門針對各種平台上的快速應用程式進行用戶端優化的語言。Google最初将其用作内部程式設計語言來建構Web,伺服器和移動應用程式。盡管Dart自2011年以來一直存在,但在Google宣布Flutter進行跨平台移動應用開發後,它就開始流行。唯一的原因是Flutter完全基于Dart。是以,移動開發人員必須學習Dart,才能開始使用Flutter。

Dart可以像C之類的其他程式設計語言一樣編譯源代碼。但是,它也具有自己的虛拟機(VM),用于運作稱為Dart VM的本機應用程式。Dart也有自己的軟體包管理器Pub。

使用Dart和JavaScript的編寫的Hello World示例應用程式:

Google的“ JavaScript殺手” Dart 與JavaScript的比較,前端人趕緊把Dart學起來!

上面的螢幕截圖是用Dart和JavaScript編寫的Hello World程式。上面的是Dart編寫的Hello World程式,下面的是JS編寫的Hello World程式。

JavaScript與Dart的比較

01、人氣度

JavaScript實際上無處不在。幾乎沒有不運作JavaScript的裝置。目前,JavaScript被用于編寫Web,移動和伺服器端代碼。JavaScript在StackOverflow上标記了将近200萬個問題。

由于其受歡迎程度,JS生态系統非常龐大,現在,随着雲元件中心的出現,它甚至在可重用元件“市場”中占主導地位。前端開發人員将希望看到一種替代方法。

另一方面,Dart變得越來越流行,但距離JavaScript還很遙遠。在Google宣布Flutter之前,Dart無處可尋。Dart吸引了不支援JavaScript的開發人員。目前,Dart在StackOverFlow上标記了将近3萬個問題。

02、學習曲線

衆所周知,JavaScript對于初學者來說非常棘手,特别是如果他們沒有程式設計概念方面的知識。但是JavaScript确實是大學和訓練營教授的主要語言之一,因為它是Web開發的核心之一。實際上,HTML,CSS和JavaScript被稱為Web開發的101。線上上有很多課程和教程可以幫助您學習JavaScript。

但是,使用Dart,情況就大不相同了。學習Dart對于新手來說可能會非常吓人,因為它不像JavaScript那樣廣為人知,而且學習材料相對較少。但是Google竭盡全力幫助其他OOP語言的開發人員無縫過渡到Dart。

03、類型安全

這是JavaScript和Dart之間的主要差別之一。作為一種解釋型語言,JavaScript支援動态類型和鴨子類型。鴨子類型是對象是否适合用于特定目的的方法,它取決于某些方法和屬性的存在,而不是對象本身的類型。Javascript允許鍵入任何代碼,使其成為非類型安全的語言。導緻僅在運作時發現錯誤。

相反,Dart支援寬松和強大的原型制作。作為一種編譯語言,Dart能夠在編譯期間發現大多數錯誤,進而使其比JavaScript更具有類型安全性。

04、企業用途

JavaScript已在商業上使用,即使在大型項目中也是如此。它用于建構Web和跨平台應用程式。Facebook引入的Web和跨平台架構React和React Native使用JavaScript。這些架構在Facebook内部使用。Airbnb,Slack,eBay等其他公司也使用JavaScript。

Dart的出生地是Google。是以,一開始它在内部被廣泛使用。然後,在引入Flutter之後,諸如阿裡巴巴這樣的大公司也采用Flutter和Dart來開發其跨平台應用程式。

05、将Dart編譯成JavaScript

Dart有兩種不同的JS編譯器。webdev工具根據用例選擇最佳的編譯器。在開發應用程式時,webdev選擇dartdevc,它支援增量編譯,是以你可以快速檢視編輯結果。但是,在建構要部署的應用程式時,webdev選擇dart2js,它使用搖樹等技術來生成優化的代碼。

Dart團隊正在努力使dart2js編譯後的代碼比手寫JS更快地運作。盡管并非在所有情況下都如此,但我們可以預期在不久的将來會有一些激烈的競争。

優劣勢對比

JavaScript

優點

  • JavaScript可以用于Web和移動應用程式。
  • 它可以用于前端和後端,是以JavaScript可以在每個裝置上運作。
  • JavaScript具有龐大的社群和提供出色線上架構。
  • 輕巧而靈活。
  • 可以找到大量的學習資料

缺點

  • 盡管JS有大量的庫,但是有很多庫的品質和維護性很差。
  • 僅在運作時發現錯誤。

Dart

優點

  • 開源的
  • 由大公司-Google支援
  • 類型安全,并使用JIT和AOT進行編譯。
  • 撲的骨幹
  • 在某些情況下相對更快

缺點

  • 對程式員而言相對較新
  • 與JavaScript相比,學習材料并不那麼廣泛

總結

Dart和JavaScript都是開發各種應用程式的理想選擇。随着它們在Flutter和React,React Native中使用,我可以看到這兩種語言的光明前景。

在Jaxenter進行的一項民意調查中,Dart以223票被選為2019年清單中的第一語言。

此外,在Stack Overflow進行的一項調查中,Dart(66.3%)僅次于JavaScript(66.8%),成為2019年最受歡迎的程式設計語言。Dart在“ Github八面體州 ”增長最快的語言類别中也排名第一。截圖如下:

Google的“ JavaScript殺手” Dart 與JavaScript的比較,前端人趕緊把Dart學起來!

但是,作為新手開發人員入門學習的話,我還是建議你從JavaScript入手,并首先掌握它的基礎知識。你不一定需要成為JS專業人士,而是需要了解其基礎知識。完成後,你可以進入Dart的學習,并探索其水深淺。這樣一來,你就可以熟悉這兩個前端開發領域的語言了。

編碼快樂!

Google的“ JavaScript殺手” Dart 與JavaScript的比較,前端人趕緊把Dart學起來!

繼續閱讀