天天看點

Node學習筆記-大綱版Node學習筆記-大綱版

Node學習筆記-大綱版

01 | node

1、什麼是NodeJS

1)Node.js 是一個基于 Chorm V8 引擎的JavaScript運作環境

2)Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效

3)Node.js 的包管理器 npm ,是全球最大的開源生态系統

2、NodeJS為什麼這麼火

1)使用 JavaScript

2)速度非常的快( V8 引擎 & non-block )

3)Node.js 的包管理 npm ,是全球最大的開源生态系統

3、學習前需要掌握的知識點

1)HTML+CSS

2)JavaScript

3)Command Line

4、将學到的知識點

1)學習 NodeJS 的工作原理,例如V8引擎/子產品/事件隊列/檔案系統

2)搭建伺服器(Express/路由/Template模闆)

3)實戰項目(TodoApp)

5、WebStorm (現在一般使用VSCode)

1)運作js檔案

2)Terminal(終端):node app.js 或者 右鍵運作app.js

6、JavaScript引擎 -> Engines

1)電腦根本不識别也不了解 JavaScript

2)JavaScript 引擎起到的作用就是讓電腦識别 JS 代碼

7、V8 引擎 -> Engines

1)Node.js 是使用 C++ 寫的

2)V8 引擎是 Node.js 的核心

3)V8 引擎的作用就是讓 JS 代碼能夠讓電腦識别

4)流程梳理:電腦 -> ( C++ Node V8 ) -> JavaScript

8、什麼是子產品

1)在Node.js中,檔案和子產品是一一對應的(每個檔案被視為一個獨立的子產品)

9、什麼是事件子產品 -> Events

1)大多數 Node.js 核心 API 都是采用慣用的異步事件驅動架構( fs/http )

2)所有能觸發事件的對象都是 EventEmitter 類的執行個體

3)事件流程:引入子產品 -> 建立 EventEmitter 對象 -> 注冊事件 -> 觸發事件

10、什麼是檔案系統 -> 對項目中的檔案進行操作

1)讀取檔案( fs.readFile )

2)寫入檔案( fs.writeFile )

3)流程:引入 fs 子產品 -> 調用方法 -> 異常捕獲

11、檔案系統操作 -> 對項目中的檔案進行操作

1)建立檔案夾( fs.mkdir )

2)删除檔案夾( fs.rmdir )

3)删除檔案( fs.unlink )

4)流程:引入 fs 子產品 -> 調用方法 -> 異常捕獲

12、 伺服器與用戶端

1)伺服器與用戶端的關系

2)用戶端向伺服器發送請求

3)伺服器向用戶端傳回資料

13、Http建立伺服器

1)通過Http子產品建立本地伺服器
const http = require('http');
//建立一個 HTTP 伺服器
var server = http.createServer( (req,res) => {
	res.writeHead(200,{'Content-Type':'text/plain'});
	res.end('hello world');
});
server.on('upgrade',(req,socket,head) => {
	socket.write('HTTP/1.1 101 Web Socket 協定握手 \r\n' +
	'更新:WebSocket \r\n' +
	'連接配接:更新\r\n'+
	'\r\n');
	socket.pip(socket); //回聲
});
//監聽服務
server.listen(3000,'127.0.0.1'); //端口号,ip位址
           

14、緩存區:可以在TCP流和檔案系統操作等場景中處理二進制資料流。

Node學習筆記-大綱版Node學習筆記-大綱版

15、流:在 Node.js 中是處理資料流資料的抽象接口

Node學習筆記-大綱版Node學習筆記-大綱版

16、管道事件:左面輸出 | 右面輸入

Node學習筆記-大綱版Node學習筆記-大綱版

02 | npm

1、什麼是NPM -> Node Package Manager

1) NPM是随同NodeJS一起安裝的包管理工具,能解決NodeJS代碼部署上的很多問題

2、NPM的應用 -> 常見的使用場景有以下幾種

1) 允許使用者從NPM伺服器下載下傳别人編寫的第三方包到本地使用。

2)允許使用者從NPM伺服器下載下傳并安裝别人編寫的指令行程式到本地使用。

3)允許使用者将自己編寫的包或指令行程式上傳到NPM伺服器供别人使用。

3、如何使用NPM

1、安裝子產品:
	npm install <Module Name>           (例如:npm install jquery)
2、解除安裝子產品
	npm uninstall <Module Name>           (例如:npm uninstall jquery)
           

4、什麼是package ->Node package manager

1) package用于定義項目中所需要的各種子產品,以及項目的配置資訊(比如:名稱、版本、許可證等中繼資料)

5、如何安裝package

1)使用 npm install ,之前需要安裝 package.json,其中名字須為小寫的。

2)安裝 package.json (執行: npm init)

3)在安裝子產品時(例如使用指令:nmp install mocha --save-dev),在 package.json 中就會歸類到 devDependencies 中,如下所示。

...省略...
"author":"",
"license":"ISC",
"denpendencies":{
	"jquery":"^3.2.1"
},
"devDenpendencies":{
	"mocha":"^3.2.0"
}
           

03 | nodemon

1、作用

1)在開發環境下,往往需要一個工具來自動重新開機項目工程,我們可以借助nodemon來代替node進行啟動。

2、 安裝nodemon

1)npm install nodemon --save-dev

3、 啟用

1)nodemon 檔案名,例如 nodemon app.js

04 | Express

1、作用

1)已經封裝好伺服器

2)已經封裝好路由

3)已經封裝好中間件

4)已經封裝好網絡請求

2、如何使用

1)NPM安裝Express架構

2)引入Express子產品

3)執行個體化Express的對象

4)通過對象進行調用各種方法

05 | EJS模闆引擎

1、EJS模闆引擎的特點

1)快速編譯和渲染

2)簡單的模闆标簽

3)支援浏覽器端和伺服器端

4)支援express視圖系統

2、 EJS示例代碼

<ul>
<% for (var i=0; i<suplies.length; i++) {%>
	<li><%= supplies[i] %></li>
<% } %>
</ul>
           

3、 安裝EJS

1)執行 npm install ejs --save-dev

06 | 公共模闆

1、實施計劃

1)使用EJS替代HTML

2)建立導航(公共模闆)

3)解決外部樣式不可用的問題

07 | 實戰

1. 準備工作
	啟動新的項目
	初始化 package
	安裝 express 架構
	安裝 ejs body-parser 子產品
2. TodoApp
	引入jQuery
	設定視圖
	設定請求頁面傳回視圖
	設定視圖樣式
3. 設定樣式
	input 輸入框的樣式
	placeholder 的樣式
	button + 号的樣式
	svg 圖檔的樣式
	外層及裡層容器的樣式
	設定 li 容器的樣式
	設定 button 中删除和完成的樣式
	使用 CSS 處理簡單的邏輯
4. CSS設定樣式
	使用 CSS 處理簡單的邏輯
	處理本地資料
5. 添加資料
	在控制器中處理本地資料
	在視圖中将資料展示出來
6. 删除資料
	擷取要删除的資料資訊
	傳遞到伺服器,将資料跟數組中的資訊進行比對
	比對成功的資料,将資料從資料删除
	重新整理頁面
7. 使用資料庫
	安裝 Mongoose 子產品
	使用 mlab 網絡資料庫
	建立資料庫及配置使用者名和密碼
	連結 MongoDB 資料
8. node安裝MongoDB
	npm install mongoose --save-dev
           

參考文獻:

[1] 米斯特吳. NodeJS從入門到實戰[M]. 騰訊課堂, 2019.

[2] 圖檔取自《NodeJS從入門到實戰》