如下是正文。node
引擎的特性:git
JS的內核即引擎。由於引擎有如下特性:github
(1)轉化的做用:web
汽油柴油等等->動能express
模板+數據--->頁面npm
js引擎:js 代碼--->機器碼\字節碼segmentfault
(2)移植性。windows
有哪些引擎:瀏覽器
備註:Node是用V8引擎去解析 js,此時,咱們不用去考慮瀏覽器的兼容性問題。
一、官方解釋:
Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境。 Node.js使用了一個事件驅動、非阻塞式I/O的模型( Node.js的特性),使其輕量級又高效。 Node.js 的包管理器 nmp 是全球最大的開源庫生態系統。
如上圖所示:
Node 內部採用 Google Chrome 的 V8 引擎,做爲 JavaScript 語言解釋器;
經過自行開發的 libuv 庫,調用操做系統資源。
二、非官方解釋:
Node.js:是 JavaScript 語言在服務器端的運行環境(平臺)。
三、運行環境(平臺)的含義:
首先,JavaScript 語言經過 Node 在服務器運行,在這個意義上,Node 有點像 JavaScript 虛擬機。
其次,Node 提供大量工具庫,使得 JavaScript 語言能與操做系統互動(好比讀寫文件、新建子進程),在這個意義上, Node 又是 JavaScript 的工具庫。
總結:
Node.js 是一個 JavaScript 的運行環境(平臺),不是一門語言,也不是 JavaScript 的框架。
2008年左右,隨着 AJAX 的逐漸普及,Web 開發逐漸走向複雜化,系統化;
2009年2月,Ryan Dahl 想要建立一個輕量級,適應現代 Web 開發的平臺;
2009年5月,Ryan Dahl 在 GitHub 中開源了最第一版本,同年11月,JSConf 就安排了 Node 講座;
2010年末,Joyent 公司資助,Ryan Dahl 也加入了該公司,專門負責 Node 的開發;
2011年7月,在微軟的支持下登錄 Windows 平臺。PS:node 的生產環境基本是在 Linux 下。
據 Node.js 創始人 Ryan Dahl 回憶,他最初但願採用 Ruby,可是 Ruby 的虛擬機效率不行。
注意:是 Node 選擇了 JavaScript,不是 JavaScript 發展出來了一個 Node。
如下幾個項目都用到了 Node:
還有如下幾個網站:
LinkedIn移動版From RoR to Node.js, base on Joyent
Paypal From Java to Node.js
Twitter的隊列:收集須要保存的Tweets,傳給負責寫入的進程
知乎的推送
網易、阿里、各類創業團隊等
RESTFul API
實時通訊:如消息推送等
高併發
I/O阻塞
express:Node.js中最有名的web服務器框架。
PM2:node 原本是單進程的,PM2能夠實現和管理多進程。
jade:很是優秀的模板引擎,不只限於 js 語言。
CoffeeScript:用簡潔的方式展現 JavaScript 優秀的部分。
Atom:文本編輯器。
socket.io:實時通訊框架。
mocha:功能強大的 node.js 測試框架。
去 Node.js 的官網下載安裝包:
咱們也能夠在https://nodejs.org/en/download/releases/上下載歷史版本。
注意,咱們以必定要用偶數版(V四、V6等),不要用奇數版(好比V5),由於奇數版不穩定。
咱們並不推薦直接採用 Node.js.msi 安裝包進行安裝,不方便 node 的更新,緣由以下:
之前版本安裝的不少全局的工具包須要從新安裝;
沒法回滾到以前的版本;
沒法在多個版本之間切換(不少時候咱們要使用特定版本)。
所以,咱們暫時先不用安裝 Node.js,稍後用 NVM 的方式來安裝 Node.js。
NVM:node.js version manager,用來管理 node 的版本。安裝的步驟以下。
(1)咱們去官網下載 NVM 的安裝包:
下載下來後,直接解壓到 D:\web
目錄下:
(2)在上面的目錄中,新建一個settings.txt
文件,裏面的內容填充以下:
root: D:\web\nvm path: D:\web\nodejs arch: 64 proxy
上方內容的解釋:
root 配置爲:當前 nvm.exe 所在的目錄
path 配置爲:node 快捷方式所在的目錄
arch 配置爲:當前操做系統的位數(32/64)
proxy 不用配置
(3)配置環境變量:
NVM_HOME
= D:\web\nvm
(當前 nvm.exe 所在目錄)
NVM_SYMLINK
= D:\web\nodejs
(node 快捷方式所在的目錄)
PATH += ;%NVM_HOME%;%NVM_SYMLINK%
配置成功後,重啓資源管理器。
驗證:(在 cmd 中輸入命令)
(1)輸入nvm
命令查看環境變量是否配置成功:
(2)輸入 nvm ls
,查看已安裝的全部 node 版本。
(3)輸入 nvm -v
,查看 已安裝的 nvm 版本。
(4)輸入 node -v
,查看正在使用的 node 版本。
若是 node 安裝失敗,能夠參考上面這個連接。
打開 終端.app,輸入:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash source ~/.nvm/nvm.sh
安裝之後,nvm的執行腳本,每次使用前都要激活,建議將其加入~/.bashrc文件(假定使用Bash)。激活後,就能夠安裝指定版本的Node。
也可使用 Homebrew 安裝(更方便,維護更簡單):
brew install nvm
安裝指定版本的node:
nvm install 版本號 [arch]
好比:nvm install 4.2.2
。
卸載指定版本node:
nvm uninstall 版本號
切換使用指定版本的node:
nvm use 版本號 [arch]
查看當前使用的 nvm 版本:
nvm -v
查看本地安裝的全部的 node 版本:
nvm list|ls
在 查看 node 的版本:
$ node -v
執行腳本字符串:
$ node -e 'console.log("Hello World")'
運行腳本文件:
$ node index.js $ node path/index.js $ node path/index
查看幫助:
$ node --help
進入 REPL 環境:
$ node
REPL 的全稱:Read、Eval、 Print、Loop。相似於瀏覽器的控制檯。
若是要退出 REPL 環境,能夠輸入.exit
或 process.exit()
。
在 VS Code 裏,咱們能夠在菜單欄選擇「幫助->切換開發人員工具」,打開console控制檯。
因爲 Node 是一套輕內核的平臺,雖然提供了一系列的內置模塊,可是不足以知足開發者的需求,因而乎出現了包(package)的概念: 與核心模塊相似,就是將一些預先設計好的功能或者說 API 封裝到一個文件夾,提供給開發者使用。
Node 自己並無太多的功能性 API,因此市面上涌現出大量的第三方人員開發出來的 Package。
若是 Node中自帶的包和第三方的包名衝突了,該怎麼處理呢?原則是:
先在系統核心(優先級最高)的模塊中找;
而後到當前項目中 node_modules 目錄中找。
好比說:
requiere(`fs`)
那加載的確定是系統的包。因此,咱們儘可能不要建立一些和現有的包重名的包。
包的生態圈一旦繁榮起來,就必須有工具去來管理這些包。NPM 應運而生。
NPM:Node Package Manager。官方連接: https://www.npmjs.com/
隨着時間的發展,NPM 出現了兩層概念:
一層含義是 Node 的開放式模塊登記和管理系統,亦能夠說是一個生態圈,一個社區。
另外一層含義是 Node 默認的模塊管理器,是一個命令行下的軟件,用來安裝和管理 Node 模塊。
NPM 不須要單獨安裝。默認在安裝 Node 的時候,會連帶一塊兒安裝 NPM:
NVM、Node、NPM 安裝以後,目錄分佈以下:
輸入 npm -v
,查看 npm 的版本:
若是上方命令無效,多是以前的 node 並無徹底安裝成功。解決辦法:http://www.javashuo.com/article/p-ncvrxfef-er.html
另外,Node 附帶的 NPM 可能不是最新版本,能夠用下面的命令,更新到最新版本:
$ npm install npm -g
因爲 NPM 的資源都在國外,有時候會被牆,致使沒法下載或者很慢。此時能夠用到NRM。
NRM:Node Registry Manager。做用是:切換和管理包的鏡像源。項目地址:https://www.npmjs.com/package/nrm
安裝 NRM:
npm install -g nrm
NRM 的經常使用命令:
nrm ls //顯示所有的鏡像 nrm use taobao // 使用淘寶的鏡像
效果入下:
推薦的國內加速鏡像:https://npm.taobao.org/
想學習<font color=#0000ff>代碼以外的軟技能</font>?不妨關注個人微信公衆號:生命團隊(id:vitateam
)。
掃一掃,你將發現另外一個全新的世界,而這將是一場美麗的意外: