如何使用Node.js Express模块化路由

用户名

我正在使用Express和Node构建一个Web应用程序,并试图将我的路由考虑在内,以使同一文件中没有数百个路由。这个站点在projects目录中提供不同的文件,因此我创建了一个routes/名为的文件projectRoutes.js来处理项目文件的路由:

var express = require('express');

module.exports = function() {

    var functions = {}

    functions.routeProject = function(req, res) {
        res.render('pages/projects/' + req.params.string, function(err, html) {
            if (err) {
                res.send("Sorry! Page not found!");
            } else {
                res.send(html);
           }
       });
   };

    return functions;
}

然后,在我中routes.js,我有这个...

var projectRoutes = require("./projectRoutes");
router.get('/projects/:string', function(req, res) {
    projectRoutes().routeProject(req, res);
});

有没有更好的方法来内部构造此功能projectRoutes.js换句话说,我projectRoutes.js如何配置以便可以在以下代码中编写以下代码index.js

router.get('/projects/:string', projectRoutes.routeProject);

上面的代码似乎是处理类似问题的正常方法,但是目前,上面的代码行在Node中引发了一个错误,指出该函数未定义。

谢谢你的帮助!

Agconti

您应该使用本机快速路由器,它是为解决此确切问题而设计的!从本质上讲,它允许您以模块化方式创建简化的嵌套路由。

对于您的每种资源,您都应将自己的路线分成几个名为的模块<yourResource>.js这些模块将包含所有路由代码以及任何其他配置或必要的功能。然后,您可以使用以下命令将它们附加到index.js中:

var apiRoute = router.route('/api')
apiRoute.use('/< yourResource >', yourResourceRouter)

例如,如果您有资源bikes

index.js

var apiRoute = router.route('/api')
  , bikeRoutes = require('./bikes')

apiRoute.use('/bikes', bikeRoutes)

然后在bike.js

var express = require('express')
  , router = express.Router()
  , bikeRoutes = router.route('/')

bikeRoutes.get(function (req, res) {
    res.send('api GET request received')
});

module.exports = bikeRoutes

从那里很容易看出,您可以构建许多不同的资源并不断嵌套它们。

在index.js中连接路由的更大示例是:

var apiRoute = router.route('/api')
  , bikeRoutes = require('./bikes')
  , carRoutes = require('./cars')
  , skateboardRoutes = require('./skateboards')
  , rollerskateRoutes = require('./rollerskates')

// routes
apiRoute.use('/bikes', bikeRoutes)
apiRoute.use('/cars',  carRoutes)
apiRoute.use('/skateboards', skateboardRoutes)
apiRoute.use('/rollerskates', rollerskateRoutes)

每个路由器将包含类似于的代码bikes.js通过此示例,可以很容易地使用express的路由器将其模块化,并使您的代码库更易于管理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Node.js 模块化函数

来自分类Dev

Node.js,Mongoose和Express 4.0-设置模块化发布请求

来自分类Dev

如何编写干净的模块化express.js应用程序

来自分类Dev

如何在Node JS中模块化代码

来自分类Dev

模块化gulp / node.js,调用模块变量

来自分类Dev

在Node.js中的文件之间模块化功能

来自分类Dev

如何管理Angular js依赖关系和模块化?

来自分类Dev

模块化 JS:如何运行非全局函数

来自分类Dev

模块化 JS:如何传递变量和事件

来自分类Dev

模块化如何从技术上解决Node.js中的回调地狱

来自分类Dev

使用护照在Node.js / Hapi应用中进行模块化

来自分类Dev

使用模块化Node.js合并站点根的方法

来自分类Dev

使用Express 4模块化Socket.io

来自分类Dev

使用Express 4模块化Socket.io

来自分类Dev

如何在Typescript模块化项目中使用cropper.js?

来自分类Dev

如何使用函数、类和 req.pipe 模块化 Express 应用程序?

来自分类Dev

模块化 JS 中的类扩展

来自分类Dev

即使使用模块化样式实现默认路由,Sinatra也不知道这个细节

来自分类Dev

Node.js,Express无法路由参数化的GET请求

来自分类Dev

这是模块化的js设计模式吗?以及如何在该模型的不同模块之间重用值?

来自分类Dev

如何使用Node JS Express响应xml?

来自分类Dev

使用Express模块安装Node.js

来自分类Dev

使用Express模块安装Node.js

来自分类Dev

使用 Express JS 的路由

来自分类Dev

模块化我的Express / Mongoose API代码,使其更易于使用

来自分类Dev

如何模块化Powershell脚本

来自分类Dev

如何构建模块化应用

来自分类Dev

如何模块化角度代码?

来自分类Dev

如何构建模块化应用

Related 相关文章

热门标签

归档