Node中間層—淘寶
PHP中間層—Facebook
開發模式的演變
MVC模式
弊端:前後端不分離,後端壓力過大
MVVM模式
優點:前後端分離
弊端:
1、瀏覽器(客戶端)壓力過大,瀏覽器CPU佔用過大
2、不利於SEO,頁面都是由JS生成,SEO檢測的是HTML
3、直接暴露接口,存在安全風險
Node中間層模式
優點:既滿足了前後端分離,也減輕了客戶端壓力,還有利於SEO
技術選型
Node框架選型
Express、Koa(簡化的express)、egg(企業級node開發框架,適用於全站項目)
視圖模板選型
ejs、pug(jade)、art-template
ejs語法
中間層搭建(express+ejs)
目錄結構
app.js文件
const express =require("express");
const app = express();
//中間件
const router = require("./src/router/router.js");
//引入body-parser接收post請求的數據 安裝:npm install body-parser --save
var bodyParser = require('body-parser');
//中間件使用body-parser
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())
//靜態目錄設置
app.use(express.static("./static"))
const ejs = require("ejs");
app.set("view engine","ejs");
app.set("views", "./src/views");
app.use("/",router);
app.listen(3300);
router.js文件
const express = require("express");
const router = express.Router();
const index = require("./controll/index.js");
router.get("/",index);
module.exports = router;
index.js文件
const request = require("request");
function index(req,res){
request({
url:"http://localhost:3000/",
method:"GET"
},function(error,response,body){
if(!error&&response.statusCode==200){
let data = JSON.parse(body);
res.render("./index.ejs",data);
}
})
}
module.exports = index;
server.js文件
const express = require("express");
const app = express();
app.get("/",(req,res)=>{
res.json({
status:200,
attr:[{
name:"小明",
age:15
},{
name:"小紅",
age:16
}]
})
})
app.listen(3000);
效果:
中間層拓展
1、利用pm2(node應用程序管理工具)做集羣
安裝
npm install pm2 -g
啓動(4代表開啓4個進程)
pm2 start app.js -i 4
這樣,前端就可以根據高的訪問,先去做一個分流處理,然後後端再做一次緩壓處理,則能夠很好的解決高併發。
2、利用nginx做負載均衡
3、靜態html、redis減少請求,減輕服務器壓力
redis教程