1.什么是路由
在 Express中文网 中,其对路由的解释如下:
路由用于确定应用程序如何响应对特定端点的客户机请求,包含一个 URI(或路径)和一个特定的 HTTP 请求方法(GET、POST 等)。
每个路由可以具有一个或多个处理程序函数,这些函数在路由匹配时执行。
简单理解就是,路由是一种映射关系or对应关系。配置路由,就是设置应用端请求和服务器端响应之间的对应关系。
2.路由的基本结构
2.1基本格式
如下所示:
2.2具体例子
//1.导入express const express = require('express') //2.创建web服务器 const app = express() //3.启动web服务器 app.listen(80,()=>{ console.log('express server runnning at http://127.0.0.1:8080') }) //响应get请求 app.get('/', function (req, res) { res.send('Hello World!'); }); //响应post请求 app.post('/', function (req, res) { res.send('Got a POST request'); });
说明:
1.此处示例采取的是最简单的挂载到app上的路由,一般不推荐这样使用,一般推荐挂载到路由对象上(详见后面的模块化路由)
2.当有多个路由时,如下所示:
此时应该按照路由定义的顺序逐一匹配客户端的请求,从而决定先分发谁(在处理静态资源时尤其注意!)
3.模块化路由
3.1何为模块化
首先你需要了解JS中 模块 的概念,这里引用廖雪峰老师的一段话说明:
为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Node环境中,一个.js文件就称之为一个模块(module)。
详细了解模块请见:模块 - 廖雪峰的官方网站
3.2为什么要采用模块化路由
答:
①将路由挂载到router路由对象上,可以减轻express对象负担;
②可以将对应于某些页面的请求放在一个路由中,让路由之间的层级关系更加清晰
3.3具体案例
文件结构:
其中router.js是我们定义的一个模块,其具体内容如下:
//1.导入express const express = require('express') //2.创建路由对象 const router = express.Router() //3.挂载具体的路由 router.get('/get',(req, res) => { console.log('get访问路由成功') res.send('欢迎使用get方式访问!尝试一下改动~') }) router.post('/post',(req, res) => { res.send('欢迎使用host方式访问!') }) //向外导出路由对象 module.exports = router
在 模块化路由.js 文件中,我们引入路由,内容如下:
//1.导入模块 const express = require('express') //2.创建服务器 const app = express() //3.导入路由模块 const router = require('./router') //4.注册路由模块 app.use(router) //启动服务器 app.listen(80,()=>{ console.log('server running at http://127.0.0.1:80') })