自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

打工人最愛技能:JavaScript的未來會走向何方?

開發(fā) 前端
作為一個見證了過去17年編程語言發(fā)展的軟件開發(fā)者,筆者試圖在本文中對JavaScript進行一些預(yù)測。

 本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)

作為一個見證了過去17年編程語言發(fā)展的軟件開發(fā)者,筆者試圖在本文中對JavaScript進行一些預(yù)測。

[[353550]]

如今,JavaScript無處不在,不僅僅應(yīng)用在前端(瀏覽器)和后端(Node和Deno),也包括手機、電腦桌面軟件,甚至兩者的混合應(yīng)用。它已經(jīng)成為2020年求職人最想擁有的工作技能之一(根據(jù)StackOverflow的開發(fā)者調(diào)查)。

但為何會如此呢?這對JavaScript的未來又意味著什么?JavaScript的發(fā)展是否會順風順水?未來會不會有一個更新更好的語言誕生,從而推翻JavaScript無所不能的地位?本文將探討一下這些可能性。

 

是什么讓JavaScript如此受歡迎?

不管你是喜歡還是討厭,JavaScript的流行都是毋庸置疑的。根據(jù)TIOBE的流行指數(shù),在排名前十的語言中,JavaScript目前排在第七位。

 

打工人<span><span><span><i style=最愛技能:JavaScript的未來會走向何方?" src="https://p6-tt.byteimg.com/origin/pgc-image/6519126b4e644dda887649265c69a135?from=pc" width="1106" height="486">

 

根據(jù) StackOverflow的2020年開發(fā)者調(diào)查,最受歡迎的編程語言正是Java:

 

打工人<span><span><span><i style=最愛技能:JavaScript的未來會走向何方?" src="https://p1-tt.byteimg.com/origin/pgc-image/ab46cf1418634b39b8b944cb87c13127?from=pc" width="1106" height="458">

 

這些不是隨機數(shù)字或有偏見的民意調(diào)查,這些數(shù)據(jù)可以分析出我們的市場,對全球數(shù)以百萬計的開發(fā)者進行調(diào)查,一切都在表明JavaScript是2020年的熱門語言之一,對此你怎么看?

當然,這個問題可能有很多不同的答案,主要取決于你在挑選編程語言時看重什么,這是我的看法:

  • 背后有一個龐大的社區(qū)。

圍繞著這樣一個事實,發(fā)生了許多有趣的故事:JavaScript外部框架可能比實際開發(fā)者使用的更多。雖然這可能是一個夸張的說法(注意筆者這里說的是 "可能"),但這源于一個事實,那就是我們有這么多的人,試圖讓這門語言成為我們自己的語言,此舉貢獻巨大。這并不是一件壞事,證明了這是一個充滿生命力并不斷嘗試發(fā)展的社區(qū)。

當筆者不得不使用其他語言時,非常懷念的一件事是,人們可以從原社區(qū)中獲得大量的支持和幫助。這絕對是一個進步的標志,此舉還有待完善,并有望在未來取得更多的成就。

  • 適當?shù)陌l(fā)展方式。

撇開框架和庫不談,語言本身也在不斷發(fā)展。不過值得慶幸的是,這種改變并不是由一個實體控制的。

要澄清一下:雖然JavaScript本身(這個術(shù)語)是由Oracle所擁有的,但這門語言是要遵循ECMAScript的規(guī)范。而這些規(guī)范其實是由社區(qū)本身間接控制的,并由TC39委員會來監(jiān)管和組織。

通過考慮所有不同的建議以發(fā)展語言,并不斷運行直到語言足夠成熟。之后,如果想保持兼容的話,就由例行程序來實現(xiàn)這些更新,而且此后瀏覽器之間還存在紛爭。

作為一個開發(fā)者,必須努力保持在兼容性和標準的范圍內(nèi),因為你更希望你的代碼能跨瀏覽器兼容。現(xiàn)在情況已經(jīng)不是這樣了,所有的例行程序都在努力跟上ECMAScript的最新版本。

· 一個生機勃勃的生態(tài)系統(tǒng)。

這與第一點很像。有更多的前端框架可以嘗試,沒必要去學(xué)習(xí)所有的框架。每天僅NPM中分享的模塊就數(shù)以百萬計。

這給剛開始嘗試該編程語言的人制造了很多麻煩,但同時也吸引了更多的人加入,不同的框架和模塊最終都會達成同一件事,只是方式不同而已。而這些不同的方式有助于引起更多個人開發(fā)者的共鳴。畢竟,React、Vue和Angular都能幫助開發(fā)者創(chuàng)建同樣的APP,只需要選擇自己喜歡的那一款即可。

那么,綜合幾年前的情況以及它的發(fā)展歷程,你如何看待JavaScript的未來?

這絕對是一個很難回答的問題,先看看筆者的想法。

 

近期變化

在過去的幾年里,這門語言正在不斷發(fā)展。如果你是JavaScript的新手,也許還沒有注意到,從ECMAScript 第5版到第6版有一個質(zhì)的飛躍,在未來的版本中應(yīng)該也會發(fā)生許多改動。如果它繼續(xù)保持現(xiàn)在的路徑和發(fā)展速度的話,筆者認為不久之后它可能會這樣……

作為目標語言的JavaScript

即使JavaScript擁有令人驚嘆的社區(qū),為開發(fā)者提供工具和框架做了大量工作,卻仍然有很大一部分人沒有理由地討厭JavaScript。

