目录
前沿:
Express框架是一个简洁而灵活的 node.js Web应用框架,其也属于一个模块,安装方式和之前相同,通过npm install express即可安装,框架的安装目录默认都是在应用目录下的node_modules目录下,通过Express框架可以快速地搭建一个完整功能的网站。
Express 框架核心特性:
-
可以设置中间件来响应 HTTP 请求。
-
定义了路由表用于执行不同的 HTTP 请求动作。
-
可以通过向模板传递参数来动态渲染 HTML 页面。
利用Expess框架搭建一个服务:
var express = require("express");
var app = express();
var server = app.listen(8888, "127.0.0.1", function() {
console.log("listen host:" + server.address().address + "\nport:" + server.address().port);
});
代码解析:
- 首先申请使用express模块
- 调用express()会返回一个function(),赋值给app后其会处理所有的请求
- 通过app.listen()建立一个server,指定host、port
app.get
app.get(path, function()) 根据匹配的path执行相应的function;path需要指定;app.get和app.use的区别:
- app.get只可以指定回调函数;
- app.use可以指定回调函数和路由规则。
app.use
app.use用来注册函数,根据请求的path执行不同的回调函数或者路由;
var express = require("express")
var app = express();
app.use("/h", function(req, res, next) {
console.log("step2");
next();
});
app.use(function(req, res, next) {
console.log("step1");
next();
});
app.use("/h/hello/",function(req, res, next) {
console.log("step3");
next();
});
var server = app.listen(8888, "127.0.0.1", function() {
console.log("listen host:" + server.address().address + "\nport:" + server.address().port);
})
代码解析:
app.use(path, function()); 根据匹配的path执行相应的function;如果path未指定,则默认为'/'
如果function中没有next()方法,即表示如果匹配成功,则不再接着往下进行匹配,如果匹配失败会往下接着匹配直到匹配成功或者结束,因为匹配是子上往下的顺序。
测试结果:
- 如果在浏览器输入:http://127.0.0.1:8888/
cmd输出:step1
- 如果在浏览器输入:http://127.0.0.1:8888/h
cmd输出:step2 step1
- 如果在浏览器输入:http://127.0.0.1:8888/hello
cmd输出:step1
- 如果在浏览器输入:http://127.0.0.1:8888/h/hello
cmd输出:step2 step1 step3
- 如果在浏览器输入:http://127.0.0.1:8888/hello/h
cmd输出:step1
个人认为匹配规则可以归结为将浏览器输入req.url和匹配规则对照,将匹配规则和url path的postion=0位置开始进行一一比对,'/'作为一个分隔符,如果从postion = 0开始到'/'之间都可以匹配上则执行相应的回调函数。