介紹
有沒有想過為什么 JavaScript 這種專門用于操作 UI 元素的語言后來成為使用最廣泛的語言?它不再僅僅用于 UI 操作; JavaScript 現(xiàn)在被廣泛使用,從前端到后端開發(fā),再到機(jī)器學(xué)習(xí)等等。在本系列的課程中,我們將深入研究運(yùn)行時(shí),更具體地說是一些流行的 JavaScript 運(yùn)行時(shí),并探索這些工具如何使 JavaScript 能夠在我們的瀏覽器之外運(yùn)行。
JavaScript:起源和背景故事
20 世紀(jì) 90 年代中期,網(wǎng)絡(luò)還處于起步階段。每天都有越來越多的網(wǎng)站被托管,并且由于個(gè)人計(jì)算對(duì)大眾的可用性不斷增加,網(wǎng)絡(luò)正在以驚人的速度增長(zhǎng)。
當(dāng)時(shí),網(wǎng)絡(luò)主要是靜態(tài)的,沒有用戶交互。大多數(shù)人使用 AOL、Yahoo 和 Netscape Navigator 等網(wǎng)絡(luò)瀏覽器來瀏覽網(wǎng)絡(luò)。在這三種瀏覽器中,Netscape 在用戶和創(chuàng)新方面均處于領(lǐng)先地位。 Netscape 團(tuán)隊(duì)意識(shí)到,隨著網(wǎng)絡(luò)的發(fā)展,需要雙向交互。
為了滿足這一需求,他們于 1995 年 4 月聘請(qǐng)了 Brendan Eich 來創(chuàng)建一種新語言。擁有Scheme和其他編程語言背景的Eich在1995年5月僅用十天就開發(fā)出了JavaScript的第一個(gè)版本,然后為Netscape Navigator創(chuàng)建了JavaScript引擎。這一發(fā)展標(biāo)志著 Web 2.0 的開始。
JavaScript 引擎:為現(xiàn)代 Web 提供動(dòng)力
JavaScript 引擎只是一個(gè)解釋 JavaScript 代碼的計(jì)算機(jī)程序。引擎負(fù)責(zé)執(zhí)行代碼。第一個(gè) JavaScript 引擎是由 Brendan Eich 開發(fā)的,它只是一個(gè)解釋器?,F(xiàn)代 JavaScript 引擎已經(jīng)有了顯著的發(fā)展,現(xiàn)在使用 JIT(即時(shí))編譯等技術(shù)來實(shí)現(xiàn)更好的性能。在JIT編譯中,整個(gè)代碼會(huì)立即轉(zhuǎn)換為機(jī)器代碼,然后立即執(zhí)行。
每個(gè) JavaScript 引擎都包含兩個(gè)基本組件:調(diào)用堆棧和堆。調(diào)用堆棧是我們的代碼執(zhí)行的地方,堆是內(nèi)存中存儲(chǔ)我們應(yīng)用程序中所需的所有對(duì)象的地方。
Google 的 V8 引擎是第一個(gè)引入 JIT 編譯的引擎,并且改變了游戲規(guī)則。目前,它是使用最廣泛的引擎,被用于每個(gè)基于 Chromium 的 Web 瀏覽器、使用 Electron 框架構(gòu)建的應(yīng)用程序、Node.js 和 Deno 等運(yùn)行時(shí)系統(tǒng)以及嵌入 Chromium 的任何其他框架。
除了 V8 之外,還有其他著名的 JavaScript 引擎:
- SpiderMonkey - 用于 Firefox 及其分支。
- JavaScriptCore - 用于 Safari 瀏覽器和 Bun 運(yùn)行時(shí)系統(tǒng)。
JavaScript 運(yùn)行時(shí):運(yùn)行時(shí)到底是什么?
簡(jiǎn)而言之,運(yùn)行時(shí)是一個(gè)允許我們實(shí)時(shí)編譯或執(zhí)行代碼的系統(tǒng)。 JavaScript 運(yùn)行時(shí)本質(zhì)上是一個(gè)包裝器,包括 JavaScript 引擎、回調(diào)隊(duì)列和一組 API,提供執(zhí)行 JavaScript 代碼的環(huán)境。
我們知道 JavaScript 引擎對(duì)于執(zhí)行代碼至關(guān)重要,但為了使其有用,我們需要 API。這些 API 使我們的代碼能夠與網(wǎng)頁、網(wǎng)絡(luò)、數(shù)據(jù)庫和文件系統(tǒng)進(jìn)行交互。例如,Web 瀏覽器提供 Web API 來處理瀏覽器事件并與 DOM 交互,而 Node.js 提供用于 I/O 操作的 API。
現(xiàn)在我們已經(jīng)介紹了什么是運(yùn)行時(shí),讓我們來看看兩個(gè)最廣泛使用和備受推崇的 JavaScript 運(yùn)行時(shí)系統(tǒng),用于在服務(wù)器上運(yùn)行代碼
-
Node.js:
- Node.js 是一個(gè)開源、跨平臺(tái)的 JavaScript 運(yùn)行環(huán)境。
- 它在瀏覽器外部運(yùn)行 V8 JavaScript 引擎,這是 Google Chrome 的核心。這使得 Node.js 具有非常高的性能。
- Node 在其標(biāo)準(zhǔn)庫中提供了一組異步 I/O 原語,可防止 JavaScript 代碼阻塞。
-
Bun.sh:
- Bun 是一款專為提高速度而設(shè)計(jì)的一體化 JavaScript 運(yùn)行時(shí)和工具包,配有捆綁器、測(cè)試運(yùn)行器和與 Node.js 兼容的包管理器。
- 它擴(kuò)展了 JavaScriptCore,這是專為 Safari 構(gòu)建的注重性能的 JS 引擎。這使其成為最快的 JavaScript 運(yùn)行時(shí)。
- Bun 提供了一組最小的高度優(yōu)化的 API,用于執(zhí)行常見任務(wù),例如啟動(dòng) HTTP 服務(wù)器和寫入文件。
這就是本集的全部?jī)?nèi)容。在下一集中,我們將深入探討 Node.js 的起源及其用于構(gòu)建強(qiáng)大的服務(wù)器端應(yīng)用程序的核心 API。敬請(qǐng)期待!
以上是JavaScript 運(yùn)行時(shí):JavaScript 運(yùn)行時(shí)簡(jiǎn)介。的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)