是的,沒看錯,確實有人討厭它,或者至少不喜歡它的大塊頭,認為自己可以把它做得更好。于是,就有了CoffeeScript和后來的Dart以及現(xiàn)在的TypeScript這樣的項目。

這并不是壞事,事實上,這是一個非常好的機會,讓JavaScript不僅可以直接被全世界的開發(fā)者廣泛使用,還可以成為很多transpiler創(chuàng)造者的目標語言,試圖給開發(fā)者提供其他選擇。

本質(zhì)上,這場運動將為JavaScript打開大門,通向一個不同的浩瀚宇宙。自從Node.js進入市場并流行以來,JavaScript不再是 “前端語言”,允許公司簡化他們的技術(shù)堆棧去形成一個跨領(lǐng)域的單一語言。

想一想,如果你也能用Python或Ruby做到這一點,會發(fā)生什么?這并不是多么瘋狂的想法,過去已經(jīng)有項目試圖實現(xiàn)它,我們可能只是需要更多的時間。

前端開發(fā)的問題(筆者認為這是唯一的問題)是,你需要學(xué)習(xí)JavaScript才能進行工作。這與后端世界完全相反。目前,瀏覽器只允許一種語言為王,那就是JavaScript,如果想要更多的語言,就必須把你的代碼編譯(或者說是移植)成JavaScript。

當然,還有WebAssembly,如果他們有更多的能力去訪問其他領(lǐng)域,如DOM,它很可能會取代JavaScript。但現(xiàn)在它只能在一個非常狹窄的領(lǐng)域發(fā)揮作用:前端的大量計算。這是一個性能工具,而不是一個完全獨立的前端開發(fā)環(huán)境。

 

演變的例子

JavaScript發(fā)展到現(xiàn)在的另一個方式是通過社區(qū)開發(fā)的框架看到社區(qū)的需求。如果你已經(jīng)使用JavaScript有一段時間了,特別是從ECMAScript 5開始,你可能會記得lodash和underscore等庫。

對項目來講,這些庫都是必要的,因為它們?yōu)檎Z言增加了額外的功能,如map、some、find、reduce、get、set、merge等方法。雖然在最近的更新中,有些功能已經(jīng)滲透進語言本身,但這些庫依舊有存在的必要性。

比如ECMAScript 6,增加了很多數(shù)組方法,給編程算法帶來了相當大的提升??蛇x鏈使得 get 方法被淘汰,或者說幾乎被淘汰。傳播操作符也幾乎淘汰了merge 方法,而這個列表還在繼續(xù)更新。一個功能越是流行,TC39委員會就越會嘗試將其納入到語言中。

另一個明顯的例子是如何引入類。JavaScript試圖在一個面向使用者的世界中保持初心,但它失敗了。要么是因為沒有足夠的擁護者,要么是因為沒有正確的文檔化。但是有那么多的開發(fā)者試圖強行在上層建立一個OOP模型,于是最終在上層添加了一個薄薄的OOP層。

起初這很浮于表面,但隨著不久之后私有字段的加入,它正在慢慢演變成一個更成熟的模型。道阻且長,這只是語言演變的一個例子,說明這門語言是如何發(fā)展的,盡管違背了它的初衷,但開發(fā)者社區(qū)的力量在支持它。

最后一個新增的框架是Svelte框架,它試圖將反應(yīng)性的概念帶入語言本身,不像其他框架,比如React,它反而試圖為開發(fā)者提供工作方法,將JavaScript還沒有準備好的概念強加給他們。

使用Svelte框架,可以編寫這樣的代碼:

 

 

 

  1. <script> 
  2.          let count =0; 
  3.             functionhandleClick() { 
  4.              count +=1; 
  5.          } 
  6. </script> 
  7.              <buttonon:click={handleClick}> 
  8.          Clicked {count} {count ===1?'time':'times'
  9.     </button> 

有一個按鈕,點它標簽值就會更新。當然,目前這需要編譯成實際的JavaScript,你估計需要多長時間才能將類似的例子吸收到合適的ECMAScript規(guī)范中?

責任編輯:華軒 來源: 讀芯術(shù)
相關(guān)推薦

2021-02-25 15:47:08

IT

2020-11-03 21:11:39

IT

2018-03-05 16:07:38

智能攝像機

2015-11-12 11:01:11

數(shù)據(jù)中心數(shù)據(jù)中心發(fā)展

2019-01-07 05:01:37

2020-12-26 16:59:10

鯤鵬

2021-12-02 09:38:53

數(shù)字貨幣貨幣美元

2010-02-07 11:25:20

2013-07-12 12:37:53

云存儲云計算

2015-06-29 11:11:33

谷歌眼鏡未來可穿戴

2022-03-30 06:08:54

漏洞管理漏洞網(wǎng)絡(luò)攻擊

2018-12-06 09:55:38

區(qū)塊鏈數(shù)字貨幣互聯(lián)網(wǎng)

2022-04-15 19:48:49

上海疫情居家辦公

2023-07-18 10:13:39

2013-07-29 17:28:22

移動應(yīng)用市場亂象移動開發(fā)

2020-02-04 10:31:30

互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)

2020-11-13 14:52:34

Python 微軟編程語言

2023-06-05 13:21:49

新華三

2012-03-05 09:13:37

NFS服務(wù)器網(wǎng)絡(luò)文件系統(tǒng)

2019-12-05 09:34:29

KubernetesHPA集群
點贊
收藏

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