美文网首页
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