美文网首页
express快速入门

express快速入门

作者: 不要和我名字一样 | 来源:发表于2017-06-13 23:33 被阅读757次

    安装epress , 可以使用 npm install express --save进行安装,如果使用webStorm的话,新建一个node项目,会自动帮你下载express包。

    Paste_Image.png
    等你创建好之后就会有一个node_modules一个文件夹下就会有express这个包。
    1、路由能力
        var express = require("express");
        var app = express();
        app.get("/",function(req,res){
            res.send("你好");
        });
        app.get("/haha",function(req,res){
            res.send("这是haha页面,哈哈哈哈哈哈");
        }); 
        //使用正则匹配学号
        app.get(/^\/student\/([\d]{10})$/,function(req,res){
            res.send("学生信息,学号" + req.params[0]);
        });
        app.get("/teacher/:gonghao",function(req,res){
        res.send("老师信息,工号" + req.params.gonghao);
        });
        app.listen(3000);
    
    

    app.get(),该方法中有两个参数,第一个参数为请求路径,不分大小写,第二个为回掉函数,请求路径可以使用正则匹配,app.post()也是同样的参数形式。app.listen(3000)表示监听3000端口,在浏览器输入 localhost:3000就可以访问。

    正则表达式可以被使用。正则表达式中,未知部分用圆括号分组,然后可以用req.params[0]、[1]得到,req.params为类数组对象。

        app.get(/^\/student\/([\d]{10})$/,function(req,res){
            res.send("学生信息,学号" + req.params[0]);
        });
    
    

    但是用冒号这种方法更好一些:

        app.get("/student/:id",function(req,res){
            var id = req.params["id"];
             // var id = req.params.id;(这种方式也能获取到id的值)
            var reg= /^[\d]{6}$/;   //正则验证
            if(reg.test(id)){
                res.send(id);
            }else{
                res.send("请检查格式");
            }
        });
    
    
    
    2、静态文件

    Express 提供了内置的中间件 express.static 来设置静态文件如:图片, CSS, JavaScript 等,你可以使用 express.static 中间件来设置静态文件路径。例如,如果你将图片, CSS, JavaScript文件放在 public 目录下,你可以这么写:

    app.use(express.static('public'));
    
    3、中间件

    路由get、post这些东西,就是中间件,中间件讲究顺序,匹配上第一个之后,就不会往后匹配了。next函数才能够继续往后匹配。如果我的的get、post回调函数中,没有next参数,那么就匹配上第一个路由,就不会往下匹配了。如果想往下匹配的话,那么需要写next().

    app.get("/",function(req,res,next){
        console.log("1");
        next();
    });
    app.get("/",function(req,res){
        console.log("2");
    });
    
    

    app.use()也是一个中间件。与get、post不同的是,他的网址不是精确匹配的。而是能够有小文件夹拓展的。比如网址: http://127.0.0.1:3000/admin/aa/bb/cc/dd

    app.use("/admin",function(req,res){ 
        res.write(req.originalUrl + "\n");   //    /admin/aa/bb/cc/dd
        res.write(req.baseUrl + "\n");  //   /admin
        res.write(req.path + "\n");   //    /aa/bb/cc/dd
        res.end("你好");
    });
    
    

    如果只写一个/的话,就匹配所有网址

    //当你不写路径的时候,实际上就相当于"/",就是所有网址
    app.use(function(req,res,next){
        console.log(new Date());
        next();
    });
    
    4、内容渲染
    • 大多数情况下,渲染内容用res.render(),将会根据views中的模板文件进行渲染。如果不想使用views文件夹,想自己设置文件夹名字,那么app.set("views","aaaa");
    • 如果想写一个快速测试页,当然可以使用res.send()。这个函数将根据内容,自动帮我们设置了Content-Type头部和200状态码。send()只能用一次,和end一样。和end不一样在哪里?能够自动设置MIME类型。
    • 如果想使用不同的状态码,可以:
      res.status(404).send('Sorry, we cannot find that!');
    • 如果想使用不同的Content-Type,可以:
      res.set('Content-Type', 'text/html');

    相关文章

      网友评论

          本文标题:express快速入门

          本文链接:https://www.haomeiwen.com/subject/eznzfxtx.html