Node.js 学习笔记 - 路由(三)

一、路由定义

广义上来讲,路由就是映射关系。

nodejs中的路由其实就是url地址和响应函数之间的映射关系,一个url地址响应一个html页面。

就是将一个路径匹配关系的业务提取到一个单独的js文件当中. 

 二、路由功能

我们要为路由提供请求的 URL 和其他需要的 GET 及 POST 参数,随后路由需要根据这些数据来执行相应的代码。

因此,我们需要查看 HTTP 请求,从中提取出请求的 URL 以及 GET/POST 参数。这一功能应当属于路由还是服务器(甚至作为一个模块自身的功能)确实值得探讨,但这里暂定其为我们的HTTP服务器的功能。

我们需要的所有数据都会包含在 request 对象中,该对象作为 onRequest() 回调函数的第一个参数传递。但是为了解析这些数据,我们需要额外的 Node.JS 模块,它们分别是 url 和 querystring 模块。

                   url.parse(string).query
                                           |
           url.parse(string).pathname      |
                       |                   |
                       |                   |
                     ------ -------------------
http://localhost:8888/start?foo=bar&hello=world
                                ---       -----
                                 |          |
                                 |          |
              querystring.parse(queryString)["foo"]    |
                                            |
                         querystring.parse(queryString)["hello"]

三、路由组织和模块化

对于大型的应用程序,路由通常会非常庞大而复杂。为了保持代码的可读性和可维护性,我们可以将路由进行组织和模块化。例如:

路由系统通常是建立在服务器端的,因为它需要处理客户端发送的 HTTP 请求。但是,也有一些客户端路由系统,它们可以在浏览器端使用。

在 Node.js 中,有许多不同的模块可用于创建路由系统。其中最流行的是 Express。Express 是一个简单而强大的框架,用于构建 Web 应用程序和 API。它提供了许多有用的功能,如路由、中间件、模板引擎和静态文件处理。

// router.js
const express = require('express');
const router = express.Router();

router.get('/', (req, res) => {
  // 处理 /users 请求
});

router.get('/:id', (req, res) => {
  // 处理 /users/:id 请求
});

module.exports = router;
// app.js
const express = require('express');
const app = express();
const usersRouter = require('./router');

app.use('/router', usersRouter);

app.listen(3000, () => {
  console.log('Server running on port 3000');
});

在上面的例子中,我们创建了一个名为 router.js 的模块,其中包含了与用户相关的路由处理函数。然后,在主应用程序(app.js)中使用 app.use() 注册了这个模块。这样做不仅使代码结构更清晰,还能方便地扩展和维护。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值