express初步入门

197 阅读2分钟

Node.js中http请求
var http = require("http");
只是在打开运行服务器的时候执行一次,
比如再 var a = 100;
在函数体里面调用a++,用户访问的时候都会累加,只有重启服务器的时候,才会还原到100;
express中也是会累加的。
var a = 100;
app.get("/", function(req, res) {
a++;
res.send(a.toString());
});

app.get("/100", function(req, res) {
a++;
res.send(a.toString());
});

在根目录下刷新会累加,切换到/100,也会在原基础上累加。

express中间件的原理。(路由就是中间件 next())
留有 get、post这些就是中间件,中间件讲究顺序,匹配上第一个后,就不会往后匹配了。next函数才能继续往后匹配。
app.get("/", function(req, res) {
console.log("1");
});
app.get("/", function(req, res) {
console.log("2");
});
在相同的根目录下,会匹配到找到的第一个。
如果在
app.get("/", function(req, res,next) {
console.log("1");
next();
});
添加next(),就会找到接下来匹配到相同的根目录请求。

app.get('/news/:year/:month/:day/',(req,res)=>{
res.send(req.params);
});
会返回一个对象,直接调用属性就好。

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("你好");
})

大多数情况下,渲染内容用res.render(),将会根据views中的模板文件进行渲染,如果不想使用views文件夹,想
自己设置名字,那么app.set("views","haha");

GET和POST请求的参数 GET请求的参数在URL中,在原生Node中,需要使用url模块来识别参数字符串,在Express中,不需要使用url模块
,可直接使用req.query对象。
POST请求在express中不能直接获得,必须使用body-parser模块,使用后,将可以用req.body得到参数,但是如果
表单中含有文件上传,那么还是需要使用formidable模块.