偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

JavaScript vs Dart 兩者之間的比較

開發(fā) 前端
JavaScript實(shí)際上無處不在,幾乎沒有不運(yùn)行JavaScript的設(shè)備。另一方面,Dart變得越來越流行,但距離JavaScript還很遙遠(yuǎn)。

什么是JavaScript?

JavaScript通常被稱為瀏覽器腳本語(yǔ)言,但它也已擴(kuò)展到許多服務(wù)器端和移動(dòng)應(yīng)用程序開發(fā)環(huán)境。JS已經(jīng)存在了將近20年,可以肯定地說它確實(shí)是一種成熟且穩(wěn)定的編程語(yǔ)言。在Facebook發(fā)布React和React Native框架之后,JS變得越來越流行。

JavaScript具有自己的軟件包管理器,例如NPM和Yarn。盡管JavaScript現(xiàn)在是首選和流行,但在編程社區(qū)中仍然有一些不同的評(píng)論。不過,可以肯定地說,JavaScript的流行性毋庸置疑,因?yàn)樗瑢⒔?00萬個(gè)在StackOverFlow上標(biāo)記的問題。

什么是Dart?

Dart是由Google專門針對(duì)各種平臺(tái)上的快速應(yīng)用程序進(jìn)行客戶端優(yōu)化的語(yǔ)言。Google最初將其用作內(nèi)部編程語(yǔ)言來構(gòu)建Web、服務(wù)器和移動(dòng)應(yīng)用程序。盡管Dart自2011年以來一直存在,但在Google宣布Flutter進(jìn)行跨平臺(tái)移動(dòng)應(yīng)用開發(fā)后,它就開始流行。唯一的原因是Flutter完全基于Dart。因此,移動(dòng)開發(fā)人員必須學(xué)習(xí)Dart 才能開始使用Flutter。

Dart編譯源代碼,類似于C等其他編程語(yǔ)言。但是它也有自己的虛擬機(jī)(VM),用于運(yùn)行稱為Dart VM的原生應(yīng)用程序。 Dart也有自己的軟件包管理器,稱為Pub。

使用Dart和JavaScript的示例應(yīng)用程序

上面的屏幕截圖是用Dart和JavaScript編寫的Hello World程序。

JavaScript與Dart的比較

1. 流行程度

JavaScript實(shí)際上無處不在,幾乎沒有不運(yùn)行JavaScript的設(shè)備。當(dāng)前,JavaScript被用于編寫Web,移動(dòng)和服務(wù)器端代碼。 JavaScript在StackOverflow上標(biāo)記了將近200萬個(gè)問題。

由于其受歡迎程度,JS生態(tài)系統(tǒng)非常龐大,現(xiàn)在,隨著云組件中心的出現(xiàn),它甚至在可重用組件“市場(chǎng)”中占主導(dǎo)地位。

另一方面,Dart變得越來越流行,但距離JavaScript還很遙遠(yuǎn)。在Google宣布Flutter之前,Dart無處可尋。Dart吸引了不支持JavaScript的開發(fā)人員。目前,Dart在StackOverFlow上標(biāo)記了將近3萬個(gè)問題。

2. 學(xué)習(xí)曲線

眾所周知,JavaScript對(duì)于初學(xué)者來說是相當(dāng)棘手的,特別是當(dāng)他們沒有編程概念的背景知識(shí)時(shí)。但是JavaScript是大學(xué)和訓(xùn)練營(yíng)教授的主要語(yǔ)言之一,因?yàn)樗荳eb開發(fā)的核心之一。實(shí)際上,HTML,CSS和JavaScript被稱為Web開發(fā)的三劍客。在線上有很多課程和教程可以幫助您學(xué)習(xí)JavaScript。

但是,使用Dart,情況就大不相同了。學(xué)習(xí)Dart對(duì)于新手來說可能會(huì)非常嚇人,因?yàn)樗幌馢avaScript那樣廣為人知,而且學(xué)習(xí)材料相對(duì)較少。但是Google竭盡全力幫助其他OOP語(yǔ)言的開發(fā)人員無縫過渡到Dart。

3. 類型安全

這是JavaScript和Dart之間的主要區(qū)別之一。作為一種解釋型語(yǔ)言,JavaScript支持動(dòng)態(tài)類型和鴨子類型。鴨子類型是根據(jù)特定方法和屬性的存在而不是對(duì)象本身的類型來確定對(duì)象是否適合用于特定目的的類型。Javascript允許鍵入任何代碼,使其成為非類型安全的語(yǔ)言,導(dǎo)致僅在運(yùn)行時(shí)發(fā)現(xiàn)錯(cuò)誤。

相反,Dart支持松散的和強(qiáng)大的原型設(shè)計(jì)。作為一種編譯語(yǔ)言,Dart能夠在編譯過程中發(fā)現(xiàn)大多數(shù)錯(cuò)誤,這使得它比JavaScript更加類型安全。

4. 企業(yè)使用

