Node.js入門教程 第一篇 (概念原理及環境配置)

注:爲了本教程的準確性,部分描述引用了官網及網絡內容。前端

Node.js 概念

Node.js本質上是使用Google的V8引擎製做出來的服務框架。V8自己是Google爲了解決Chrome瀏覽器的性能問題而製做的前端引擎(開源)。自己依託於瀏覽器引擎,這也是爲何Node.js使用的是前端的JavaScript語言編程。node

V8的誕生是Google爲了解決JavaScript的性能問題,用了內聯緩存和隱藏類技術實現的前端引擎。V8使用C++編寫,也所以V8能夠在C++項目中完美兼容使用。express

V8被Google使用在大多數產品中,如Chrome瀏覽器,安卓瀏覽器等。npm

V8引擎在不斷升級,Node.js自己也在不斷更新,在下載Node.js安裝包時就攜帶對應版本的V8引擎。若須要查看V8版本,在CMD中輸入:編程

1 node -p process.versions.v8

如須要查看Node.js的版本,輸入:瀏覽器

1 node -v

 

Node.js基礎原理

在Node.js中最主要的特性,即事件驅動與非阻塞I/O都與其底層的特殊實現有關。在Node.js的底層有一個事件輪循器(Event Loop)。每當有事件註冊時,會先將事件放置到事件隊列(Event Queue),並經過事件輪循器順序執行事件隊列。當輪循到一個事件時,事件輪循器會爲其分配一個工做線程(Worker Threads)執行該事件,事件完成後經過執行回調(Callback)返回到事件列表並經過V8引擎傳遞給應用(Application)。緩存

其詳細步驟爲:服務器

一、應用層發出請求給V8網絡

二、V8經過Node.js的中間層(Bindings)傳遞給底層(Libuv)框架

三、在Libuv層中,請求會按順序放置在事件隊列(Event Queue)

四、事件輪詢器(Event Loop)依次爲事件隊列中的事件分配工做線程(Worker Threads)

五、工做線程完成事件,並經過執行回調(Callback)返回事件列表

六、事件的執行結果經過中間層及V8返回給應用

在應用層中,發送請求後會繼續執行應用層後續代碼,而不須要等待事件的完成,因此是異步處理。事件處理完成後經過回調返回到應用。整個過程只由一個主線程完成,所以不存在死鎖、等待的狀況。

這就是Node.js的事件驅動與I/O非阻塞的實現原理。

 

其中,V8是Node.js依賴的核心庫,而Bindings層及Libuv層是Node.js中用C++寫的原創底層。

最上層的standard library是用JavaScript寫的Node.js基礎庫。裏面有各類經常使用的API,如:http模塊、fs模塊等。咱們實際中最經常使用的就是standard library層。

  

其餘概念

npm是Node.js的包管理工具,能夠經過npm下載已有的第三方包到本身的項目中,也能夠上傳本身代碼給別人使用。npm會隨Node.js的安裝包一併安裝。

查看npm版本:

1 npm -v

其餘經常使用的npm命令:

1 npm view XX version 查看版本(如:npm view express version)
3 npm install XX --save 安裝包
5 node XX.js 啓動一個服務入口(如:node index.js)
7 npm run dev 啓動客戶端 npm run build 啓動發佈

REPL(交互式解釋器)能夠輸入代碼實時執行,用以測試JavaScript代碼塊。主要用在Linux等非圖像界面服務器的代碼調試場景中。

 

安裝Node.js

1.下載node.js :https://nodejs.org/en/download/

2.安裝完成後,環境變量會在安裝過程當中自動設置好。若使用的是zip壓縮版解壓的node.js,則需手動配置環境變量Path:

 

 3.打開cmd,命令行:「node --version」檢查Node.js版本,顯示正確的版本號即安裝成功。

 4.配置npm源(重要

--全局配置切換到淘寶源(推薦此項,由於外網鏈接不穩定):

 命令行: npm config set registry https://registry.npm.taobao.org 

--全局配置切換到官方源:

 命令行: npm config set registry http://www.npmjs.org 

--查看當前源:

 命令行: npm config get registry 

相關文章
相關標籤/搜索