什麼是Node?前端
Node.js 是一個基於Chrome V8 引擎的JavaScript運行環境web
Node.js使用了一個事件驅動、非阻塞式I/O的模型,使其輕量又高效數據庫
事件驅動: 任務執行,發佈者,訂閱者,事件驅動 ( on emit )express
非阻塞: 執行某一個任務的同時也能夠執行其餘任務npm
I/O: 輸入/輸出( 數據庫操做,文件系統操做等 )json
非阻塞I/O模型: 當咱們使用Node.js來實現數據庫操做、文件系統等操做時,要進行的異步操做,異步操做的核心傳統實現方式就是回調函數gulp
Node中流的概念:後端
什麼是流?api
流指的是數據流,是數據的分片傳輸跨域
爲何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
Node.js讀取文件都是二進制(buffer/binary)