在JavaScript中,選擇單行注釋(//)還是多行注釋(//)取決于注釋的目的和項(xiàng)目需求:1.使用單行注釋進(jìn)行快速、內(nèi)聯(lián)的解釋;2.使用多行注釋進(jìn)行詳細(xì)的文檔說明;3.保持注釋風(fēng)格的一致性;4.避免過度注釋;5.確保注釋與代碼同步更新。選擇合適的注釋風(fēng)格有助于提高代碼的可讀性和可維護(hù)性。

Java和JavaScript是不同的編程語言,各自適用于不同的應(yīng)用場(chǎng)景。Java用于大型企業(yè)和移動(dòng)應(yīng)用開發(fā),而JavaScript主要用于網(wǎng)頁開發(fā)。

JavascriptconcommentsenceenceEncorenceEnterential gransimenting,reading and guidingCodeeXecution.1)單inecommentsareusedforquickexplanations.2)多l(xiāng)inecommentsexplaincomplexlogicorprovideDocumentation.3)

評(píng)論arecrucialinjavascriptformaintainingclarityclarityandfosteringCollaboration.1)heelpindebugging,登機(jī),andOnderStandingCodeeVolution.2)使用林格forquickexexplanations andmentmentsmmentsmmentsmments andmmentsfordeffordEffordEffordEffordEffordEffordEffordEffordEddeScriptions.3)bestcractices.3)bestcracticesincracticesinclud

JavaScripthasseveralprimitivedatatypes:Number,String,Boolean,Undefined,Null,Symbol,andBigInt,andnon-primitivetypeslikeObjectandArray.Understandingtheseiscrucialforwritingefficient,bug-freecode:1)Numberusesa64-bitformat,leadingtofloating-pointissuesli

JavaScriptIspreferredforredforwebdevelverment,而Javaisbetterforlarge-ScalebackendsystystemsandSandAndRoidApps.1)JavascriptexcelcelsincreatingInteractiveWebexperienceswebexperienceswithitswithitsdynamicnnamicnnamicnnamicnnamicnemicnemicnemicnemicnemicnemicnemicnemicnddommanipulation.2)

JavaScript中的日期和時(shí)間處理需注意以下幾點(diǎn):1.創(chuàng)建Date對(duì)象有多種方式,推薦使用ISO格式字符串以保證兼容性;2.獲取和設(shè)置時(shí)間信息可用get和set方法,注意月份從0開始;3.手動(dòng)格式化日期需拼接字符串,也可使用第三方庫;4.處理時(shí)區(qū)問題建議使用支持時(shí)區(qū)的庫,如Luxon。掌握這些要點(diǎn)能有效避免常見錯(cuò)誤。

javascripthassevenfundaMentalDatatypes:數(shù)字,弦,布爾值,未定義,null,object和symbol.1)numberSeadUble-eaduble-ecisionFormat,forwidevaluerangesbutbecautious.2)
