• 中间件 express生成项目(2018/11/10)


    中间件
                 所谓中间件,就是在收到请求后和发送响应之前这个阶段执行的一些函数
    中间件的结构
    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   //查看版本号 确认安装完成
            ③选定文件夹 进入之后 express --view=ejs 文件名(app2)    //创建文件夹
            ④cd app2  //进入app2
            ⑤cnpm i  //安装依赖
            ⑥npm start  //生成项目
     express.static()  中间件 
    app.use(express.static(path.join(__dirname,"jt"))); //静态资源服务器  可以创建一个名为jt的文件夹 在这个文件夹中可以直接写静态资源.png .css等 不需要写别的代码引入静态资源的类型之后再用 
  • 相关阅读:
    FlashDevelop视频教程三:多工程的使用及编译SWC
    FlashDevelop插件ASCompletion
    c#实现MD5加密
    FlashDevelop视频教程一:简介及安装
    FlashDevelop4 快捷键
    FlashDevelop视频教程四:FLA工程调试和一些技巧
    一个简单的c#操作XML文件的类,只能操作一层的节点
    验证用户的存储过程
    MOSS模态窗口应用
    二进制图片格式转换
  • 原文地址:https://www.cnblogs.com/zsrTaki/p/11510342.html
Copyright © 2020-2023  润新知