前面我接触了如何使用 express 建立一个工程,虽然这个工程包含了一些基本的框架,但是没有实际内容,我们会不断给他增加的。
在 app 里面增加 get 函数,然后再在 routes 里面添加一个你想实现的模块(一个 js 文件),在 app 里面获取到她的函数对象。再次重启服务器即可访问 http://localhost:3000,看到相应的效果。
当我们在访问 http://localhost:3000 时,浏览器会向服务器发送请求。app 文件会解析请求的路径,调用相应的逻辑。文件中的 app.get('/', routes.index),的作用是规定路径为 "/" 的 GET 请求由 routes.index 函数处理。routes.index 通过 res.render('index', {title:'Express'}) 调用视图模板 index,传递 title 变量,最终视图模板生成 html 页面,返回给浏览器。 浏览器在接到内容后,经过分析发现需要获取 CSS,于是再次发送请求,然后 app 通过 app.use(express.static(__dirname +'/public')) 配置了静态文件服务器,所以他会定向到 app 中相应的 css 返回给客户端。 然后就形成了一个 MVC 架构,浏览器发送请求、由路由控制接受,根据不同的路径然后定向到不同的控制器。控制器处理用户的请求,可能会访问数据库,即模型部分。控制器还要访问模板引擎,生成视图的 html,最后由控制器返回给客户端,完成一次请求。 创建路由规则
我们在浏览器中访问 app.js 建立的服务器时,会出现一个简单的页面,实际上他已经完成了许多透明的工作。
工作原理
路径匹配 如果你要展示一个页面,路径为 / user/[username],就可以像下面这样配置路由:
- app.get('/user/:username' ,function(req, res){
- res.send('user:' + req.params.username);
- });
Express 是通过函数 next() 实现路由控制转让的,这样提高了代码的重用程度,通过调用第三个参数 next 函数,将路由的控制权转让给后面的规则。
Express 支持同一个路径绑定多个路由响应函数。
控制权转移
来源: http://www.2cto.com/kf/201703/616751.html