如何在 SailsJS 中拆分 router.js

How can I split router.js in SailsJS

我的项目越来越大,router.js 也在增长。是否可以将它拆分成几个不同的路由文件?每个路由文件适用于不同的控制器。

在 sails 中,只要导出 module.exports.routes,就可以将路线放入 config/ 中的任何文件中。所以你可以这样做:

1。 config/routes.js

module.exports.routes = { };

2。 config/routes/otherRoute.js

_.defaults(sails.config.routes, {
  // other routes
});

您可以在 config/routes.js 中引入您的另一个路由文件,并使用 lodash (https://lodash.com/docs#merge)

将其与 main 合并
var otherRoutes = require('/path/to/otherRoutes');
var routes = {
  'initialRoutes' : 'here'
}
_.merge(routes, otherRoutes);
module.exports = routes;

我已将我的自定义路线包含在我的 API 文件夹中。我创建了一个文件夹 api/routes/ 并包含我的自定义路由,例如:

1。 config/routes.js

var routes = require('../api/routes/Route');
var contact = require('../api/routes/ContactRoute');

var all = routes.custom;

var contactsRoutes = contact.contactRoutes;

// Dynamic include custom routes from api
var routes = function (dic) {
  var obj = {};
  dic.forEach(function (routes) {
    for (p in routes) {
      obj[p] = routes[p];
    }
  })

  return obj;
}

module.exports.routes = routes([all, contactsRoutes]);

2。 api/routes/ContactRoute.js

module.exports.contactRoutes = {'get /v1/contact': 'ContactController.index'}

我来自点网背景,那里的属性路由允许用户在控制器本身中指定显式路由。这是一个非常有用的功能,因为当您与一个团队一起工作时,您不能拥有一个不断增长的大文件,因为它会增加在 GIT.

上维护代码时的冲突。

所以我想在我的 sails 应用程序中使用类似的解决方案

我是这样做的

var _ = require('lodash');
var routes = {
    'get /test':'SiteController.testme'
};
_.assignIn(sails.config.routes,routes);

module.exports = {
    testme : function(req,res){
        res.json("I have been tested");
    },
    findOne: function(req,res){
        res.json("I have got one site");
    }
};

这里的控制器名称是SiteController