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教程