首頁»JavaScript»為什么 JavaScript 會無處不在?

為什么 JavaScript 會無處不在?

來源:infoq 發布時間:2019-05-23 閱讀次數:

  首先,我并不是一名開發人員。

  幾年前,我甚至都分不清什么是后端開發、什么是前端開發。Vue、React、Node……它們都是什么東西?

  我根本無法理解為什么 JavaScript 會無處不在,為什么它會這么重要。

  我知道我并不是唯一一個感到如此疑惑的人。不管是你是一名開發新手,還是一個需要與開發人員緊密合作的人,都會感到很茫然。

  因為工作的關系,我每天需要與開發人員待在一起,時間長了,我對這個問題才開始有了一絲了解。

  我將在這篇文章中嘗試回答下面這些問題:

  • 什么是 JavaScript?

  • 為什么 JavaScript 這么重要?

  • 我們為什么要使用 JavaScript?

  • JavaScript 的未來會怎樣?

 什么是 JavaScript?

  當一個人在面對新鮮事物時,通常會先在維基百科上搜索它的定義。如果你搜索 JavaScript,就會得到這樣的描述:

  我們可以從這些信息知道,JavaScript 是一門客戶端編程語言。現在,我們假設只知道 JavaScript 是一個用于給網站添加交互性的工具。

  瀏覽器需要三個東西才能讓我們看到網頁上呈現的內容:

  • 用于結構化內容的 HTML;

  • 用于給內容添加樣式的 CSS;

  • 讓內容活起來的 JavaScript。

  它們看起來似乎很簡單,但請相信我,這里涉及的東西可不止這么多。

  JavaScript 簡史

  要想知道我們現在在哪里以及未來要到哪里去,首先需要了解我們是從哪里來的。JavaScript 走過了一條漫長且崎嶇的道路。

  JavaScript 最早可以追溯到 1995 年,第一個 JavaScript 版本誕生于 Netscape 辦公室里。1995 年……我們可以想象一下當時的 Web 世界是多么的不同!當時我才三歲,相信很多讀者那個時候都還沒出生。Netscape 公司本身就是一個很遙遠的記憶。

  但在那個時候,Netscape 的 Navigator 是最為流行的瀏覽器之一。這家公司開發了 JavaScript,作為 Java 的伙伴編程語言。他們想要一門看起來像 Java、同時又能壓制其他原本也可以在瀏覽器上運行的其他語言(如 Python、Tcl、Scheme,等等)。

  那個時候,Web 上都是完全靜態的網頁,這些網頁使用 HTML 和 CSS 構建,而 JS 給它們帶來了動態性。

 

  開發 JavaScript 這門語言的最初目標是要讓 Web 成為一個全能的應用程序平臺,也就是說,JavaScript 既可以運行在客戶端,也可以運行在服務器端。但這個想法并沒有取得成功,因為過了很多年之后才有人愿意拿它當成一門服務器端編程語言看待。不管怎樣,JavaScript 還是在前端領域得到了蓬勃發展,成為 Web 的標準編程語言。

  在 Navigator 壽終正寢之后,其他 Web 瀏覽器(從 IE 到 Firefox,再到 Chrome)接過了接力棒。

  JavaScript 的出現太匆忙,在早期出現了各種奇怪的阻力,對語言的采用造成了阻礙。但因為其自身具備了強大的特性,這些阻力并沒能阻止它的發展。

  接下來,ECMA 標準出現了,它將 JavaScript 帶給了更加廣大的受眾和其他潛在的實現者,比如微軟。

  如果想繼續了解 JavaScript 的歷史,可以閱讀這篇文章(https://auth0.com/blog/a-brief-history-of-javascript/)。

 為什么我們需要 JavaScript?

  為什么 Netscape 要開發一門新的語言,光是有 Java 還不夠嗎?

  在當時看來,Java 并不適合所有的 Web 開發受眾,比如腳本編寫人員、業余愛好者和設計人員。

  隨著 JavaScript 到來,它有可能可以滿足不同的受眾。組件開發者和企業級專業開發人員使用 Java,腳本編寫人員和設計人員可以使用 JavaScript。在現代 Web 開發團隊中,后者被稱為前端開發者。

  這門語言之所以叫作 JavaScript,是為了趕上 Java 的那一波流行浪潮,以便加速語言的采用。在現在看來,這兩門語言之間其實找不到太多的相似之處。

  正如之前所提到的,JavaScript 給 Web 帶來了動態特性。那么這意味著什么呢?每次你在網頁上看到的以下這些東西都離不開 JavaScript:

  • 自動完成;

  • 在不重新刷新整個頁面的情況下加載新的內容和數據;

  • 翻轉效果和下拉菜單;

  • 元素動畫效果,比如漸褪、縮放大小或移動;

  • 播放音頻和視頻;

  • 驗證表單數據;

  • 等等……

  JavaScript 是一門直接被嵌入到 HTML 中的腳本語言。這也是唯一一門可以被 Web 瀏覽器理解的語言。瀏覽器讀取 JavaScript,然后解析它,運行它,由此創建強大的客戶端體驗。

從 2017 年開始,現代瀏覽器也支持 WebAssembly。WebAssembly 是一門可以與 JavaScript 一起運行的現代語言。

  JavaScript 之所以能夠達到今天的狀態,是因為它是開放且標準化的,最重要的是——不管你同意與否——它是一門非常好的語言。它的動態特性和 DOM 的緊密集成非常適合 Web 環境。

  JavaScript 也可以與其他語言兼容,這對于運行其他語言(如 PHP、Python、Ruby、Java 或.NET)的 Web 服務器來說是非常重要的。因為運行在瀏覽器中的 JavaScript 與如何生成 HTML 是 100% 分離的,不管服務器端使用了是什么語言,都不會影響用戶的體驗。

 為什么 JavaScript 這么重要?

  雖然一直以來 JavaScript 都是一門運行在瀏覽器上的語言,但在一開始并沒有得到開發社區共同認可。即使是 JavaScript 之父 Brendan Eich 在 2008 也曾經說過一些“中傷”JavaScript 的話:

很多人詛咒 JavaScript,包括我自己在內。我仍然把它看成是一個 C 語言和 Self 的“怪胎”兒子。用 Johnson 博士的話說就是:“好的部分不是原創的,而原創的部分并不好”。

  但十多年后,JavaScript 以前所未有的面貌展現在我們面前,它已經變得無處不在。

  為什么會這樣?

  要想知道這個問題的答案,我們需要先看看構建在 JavaScript 之上的生態系統。

  那么到底是 JavaScript 的強大促成了這個蓬勃發展的生態系統,還是生態系統讓 JavaScript 進一步演化,并成為一門更加不可或缺的語言?

  或許,我們應該把這場“JavaScript 革命”歸功于 ECMAScript 6(ECMAScript 2015)的發布。ES6 增加了新的語法,可用來開發復雜的應用程序,還有很多其他特性可以被視為下一代 JavaScript。

  總之,活躍的開發社區和 Web 的崛起將 JavaScript 推向了風口浪尖。

 現在的前端開發都在使用哪些語言

  在很長一段時間內,網站份額被基于 PHP 的 CMS(比如 WordPress)所占據。服務器端的代碼負責處理大部分邏輯。但這種情況正在發生變化,你可能聽說過“靜態”網站又回來了,但它們絕對與 90 年代所謂的靜態生成網站不一樣。

  現代瀏覽器可以讓這些內容變得可交互和完全動態化。因為有了 JavaScript,可以直接在客戶端,也就是瀏覽器中處理邏輯。

  現在的一些知名的 Web 應用程序就是使用 JS 開發的。想想 Facebook、Gmail、Twitter,等等。如果沒有了 JavaScript,這些應用程序就不會那么有吸引力了。

  這些科技巨頭還開發了自己的 JavaScript 框架,然后其他成千上萬的開發者基于這些框架開發自己的 Web 應用程序。你可能聽說過由谷歌開發的 Angular 和由 Facebook 開發的 React。這里還需要提一下 Vue,雖然它不是由哪個科技巨頭公司開發的,但它是主流 JS 框架生態圈不可或缺的部分。

  這些框架不僅幫助開發者減少用于開發基于 JS 的網站和應用程序的時間和工作量,它們還帶來了新的 Web 體驗。以單頁應用程序(SPA)為例,SPA 可以在不刷新整個頁面的情況下動態加載部分內容,讓網頁看起來就像是桌面應用程序。

  多面手

  或許,JavaScript 主要還是被用在前端開發當中。但在 2019 年,JavaScript 可以做的事情會更多。

  服務器端

  在最開始,人們嘗試在服務器端運行 JavaScript,但并沒有取得成功。很多人認為 JavaScript 不太可能成為一門穩定的后端開發語言,直到 Node.js 的出現。

  現如今,JS 運行時已經成為非常流行的 Web 服務器工具。這意味著 JS 開發人員可以借助 Node.js 來開發客戶端和服務器端代碼,而不需要依賴外部的 Web 服務器。

  移動 App

  在過去,我們需要使用其他編程語言來開發移動 App,比如使用 Objective-C 開發 iOS 應用,使用 Java 開發 Android 應用。現在比以往更容易使用 JavaScript 來連接移動 API,也就是說,你可以通過 JavaScript 調用移動設備的功能,比如攝像頭。

  這為更為廣大的開發者打開了開發移動 App 的大門,而他們無需為此學習新的編程語言。

  除此之外,使用 JavaScript 開發移動 App 也在性能方面帶來了更多可能性。以漸進式 Web App(PWA)為例,因為組合了最好的 Web 特性和最好的 App 特性,PWA 改進了可靠性、性能和粘性。它們還帶來了一些令人印象深刻的新功能,比如離線瀏覽。

  API 集成

  開發者可以使用 JavaScript 從其他數據源獲取數據,并展示在自己的網站上。模塊化是 Web 開發領域很受重視的一個概念——使用不同的工具執行特定的任務。因為有了 API 和 JavaScript,現在可以很容易就構建出這種技術棧。

 為什么要使用 JavaScript?

  這個問題的另一種問法是:JavaScript 給我們帶來了什么好處?

  JavaScript 的好處

  • 在客戶端執行邏輯帶來了更快的用戶體驗。因為代碼可以直接運行在瀏覽器中,減少了服務器端調用,極大了減少了加載時間。即使需要調用服務器,因為 JS 是異步的,所以可以在后臺與服務器通信,而不會中斷前端正在發生的用戶交互。

  • 在一開始,JavaScript 就將用戶界面交互性帶到了 Web 上。現在,它也為所有類型的應用程序帶來了這種交互性。

  • JavaScript 是各種響應式 Web 設計背后的功臣。越來越多的開發者需要為不同的瀏覽器和設備適配他們的設計,通過組合 HTML5、CSS3 和 JavaScript,他們可以在同一個代碼庫中完成所有的事情。

  • 對于開發者來說,JavaScript 簡單易學,而且可以很快上手開發。它的語法很簡單,也很靈活,可以簡化復雜應用程序的開發工作。很多現成的框架和包讓開發人員的開發工作變得更容易。

  • JavaScript 非常流行,如果說流行程度并不能與高質量劃上等號,但至少可以說明一件事情:你可以在社區里為你遇到的問題找到解決辦法。況且,如果你想招聘 JavaScript 開發人員,可以很容易就招到,因為有很多候選人等在那里。

  但 JavaScript 并不完美,它也有一些潛在的不足。

  JavaScript 的潛在不足

  • 搜索引擎究竟能夠爬取 JavaScript 到什么程度?這個問題目前尚不清楚。但這個問題并非沒有解決辦法,一些爬蟲在遇到 JavaScript 時已經知道如何處理了。

  • JavaScript 膨脹。項目中包含太多的 JavaScript 最終會造成性能問題。解決這個問題的方法是只在需要的地方插入 JavaScript 代碼,而不是把它們搞得到處都是。

  • JavaScript 生態系統中的包可以讓開發人員在不重新發明輪子的情況下快速完成開發工作,但這也帶來了“依賴項地獄“問題。

 JavaScript 的未來

  現在,我們可以暢想一下 JavaScript 的未來,以及我們可以從中期待些什么。

  JavaScript 和它的生態系統會繼續演化發展。我個人認為,在未來,新的工具會逐漸減少,但大頭玩家會變得更加成熟,并得到更廣泛的采用。我們已經在 JS 框架方面看到了這一點,React 和 Vue 正在成為主角。

  其他框架也是如此,Gatsby、Next.js 和 Nuxt 正逐步成為領先的靜態網站和 PWA 生成器。

  TypeScript 可能會扮演重要的角色。TypeScript 是 JavaScript 的超集,已經被社區大規模采用。

  在未來,科技世界有很多東西會對前端開發造成重要影響,比如人工智能和物聯網。JavaScript 將會被應用在新的領域。

  最后,如果你想在這個領域站穩腳跟,請不要停下學習新事物的腳步!

  查看英文原文:https://snipcart.com/blog/why-javascript-benefits

QQ群:WEB開發者官方群(515171538),驗證消息:10000
微信群:加小編微信 849023636 邀請您加入,驗證消息:10000
提示:更多精彩內容關注微信公眾號:全棧開發者中心(fsder-com)
網友評論(共0條評論) 正在載入評論......
理智評論文明上網,拒絕惡意謾罵 發表評論 / 共0條評論
登錄會員中心
买马稳赚秘诀