中间件
所谓中间件, 就是在收到请求后和发送响应之前这个阶段执行的一些函数
中间件的结构
1,App.use([path],function)
path: 是路由的 url, 默认参数'/', 意义是路由到这个路径时使用这个中间件
function: 中间件函数
这个中间件函数可以理解为就是 function(request,response,next)
这里安装是指涉及到第三方中间件的使用时, 需要先安装好, 然后在使用. cnpm i -g express-generator // 安装
express --version // 查看版本信息
一, 应用级中间件
- App.get("/one",(req,res,next)=>{
- var flag=true;
- if(flag){
- next();// 如果 flag 是 true 就执行下一个和它路径名相同的中间件 next() 是查找下面紧邻的兄弟元素
- }
- else{
- res.render("a",{
- a:"aaaaaaaa"
- });
- }
- })
- App.get("/one",(req,res)=>{
- // 应用级的中间件
- console.log("one middleware")
- res.send("我是一个 / one 的中间件")
- })
二, 路由级中间件
router:
Express 还提供了一个叫做 Router 的对象, 行为很像中间件, 你可以把 Router 直接传递给 App.use, 像使用中间件那样使用 Router. 另外你还可以使用 router 来处理针对 GET,POST 等的路由, 也可以用它来添加中间件, 总之你可以将 Router 看作一个微缩版的 App.
创建一个 router 实例 var router = express.Router();
res.redirect("/ 路径") // 重定向
hello.JS
- const express = require("express")// 引入 express 框架
- var App = express();// 实例化 实例过程以及在内部封装好了可以直接用
- const datarouter = require("./datarouter");// 引入文件
- const lxrouter = require("./lxrouter");
- App.set("view engine","ejs")
- App.set("views","./views")
- App.use("/",datarouter);// 当为 "/" 的时候引用 datarouter 里的代码
- App.use("/lx",lxrouter);
- var ser = App.listen(3000,()=>{
- console.log("listen 3000...")
- })
datarouter.JS
- const express = require("express");
- const router = express.Router();
- const data = require("./data");
- const fs = require("fs");
- const url = require("url");
- router.get("/",(req,res)=>{
- res.redirect("/two"); // 重定向 可以不根据路由的规定来直接跳转页面
- })
- router.get("/thr",(req,res)=>{
- res.render("b",{
- list:data.list
- })
- })
- router.get("/add*",(req,res)=>{
- // 接受用户传过来的值 用 url 模块
- var obj = url.parse(req.url,true);
- var name = obj.query.xm;
- data.list.push({// 接受用户传来的值
- id:++data.count,
- name:name
- })
- fs.writeFileSync("./data.json",JSON.stringify(data));// 插入到文件当中去
- res.render("b",{// 重新渲染模板
- list:data.list
- })
- })
- module.exports =router;// 把 router 甩出去
lxrouter.JS
- const express=require("express")
- const router = express.Router();
- const data = require("./data");
- router.get("/one",(req,res,next)=>{
- // 路由 第一个参数就是我要向其中传递数据的 url
- var flag=true;
- if(flag){
- next();
- }else{
- res.render("a",{
- title:"aaaaa"
- })// 渲染页面
- }
- })
- router.get("/one",(req,res)=>{
- console.log("这是二个中间件")
- res.send("耶耶耶")
- })
- module.exports =router;// 把 router 甩出去
ps:hello.JS datarouter.JS lxrouter.JS 需要放在同一目录下
三, express 生成项目
方法:
- cnpm i express-generator -g // 安装 必须全局安装
- express --version // 查看版本号 确认安装完成
3选定文件夹 进入之后 express --view=ejs 文件名 (app2) // 创建文件夹
- cd app2 // 进入 app2
- cnpm i // 安装依赖
- npm start // 生成项目
express.static() 中间件
App.use(express.static(path.join(__dirname,"jt"))); // 静态资源服务器 可以创建一个名为 jt 的文件夹 在这个文件夹中可以直接写静态资源. PNG .CSS 等 不需要写别的代码引入静态资源的类型之后再用
来源: http://www.bubuko.com/infodetail-3194088.html