介紹
有沒(méi)有想過(guò)為什麼 JavaScript 這種專(zhuān)門(mén)用來(lái)操作 UI 元素的語(yǔ)言後來(lái)成為使用最廣泛的語(yǔ)言?它不再只是用於 UI 操作; JavaScript 現(xiàn)在被廣泛使用,從前端到後端開(kāi)發(fā),再到機(jī)器學(xué)習(xí)等等。在本系列的課程中,我們將深入研究運(yùn)行時(shí),更具體地說(shuō)是一些流行的 JavaScript 運(yùn)行時(shí),並探索這些工具如何使 JavaScript 能夠在我們的瀏覽器之外運(yùn)行。
JavaScript:起源與背景故事
20 世紀(jì) 90 年代中期,網(wǎng)路仍處?kù)镀鸩诫A段。每天都有越來(lái)越多的網(wǎng)站被託管,由於個(gè)人運(yùn)算對(duì)大眾的可用性不斷增加,網(wǎng)路正在以驚人的速度增長(zhǎng)。
當(dāng)時(shí),網(wǎng)路主要是靜態(tài)的,沒(méi)有使用者互動(dòng)。大多數(shù)人使用 AOL、Yahoo 和 Netscape Navigator 等網(wǎng)頁(yè)瀏覽器來(lái)瀏覽網(wǎng)頁(yè)。在這三種瀏覽器中,Netscape 在用戶(hù)和創(chuàng)新方面均處?kù)额I(lǐng)先地位。 Netscape 團(tuán)隊(duì)意識(shí)到,隨著網(wǎng)路的發(fā)展,需要雙向互動(dòng)。
為了滿(mǎn)足這一需求,他們於 1995 年 4 月聘請(qǐng)了 Brendan Eich 來(lái)創(chuàng)建一種新語(yǔ)言。擁有Scheme和其他程式語(yǔ)言背景的Eich在1995年5月僅用十天就開(kāi)發(fā)出了JavaScript的第一個(gè)版本,然後為Netscape Navigator創(chuàng)建了JavaScript引擎。這一發(fā)展標(biāo)誌著 Web 2.0 的開(kāi)始。
JavaScript 引擎:為現(xiàn)代 Web 提供動(dòng)力
JavaScript 引擎只是一個(gè)解釋 JavaScript 程式碼的電腦程式。引擎負(fù)責(zé)執(zhí)行程式碼。第一個(gè) JavaScript 引擎是由 Brendan Eich 開(kāi)發(fā)的,它只是一個(gè)解釋器。現(xiàn)代 JavaScript 引擎已經(jīng)有了顯著的發(fā)展,現(xiàn)在使用 JIT(即時(shí))編譯等技術(shù)來(lái)實(shí)現(xiàn)更好的效能。在JIT編譯中,整個(gè)程式碼會(huì)立即轉(zhuǎn)換為機(jī)器碼,然後立即執(zhí)行。
每個(gè) JavaScript 引擎都包含兩個(gè)基本元件:呼叫堆疊和堆疊。呼叫堆疊是我們的程式碼執(zhí)行的地方,堆是記憶體中儲(chǔ)存我們應(yīng)用程式中所需的所有物件的地方。
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 執(zhí)行時(shí)間系統(tǒng)。
JavaScript 運(yùn)行時(shí):運(yùn)行時(shí)到底是什麼?
簡(jiǎn)而言之,運(yùn)行時(shí)是一個(gè)允許我們即時(shí)編譯或執(zhí)行程式碼的系統(tǒng)。 JavaScript 執(zhí)行階段本質(zhì)上是一個(gè)包裝器,包括 JavaScript 引擎、回呼佇列和一組 API,提供執(zhí)行 JavaScript 程式碼的環(huán)境。
我們知道 JavaScript 引擎對(duì)於執(zhí)行程式碼至關(guān)重要,但為了使其有用,我們需要 API。這些 API 使我們的程式碼能夠與網(wǎng)頁(yè)、網(wǎng)路、資料庫(kù)和檔案系統(tǒng)互動(dòng)。例如,Web 瀏覽器提供 Web API 來(lái)處理瀏覽器事件並與 DOM 交互,而 Node.js 提供用於 I/O 操作的 API。
現(xiàn)在我們已經(jīng)介紹了什麼是運(yùn)行時(shí),讓我們來(lái)看看兩個(gè)最廣泛使用和備受推崇的 JavaScript 運(yùn)行時(shí)系統(tǒng),用於在伺服器上運(yùn)行程式碼
-
Node.js:
- Node.js 是一個(gè)開(kāi)源、跨平臺(tái)的 JavaScript 運(yùn)作環(huán)境。
- 它在瀏覽器外部運(yùn)行 V8 JavaScript 引擎,這是 Google Chrome 的核心。這使得 Node.js 具有非常高的效能。
- Node 在其標(biāo)準(zhǔn)函式庫(kù)中提供了一組非同步 I/O 原語(yǔ),可防止 JavaScript 程式碼阻塞。
-
Bun.sh:
- Bun 是一款專(zhuān)為提高速度而設(shè)計(jì)的一體化 JavaScript 執(zhí)行時(shí)間和工具包,配有捆綁器、測(cè)試運(yùn)行器和與 Node.js 相容的套件管理器。
- 它擴(kuò)展了 JavaScriptCore,這是專(zhuān)為 Safari 構(gòu)建的注重效能的 JS 引擎。這使其成為最快的 JavaScript 運(yùn)行時(shí)。
- Bun 提供了一組最小的高度最佳化的 API,用於執(zhí)行常見(jiàn)任務(wù),例如啟動(dòng) HTTP 伺服器和寫(xiě)入檔案。
這就是本集的全部?jī)?nèi)容。在下一集中,我們將深入探討 Node.js 的起源及其用於建立強(qiáng)大的伺服器端應(yīng)用程式的核心 API。敬請(qǐng)期待!
以上是JavaScript 執(zhí)行時(shí)期:JavaScript 執(zhí)行階段簡(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脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門(mén)文章

熱工具

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

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

禪工作室 13.0.1
強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話(huà)題

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

Java和JavaScript是不同的編程語(yǔ)言,各自適用於不同的應(yīng)用場(chǎng)景。 Java用於大型企業(yè)和移動(dòng)應(yīng)用開(kāi)發(fā),而JavaScript主要用於網(wǎng)頁(yè)開(kāi)發(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開(kāi)始;3.手動(dòng)格式化日期需拼接字符串,也可使用第三方庫(kù);4.處理時(shí)區(qū)問(wèn)題建議使用支持時(shí)區(qū)的庫(kù),如Luxon。掌握這些要點(diǎn)能有效避免常見(jiàn)錯(cuò)誤。

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