JavaScript已在商業(yè)上使用,即使在大型項(xiàng)目中也是如此,它用于構(gòu)建Web和跨平臺(tái)應(yīng)用程序。Facebook引入的Web和跨平臺(tái)框架React和React Native使用JavaScript,這些框架在Facebook內(nèi)部使用。Airbnb,Slack,eBay等其他公司也使用JavaScript。

Dart的出生地是Google,因此,一開始它在內(nèi)部被廣泛使用。然后,在引入Flutter之后,諸如阿里巴巴這樣的大公司采用Flutter和Dart來開發(fā)其跨平臺(tái)應(yīng)用程序。

[[326414]]

將Dart編譯成JavaScript

Dart有兩種不同的JS編譯器,Webdev工具根據(jù)用例選擇最佳的編譯器。在開發(fā)應(yīng)用程序時(shí),webdev選擇dartdevc,它支持增量編譯,因此你可以快速查看編輯結(jié)果。但是,在構(gòu)建要部署的應(yīng)用程序時(shí),webdev選擇dart2js,它使用搖樹之類的技術(shù)來生成優(yōu)化的代碼。

Dart團(tuán)隊(duì)正在努力使dart2js編譯的代碼比手寫JS運(yùn)行得更快。雖然不是所有情況下都會(huì)如此,但我們可以期待在不久的將來會(huì)有一些激烈的競(jìng)爭(zhēng)。

利弊比較

1. JavaScript

優(yōu)點(diǎn):

  • JavaScript可以用于Web和移動(dòng)應(yīng)用程序。
  • 它可以用于前端和后端,因此JavaScript可以在每個(gè)設(shè)備上運(yùn)行。
  • JavaScript具有龐大的社區(qū)和在線提供的出色框架。
  • 輕巧而靈活。
  • 可以找到大量的學(xué)習(xí)資料。

缺點(diǎn):

  • 盡管JS有大量的庫(kù),但是有很多庫(kù)的質(zhì)量和維護(hù)性很差。
  • 僅在運(yùn)行時(shí)發(fā)現(xiàn)錯(cuò)誤。

2. Dart

優(yōu)點(diǎn):

  • 開源。
  • 由大公司——Google支持。
  • 類型安全,并使用JIT和AOT進(jìn)行編譯。
  • Flutter的骨干。
  • 在某些情況下相對(duì)更快

缺點(diǎn):

  • 對(duì)程序員而言相對(duì)較新。
  • 與JavaScript相比,學(xué)習(xí)材料并不廣泛。

結(jié)論

Dart和JavaScript都是開發(fā)各種應(yīng)用程序的理想選擇。隨著它們?cè)贔lutter和React,React Native中使用,我可以看到這兩種語(yǔ)言的光明前景。在Jaxenter進(jìn)行的一項(xiàng)民意調(diào)查中,Dart以223票被選為您2019年列表中的第一語(yǔ)言。此外,在Stack Overflow進(jìn)行的一項(xiàng)調(diào)查中,Dart(66.3%)僅次于JavaScript(66.8%),成為2019年最受歡迎的編程語(yǔ)言。Dart在“Github State of the Octoverse”增長(zhǎng)最快的語(yǔ)言類別中也排名第一。

Github State of the Octoverse:https://octoverse.github.com/

StackOverflow

JavaScript vs Dart 兩者之間的比較

Jaxenter

Credits: GitHub

作為對(duì)新手開發(fā)人員,我建議您從JavaScript入手,并首先掌握它的基礎(chǔ)知識(shí)。你不一定需要成為JS專業(yè)人士,而是需要了解其基礎(chǔ)知識(shí)。完成后,你就可以轉(zhuǎn)入Dart,探索它的水域。這樣一來,你就可以不折不扣地熟悉這兩個(gè)巨人了。

 

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2019-10-21 08:44:54

操作系統(tǒng)GPUCPU

2014-03-10 17:06:21

Object C轉(zhuǎn)型C#

2016-07-08 14:41:28

云計(jì)算

2020-11-13 11:49:56

物聯(lián)網(wǎng)

2021-03-17 10:51:17

云計(jì)算邊緣計(jì)算IT技術(shù)

2011-10-20 15:56:07

Dart

2018-05-28 09:09:00

機(jī)器學(xué)習(xí)深度學(xué)習(xí)

2025-04-14 03:33:00

2013-10-11 09:58:33

iOS 6iOS 7UI設(shè)計(jì)

2020-04-10 21:02:51

人工智能

2010-03-23 17:44:10

Java Socket

2010-09-16 09:05:50

CSS display

2019-09-26 06:27:59

FTPSFTPTCP

2010-04-16 11:32:29

PGA和UGA

2022-12-01 11:23:51

5G通信技術(shù)

2009-03-03 12:54:58

2023-02-22 14:14:30

RPA聊天機(jī)器人

2022-03-11 08:00:00

編程語(yǔ)言JuliaPython

2010-02-06 14:40:50

C++初始化和賦值

2016-10-17 13:59:10

機(jī)器學(xué)習(xí)人工智能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)