1. 程式人生 > 實用技巧 >node基礎知識介紹

node基礎知識介紹

文章目錄

node基礎知識介紹

node的核心概念之非阻塞I/O

訪問磁碟和網路這樣的I/O 請求會比較慢
所以我們希望,在讀取檔案或通過網路傳送訊息時,執行平臺不會阻塞業務邏輯的執行。
Node 用三種技術來解決這個問題:事件、非同步API、非阻塞I/O。在Node 程式設計師看來,非阻塞I/O 是個底層術語。它的意思是說,你的程式可以在做其他事情時發起一個請求來獲取網路資源,然後當網路操作完成時,將會執行一個回撥函式來處理這個操作的結果

同步式I/O是指: 執行緒在執行中如果遇到磁碟讀寫或網路通訊(統稱為 I/O 操作),通常要耗費較長的時間,這時作業系統會剝奪這個執行緒的 CPU 控制權,使其暫停執行,同時將資源讓給其他的工作執行緒,這種執行緒排程方式稱為阻塞 . 當 I/O 操作完畢時,作業系統將這個執行緒的阻塞狀態解除,恢復其對CPU的控制權,令其繼續執行。這種 I/O 模式就是通常的同步式 I/O(Synchronous I/O)或阻塞式 I/O (Blocking I/O)。

非同步式 I/O (Asynchronous I/O)或非阻塞式 I/O (Non-blocking I/O)則針對所有 I/O 操作不採用阻塞的策略。當執行緒遇到 I/O 操作時,不會以阻塞的方式等待 I/O 操作的完成或資料的返回,而只是將 I/O 請求傳送給作業系統,繼續執行下一條語句。當作業系統完成 I/O 操作時,以事件的形式通知執行 I/O 操作的執行緒,執行緒會在特定時候處理這個事件。為了處理非同步 I/O,執行緒必須有事件迴圈,不斷地檢查有沒有未處理的事件,依次予以處理。

單執行緒事件驅動的非同步式 I/O 比傳統的多執行緒阻塞式 I/O 究竟好在哪裡呢?
簡而言之,非同步式 I/O 就是少了多執行緒的開銷。對作業系統來說,建立一個執行緒的代價是十分昂貴的,需要給它分配記憶體、列入排程,同時線上程切換的時候還要執行記憶體換頁,CPU 的快取被清空,切換回來的時候還要重新從記憶體中讀取資訊,破壞了資料的區域性性

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-xeMwtRiU-1602996584113)(E:\凱文的前端部落格\框架部分images\node1.1.png)]

npm基本指令集

npm install packagename

安裝模組不指定版本號 預設會安裝最新的版本

npm install packagename 0.0.1

安裝指定版本的模組

npm install packagename --save 或 -S

–save、-S引數意思是把模組的版本資訊儲存到dependencies(生產環境依賴)中,即你的package.json檔案的dependencies欄位中;

npm install packagename -g 或 --global

安裝全域性的模組(不加引數的時候預設安裝本地模組)

npm install packagename --save-dev 或 -D

–save-dev 、 -D引數意思是吧模組版本資訊儲存到devDependencies(開發環境依賴)中,即你的package.json檔案的devDependencies欄位中;

npm uninstall packagename [options]

解除安裝已經安裝的模組,後面的options引數意思與安裝時候的意思一樣,與這個命令相同的還有npm remove 、npm rm、npm r 、 npm un 、 npm unlink 這幾個命令功能和npm uninstall基本一樣

npm outdated

這個命令會列出所有已經過時了的模組,

npm update [-g]

對於已經過時了的模組可以使用上面的命令去更新

npm update [包名稱]

-g]

對於已經過時了的模組可以使用上面的命令去更新

npm update [包名稱]

更新指定名稱的包s