在現(xiàn)代軟件開發(fā)中,JavaScript已成為一種廣泛使用的編程語言,在web前端開發(fā)、后端開發(fā)、移動應用端開發(fā)等領域中都有它的身影。在本文中,將從JavaScript語言為出發(fā)點,揭示這一語言及其相關生態(tài)中的一些基礎而關鍵的概念,以及它們是如何在互聯(lián)網(wǎng)歷史浪潮中產生的。
一
JavaScript與Node.js
1
JavaScript
JavaScript,即JS,一門高級的、解釋性的編程語言,與我們常用的C、C++這些編譯性語言相比,JavaScript特殊之處在于它是動態(tài)的解釋性語言,特征是在執(zhí)行時不需要提前編譯成機器碼,而是由解釋器逐行讀取并執(zhí)行。
雖然JavaScript名字帶Java,但在語言方面沒有直接關系,而是有一種間接的緣分。這個要從JavaScript開發(fā)的初衷講起。在以前沒有網(wǎng)頁腳本語言的時候,網(wǎng)頁所有的操作都要發(fā)送到服務器再返回,效率低下。所以需要一種嵌入到網(wǎng)頁的腳本語言,用來控制一些簡單的瀏覽器行為,比如在本地做一些檢查等。因此網(wǎng)景公司(Netscape)和Sun公司合作開發(fā)了一款叫LiveScript的瀏覽器腳本語言,后來正式發(fā)布時更名為JavaScript,而Sun公司正是Java語言的發(fā)明者和擁有者。
JavaScript借鑒了Java的部分語法,但是語法更加奔放自由,且其他方面也有很大區(qū)別,主要是兩者應用環(huán)境大有不同。
2
Node.js
Node.js是一個JavaScript的運行環(huán)境,用來執(zhí)行JavaScript代碼。
為什么會出現(xiàn)這么一個運行環(huán)境呢,從JavaScript研發(fā)初衷可以看出它是為了運行在瀏覽器中的,讓網(wǎng)頁交互更加便捷。但是隨著JavaScript影響力不斷壯大,它的使用范圍已經發(fā)生了變化。2009年,Node.js發(fā)布,初代版本支持基本的網(wǎng)絡通信和文件系統(tǒng)操作,這讓JavaScript可以到服務器上大展拳腳,標志著JavaScript可以用于服務器端編程。
Node.js中node是指一個節(jié)點,在這里我們可以用來形容一種環(huán)境,而后面.js則是代表這是針對JavaScript的,防止與其他的node項目混淆,但是隨著Node.js知名度越來越高,現(xiàn)在幾乎直接以node代指Node.js了。
Node.js的出現(xiàn)推動了JavaScript的全棧開發(fā),允許開發(fā)者使用同一種語言編寫前端和后端代碼。
Node.js除了提供JavaScript運行環(huán)境外,還提供了豐富的模塊庫,可以直接在開發(fā)時引入,使得開發(fā)更加高效和便捷。
Node.js采用了事件驅動、非阻塞式I/O模型,這意味著它可以在單線程上處理大量并發(fā)連接。傳統(tǒng)的服務端編程模型通常是多線程或多進程的,每個連接都需要一個獨立的線程或進程來處理,這在處理大量并發(fā)連接時會造成很大的性能損耗。而Node.js通過事件循環(huán)和回調函數(shù)的方式,實現(xiàn)了非阻塞式I/O操作,使得單個線程可以處理更多的并發(fā)連接,從而提高了整體性能。
3
JavaScript引擎與V8引擎
為什么Node.js能夠運行JavaScript呢,因為它里面內置了JavaScript V8引擎,這是一款由Google開發(fā)的引擎。
那什么是引擎呢?這里提到的引擎是指JavaScript引擎,簡單來說也就是能夠將Javascript代碼處理并執(zhí)行的運行環(huán)境,引擎包含了解釋器、編譯器等部分。
瀏覽器之所以能夠運行JavaScript,是因為每款瀏覽器都有自己的JavaScript引擎,具體如下:
可以看出,瀏覽器中嵌入JavaScript引擎,這是以前最常見的一種模式。直到Node.js的出現(xiàn),使得JavaScript能夠脫離瀏覽器發(fā)展,并且做到了跨平臺,使其能夠在不同的操作系統(tǒng)上運行。
二
Node.js的安裝與常用管理工具
本小節(jié)演示環(huán)境系統(tǒng)為ubuntu22.04,其他發(fā)行版Linux系統(tǒng)除命令有細微差別外,其余一致。
在開始操作之前,我們再簡單了解幾個與Node.js相關的概念,可以幫助我們更了解自己接下來的操作。
nvm:即Node Version Manager,根據(jù)名字很明顯可以看出,這是用來安裝和管理Node.js版本的。
npm:即Node Package Manager,我們之前提到過Node.js里面除了攜帶了V8引擎,還攜帶了很多模塊庫,npm則是負責管理這些功能模塊庫的,這些功能模塊也就是我們所說的項目依賴。目前版本的npm會隨著Node.js的安裝一同被安裝,所以非特殊情況不用單獨安裝。
1.使用nvm安裝和管理Node.js
官網(wǎng)提供了如何使用nvm來安裝Node.js,想深入了解可移步:https://nodejs.org/en/download/package-manager
下面將展示在ubuntu系統(tǒng)下進行安裝的簡單流程:
1.1 安裝nvm
使用如下命令安裝nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
如果你的網(wǎng)絡無法拉取github的內容,可以使用如下方法通過gitee來安裝nvm:
#先安裝gitsudoapt-getinstallgit#再安裝nvmcurl -o- https://gitee.com/RubyMetric/nvm-cn/raw/main/install.sh | bash
安裝完畢后,可以看到用戶目錄中多了.nvm文件夾。
安裝完畢后,可以重新打開終端或者運行以下命令來讓nvm立即生效:
source ~/.nvm/nvm.sh
nvm生效后,可以使用nvm -v命令來檢查nvm版本。
1.2 安裝Node.js
使用剛剛安裝的nvm來安裝Node.js,執(zhí)行如下命令,可以安裝最新的穩(wěn)定版Node.js:
nvm install node
若想安裝非最新版,而想指定版本進行安裝,使用如下命令,例如安裝16.20.2版本的Node.js:
nvm install 16
當然也可以安裝其他更多的版本,這些版本都會受到nvm管理,并且可以通過nvm來對這些版本進行操作,例如使用如下命令查看當前安裝的版本:
nvm list
通過下圖可以看到我們已經安裝了16和22版本的Node.js,下面是nvm工具中一些版本的別名,我們可以忽略。當前使用的版本是16.20.2版本。
如果想切換Node.js版本環(huán)境進行開發(fā),使用如下命令:
nvm use 22
下圖中可以看到已經切換為22版本了。
1.3 創(chuàng)建一個簡單的JavaScript程序
創(chuàng)建一個名為getUptime.js的JavaScript程序,簡單寫入一個功能,使用內置模塊功能獲取系統(tǒng)運行時間。
constos=require('os')//引入os模塊
constuptime=os.uptime()//獲取系統(tǒng)運行時間console.log(`system uptime: ${uptime} sec`)
保存后,使用如下命令執(zhí)行該文件:
node getUptime.js
得到如下輸出內容:
可以看到在這個簡單的操作中,Node.js扮演了很重要的角色,它不止能運行JavaScript程序,也給JavaScript提供了豐富的模塊庫。除了內置模塊外,Node.js還支持通過npm引入第三方模塊生態(tài)系統(tǒng),這些模塊可以為JavaScript提供幾乎無限的擴展能力。
關于Node.js小科普的上篇內容到這里就結束了。在下篇中,我們將圍繞Node.js項目開發(fā),簡單討論如何用npm構建項目結構、依賴管理等,也會提到如何使用pm2進行Node.js應用程序的進程管理。
-
服務器
+關注
關注
12文章
9123瀏覽量
85322 -
JAVA
+關注
關注
19文章
2966瀏覽量
104700 -
編程語言
+關注
關注
10文章
1942瀏覽量
34706
發(fā)布評論請先 登錄
相關推薦
評論