首页 > 解决方案 > 我想在 node.js express 中自动化模型和路由部分

问题描述

我想在 node.js express 中自动化模型和路由部分。例如,路由的 index.js 原本是这样的。

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
   res.render('index', {title:'Express' });
});

router.get('/a1', function(req, res, next) {
   res.render('a1', {title:'Repetitive router.get' });
});

router.get('/a2', function(req, res, next) {
   res.render('a2', {title:'Repetitive router.get' });
});

router.get('/a3', function(req, res, next) {
   res.render('a3', {title:'Repetitive router.get' });
});

module.exports = router;

我不想每次都对它进行硬编码 router.get 功能部分

var express = require('express');
var router = express.Router();
var AAA = require('myGetAll');

AAA.add('/a1', a1, {title:'Repetitive router.get' });
AAA.add('/a2', a2, {title:'Repetitive router.get' });
AAA.add('/a3', a3, {title:'Repetitive router.get' });

/* GET home page. */
for(let i = 0; i <AAA.count(); i++){
    router.get(AAA.itemPath[i], function(req, res, next) {
      res.render(AAA.itemFile[i], AAA.itemParameter[i]);
    });
}

module.exports = router;

我想这样做。这样做可以吗?

如果不是 MVC 之类的 express,但是推荐一个代码自动化更好的框架。

谢谢你。

标签: node.jsexpressmodel-view-controllerautomationframeworks

解决方案


有一个很好的方法可以使用路由参数来实现这一点。

router.get('/:param(a+[1-3])', function(req, res, next) {
   const parameter = req.params.param;
   res.render(parameter, {title:`Repetitive router.get this ${parameter}` });
});

您可以将可选的正则表达式传递给路由以匹配所需的参数,或者只处理代码逻辑中的输入(在这种情况下,我添加了一个正则表达式来匹配 a1-a3)

https://expressjs.com/en/guide/routing.html


推荐阅读