1. 認(rèn)識node
1.1 node的基本了解
學(xué)習(xí)node前,先認(rèn)識了解JavaScript,JavaScript是前端瀏覽器客戶端腳本語言,JavaScript因?yàn)槠浜唵蔚脑?賦予了網(wǎng)頁新的生命力.
JavaScript是一個前端腳本語言,一門語言會有自己的運(yùn)行環(huán)境,JavaScript的運(yùn)行環(huán)境就是我們的瀏覽器.
那node是什么呢? node和JavaScript有什么關(guān)系?
其實(shí)node和JavaScript的關(guān)系就像 瀏覽器內(nèi)核中處理JS的引擎和JavaScript的關(guān)系.
簡單的理解就是node不是一門語言,而是一個環(huán)境, 一個能讓JavaScript的運(yùn)行在后臺的環(huán)境環(huán)境,
node是使用chrome開源的V8引擎為基礎(chǔ) 搭建的運(yùn)行環(huán)境
并且在v8引擎中添加了服務(wù)器語言應(yīng)該有的功能,如文件系統(tǒng)
,模塊
,包
,操作系統(tǒng)API
,網(wǎng)絡(luò)通信
等,由此產(chǎn)生了node
Node = JavaScirpt核心 + 擴(kuò)展功能
1.2 什么是node(官方介紹)
Node.js是一個基于 Chrome V8引擎的JavaScript 運(yùn)行環(huán)境,
1.3 Nodejs與JavaScript
NodeJS : 一個可以運(yùn)行JavaScript 的運(yùn)行環(huán)境(平臺),是基于Chrome JavaScript V8 引擎,并且對JavaScript語言進(jìn)行了增強(qiáng).使JavaScript具有服務(wù)器語言開發(fā)的能力(操作文件,讀取系統(tǒng)信息,網(wǎng)絡(luò)等)
JavaScript: 一門編程語言,只要有JavaScript引擎就能 運(yùn)行,個瀏覽器都有自己的JS引擎,如果運(yùn)行在瀏覽器中,瀏覽器對JavaScript加入了瀏覽器和文檔操作的接口
簡單理解: JavaScript運(yùn)行需要JavaScript引擎, JavaScript引擎可以在瀏覽器中(IE,Chrome,Firefox),也可以獨(dú)立出來(node),雖然都是JavaScript,但是在不同的運(yùn)行環(huán)境下,責(zé)任也不同,瀏覽器下的JavaScript 主要操作BOM,DOM ,而Node則具有服務(wù)端語言的功能(處理網(wǎng)絡(luò)請求,保存數(shù)據(jù)到數(shù)據(jù)庫中)
1.4 NodeJS的特點(diǎn)
single Thread 單線程 ,
Non-blocking I/0 非阻塞異步I/O
Event Driven 事件驅(qū)動
三個特點(diǎn)相輔相成,是必須的選擇
因?yàn)橐诘陀布l件下處理高并發(fā),選擇減少內(nèi)存消耗,所以選擇單線程
為了防止線程阻塞,單線程就必須非阻塞異步 I/O
為了非阻塞I/O 就必須處理異步調(diào)度問題,所以事件驅(qū)動
1.5.Node三大核心特點(diǎn)
1.5.1. NodeJS 單線程
在傳統(tǒng)服務(wù)器模型中,大多都使用多線程來解決并發(fā)的問題, 而每一個客戶端在連接創(chuàng)建一個線程,需要消耗2MB的內(nèi)存,也就是說,理論上一個8GB的服務(wù)器可以同時鏈接用戶數(shù)量為4000個左右
Node.js是用的是單線程,利用非阻塞IO,事件驅(qū)動,理論上一個8GB內(nèi)存的服務(wù)器,可以容納3萬到4萬的用戶連接
1.5.2. 非阻塞異步I/ O
在傳統(tǒng)的單線程處理機(jī)制中,I/O阻塞了代碼的執(zhí)行
Node.js采用了非阻塞異步I/O機(jī)制
當(dāng)某個I/O執(zhí)行完畢時,將以事件的形式通知執(zhí)行I/O操作的線程,線程執(zhí)行這個事件的回調(diào)函數(shù);
而非阻塞模式下,一個線程用用在執(zhí)行計算操作,這個線程CPU核心利用率永遠(yuǎn)是100%
Node 適合I/O操作比較多的服務(wù)器, 不適合計算比較多的.
1.5.3. 事件驅(qū)動模型
NodeJS單線程只是一個JS主線程,本質(zhì)上的異步操作還是有線程池完成的
NodeJS之所以單線程處理高并發(fā)的原因,得益于c++的異步框架libuv層來實(shí)現(xiàn)的,循環(huán)機(jī)制,和底層的線程池
而Node.js的高性能也是得益于其將阻塞的I/O異步化邦鲫,使得不影響主邏輯的執(zhí)行
2. 安裝運(yùn)行
官網(wǎng)下載安裝運(yùn)行
2.1 檢查有沒有安裝成功
$ node -v
$ npm -v
2.2 運(yùn)行模式
- REPL模式(Read-Evaluate-Print-Loop) 輸入- 求值 - 輸出 - 循環(huán)
$ node
node 回車直接進(jìn)入REPL模式(了解即可)
- 直接運(yùn)行js文件
$ node index.js
2.3 常用DOS命令
- e: 切換盤符
- dir 顯示當(dāng)前文件夾中所有文件及文件夾列表
- cd 進(jìn)入文件夾(../上一層文件夾)
- exit 退出命令行