中間件
中間件 middleware (攔截器) 中間的插件
中間件的本質(zhì)是一個函數(shù)
一般情況下有三個參數(shù) req ?res ?next
中間件的分類
1. 自定義中間件(middleware)
2. 內(nèi)置中間件(僅有靜態(tài)資源路徑一種)
中間件 middleware
middleware (攔截器)
function middleware (req,res,next){
//如果沒有next() 就會被攔截 后邊的不執(zhí)行
next()
}
app.get('/test',中間件1, 中間件2,(req,res)=>{
??console.log(111)
})
app.use(middleware)//全局使用自定義中間件 放到起始位置使用
靜態(tài)資源路徑
app.use(express.static(path__)) ??“第一個參數(shù)是網(wǎng)絡(luò)訪問路徑 第二個是express.static(文件夾的絕對路徑)”
在express中 內(nèi)置中間件只有一種(靜態(tài)資源路徑 PHP www目錄)
指定一個文件夾 讓該文件夾和www目錄有相同的功能
app.use()的第一個參數(shù)路徑為根路徑”/”時可以省略不寫
app.use(‘網(wǎng)絡(luò)路徑’,express.static(文件夾的絕對路徑,’/www’))
路由(中間件)
根據(jù)路徑將代碼進行拆分并模塊化
將相關(guān)的api放到一個路由里
大概模式為
創(chuàng)建一個 Router.js模塊文件
內(nèi)容為
const express = require('express')
const router = express.Router()
router.get('/login',(req,res)=>{
????....
})
module.exports= router
server文件引入自定義router模塊
const Router = require('自定義模塊路徑')
app.use(‘網(wǎng)絡(luò)路徑’,Router)
node中跨域問題
因為瀏覽器的同源策略 所以會有跨域問題(協(xié)議 域名 端口)
jsonp ?script 里的src不受同源策略影響 ?需要提供接口的后端參與
cors ??設(shè)置請求頭 需要提供接口的后端參與
服務(wù)器代理 (正向代理 反向代理) 服務(wù)器之間的請求沒有跨域問題
長連接
數(shù)據(jù)庫
關(guān)系型數(shù)據(jù)庫 ?mysql 甲骨文...
非關(guān)系型數(shù)據(jù)庫 redis MongoDB(文檔型) nosql
mongodb 數(shù)據(jù)庫名
mongod 命令行命令(啟動數(shù)據(jù)庫)
mongo 命令行命令(命令行中鏈接數(shù)據(jù)庫)
mongoose 第三方模塊(node用來鏈接數(shù)據(jù)庫的)
mongodb 的格式
數(shù)據(jù)庫>數(shù)據(jù)表(集合 collection)>數(shù)據(jù)(文檔 document)
mongodb 的基本命令(增刪改查)
數(shù)據(jù)庫
show dbs ?顯示所有的數(shù)據(jù)庫
db ????????當(dāng)前選中的數(shù)據(jù)庫
use ?dbName ?新建(切換)一個新(已有)數(shù)據(jù)庫 如果數(shù)據(jù)庫里沒有東西 則這個數(shù)據(jù)庫是個臨時的數(shù)據(jù)庫
db.dropDatabase() 需要先選中想要刪除的數(shù)據(jù)庫 再執(zhí)行此命令 刪除數(shù)據(jù)庫
集合
db.createCollection('集合名字') ??在數(shù)據(jù)庫里創(chuàng)建一個集合
show collections ??顯示該庫下所有的集合
db.集合名.drop() ?刪除指定集合
db.集合名.insert(data) ?在指定集合中增加數(shù)據(jù)
文檔