【问题标题】:How do I split up index.js file in a node/mean/express application?如何在 node/mean/express 应用程序中拆分 index.js 文件?
【发布时间】:2015-05-14 00:01:14
【问题描述】:

我的 node/mongo/express 应用程序有一个非常长的 index.js 路由文件。这是结构。

app.js
/models
    Schedule.js
    Task.js
    etc...
/routes
    index.js
/public
    /javascript
    etc...

我想要这样的东西

app.js
/models
    Schedule.js
    Task.js
    etc...
/routes
    index.js
    schedule.js
    tasks.js
    etc...
/public
    /javascript
    etc...

如何拆分我的 index.js 文件?

例如,我曾尝试在我的 app.js 文件中做这样的事情

var routes = require('./routes/index');
var tasks  = require('./routes/tasks');

// later in the file

app.use('/', routes);
app.use('/tasks', tasks);

但是,当我只有 index.js 时,它并没有像以前那样找到我的任务路线。这可能是因为我从我的 routes/index.js 中取出了所有以“/task”开头的路由并将它们放在 routes/task.js 中,但是为什么在这个新文件中表示无法识别路由?

任何建议都会有所帮助,我和我的朋友对整个卑鄙的做事方式都很陌生,基本上是把我们从各种教程中得到的东西拼凑在一起。现在我们迫切需要重构,因为 routes/index.js 太长了无法使用。我尽我所能做直观上有意义的事情,有人可以就如何分解我们的路线文件提供建议吗?

【问题讨论】:

标签: javascript node.js express routes refactoring


【解决方案1】:

嗯,这个问题的答案在于您如何导入(在此上下文中需要)路由器实例。这些文件中的每一个都应该使用路由器对象或类似的东西执行module.exports,其中路由可以安装在您创建的应用程序实例上。

例如,看看我在 GitHub here 上的项目中是如何做到的(在 yeoman 的帮助下),然后参考如何为每个路由导出路由器对象,例如 this 示例。

作为这样做的另一个例子,这是我一直在为here 贡献的一个开源项目。请注意,我们有一个稍微相似的方法here,然后看一个示例路由声明(带有相应的导出)here

【讨论】:

  • 好的。我们尝试使用 glob 以您的方式进行操作,我可以看到这种方法的优点。不幸的是,我认为我们的代码与您的代码差异太大,无法立即切换。我今天将阅读 express js 的文档,主要是因为我仍然不知道我到底在做什么。我很欣赏的回应和例子。我可能最终不会使用你的解决方案,但我相信它会帮助其他人,所以我会给你接受的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-24
  • 2020-09-16
  • 2017-12-31
  • 2019-10-31
  • 1970-01-01
  • 2014-11-20
相关资源
最近更新 更多