什麼是Node? Node.js 是一個基於Chrome V8 引擎的JavaScript運行環境 Node.js使用了一個事件驅動、非阻塞式I/O的模型,使其輕量又高效 事件驅動: 任務執行,發佈者,訂閱者,事件驅動 ( on emit ) 非阻塞: 執行某一個任務的同時也可以執行其他任務 I/O ...
-
-
Node.js 是一個基於Chrome V8 引擎的JavaScript運行環境
-
Node.js使用了一個事件驅動、非阻塞式I/O的模型,使其輕量又高效
-
事件驅動: 任務執行,發佈者,訂閱者,事件驅動 ( on emit )
-
非阻塞: 執行某一個任務的同時也可以執行其他任務
-
I/O: 輸入/輸出( 資料庫操作,文件系統操作等 )
-
非阻塞I/O模型: 當我們使用Node.js來實現資料庫操作、文件系統等操作時,要進行的非同步操作,非同步操作的核心傳統實現方式就是回調函數
-
-
-
Node中流的概念:
-
什麼是流?
-
流指的是數據流,是數據的分片傳輸
-
-
為什麼Node中要有流呢?
-
讓數據可以實現非阻塞
-
-
-
gulp就是最典型的例子
-
-
-
前端模塊化:AMD,CMD,Commonjs
-
Node應用由模塊組成,採用Commonjs模塊規範
-
-
Node中哪些常用的內置模塊:
-
fs
模塊-
Fs(文件系統)用於以模仿標準 POSIX 函數的方式與文件系統進行交互。
-
const fs = require('fs');
使用fs模塊 -
const inp = fs.createReadStream();
讀取文件內容,()裡面填寫的是路徑 -
const outp = fs.createWriteStream();
流正在寫入的文件的路徑,()裡面填寫的是路徑
-
-
zlib
模塊-
zlib(壓縮)提供通過 Gzip 和 Deflate/Inflate 實現的壓縮功能
-
const zlib = require('zlib')使用壓縮模塊
-
const gzip = zlib.createGzip()
創建一個空的壓縮包
-
-
http
模塊-
要使用
HTTP
伺服器和客戶端,必須使用http
模塊const http = require( 'http' )
-
後端伺服器有兩種類型
-
1. web伺服器 【 靜態伺服器 】
2. api伺服器 【 暴露介面 】api伺服器的創建,需要使用一個第三方庫 express
-
-
請求頭部報文
-
1. general 請求基本信息
2. response Headers 響應頭
3. request Headers 請求頭
4. 攜帶參數
- query string paramters get請求
- form data post 請求
-
-
爬蟲
1.去某一個網站爬取一段數據 -> 數據清洗 -> 後端伺服器 -> 發送前端 -> 渲染數據
2.不是所有網站都可以爬取
3.反爬蟲 :只需在數據中插入一些圖片,即可成為最簡單的反爬蟲
4.爬蟲只能爬取由後端渲染的網站
-
-
Event 模塊
-
事件的發佈 發佈者 訂閱者 事件的訂閱
-
-
第三方模塊
-
從npm.js.com網站拉取第三方模塊
-
安裝:
-
在終端輸入
npm init -y
創建package.json文件 -
再輸入npm i request -S/-D
-
-
使用:
-
比如request模塊(數據請求模塊)
const request
-
request(url, ()=>{})
-
-
-
自定義模塊
-
Const name = { name: 'name'} 創建模塊
-
module.exports.x = x 導出模塊
-
module.exports = {name}批量導出模塊
-
-
-
後端解決跨域問題
-
設置請求頭
-
缺點:每個介面都要設置請求頭跨域
res.setHeader('Access-Control-Allow-Origin', '*');
-
-
反向代理
-
後端請求數據再發送給前端
-
-
使用中間件
-
需要使用第三方的包cors
-
-
-