【问题标题】:Modular structure for Express 4 backend in a MEAN appMEAN 应用程序中 Express 4 后端的模块化结构
【发布时间】:2015-12-08 11:51:21
【问题描述】:

我是开发 MEAN 应用程序的新手,我来自 Laravel 结构来开发 Web 应用程序,我不喜欢 Laravel 不是那么模块化,一切都是分开的,尤其是模型、视图和控制器,要在构建大型应用程序时滚动很多次的文件夹中导航...

我的问题是关于 MEAN 堆栈下的 Express,我正在寻找的是一种结构,我为应用程序的每个实体创建模块,例如:

我有三个模块:usersquestionsanswers;每个模块将包含该特定模块的路由、模型和控制器,例如:

├── node_modules
├── src
│   ├── client
│   │   └── ... //Frontend things managed by angular (like views, etc...)
│   └── server
│       ├── modules //By module i mean an entity
|       |   ├── users
|       |   |   ├── users.model.js
|       |   |   ├── users.controller.js
|       |   |   ├── users.routes.js
|       |   |   └── index.js
|       |   ├── questions
|       |   └── answers
|       ├── config
|       └── etc... //Suggestions please...
|
├── package.json
└── server.js

我如何设置该结构?到目前为止,我发现 this tutorial 关于模块化 Express 应用程序,但我想扩展它,以便我保持它干燥,并利用 LIFT principle John Papa 在他的 Angular Style Guide 中描述但在后端。

我为什么要问这个?简单,我不喜欢滚动浏览大文件夹来打开一个文件,然后再次滚动打开另一个相关文件,我希望使用易于维护、易于理解等的结构......

如果可能的话,有人可以解释一个如何使用这种结构设置应用程序并将其上传到 github 的示例吗?

【问题讨论】:

  • 我建议不要拥有多个 node_modules 文件夹。这样做意味着你实际上有嵌套的应用程序,并且每个 node_modules 文件夹都需要它自己的 package.json。
  • 我使用 MySQL 作为 db 而不是 MongoDB,所以我使用 sequelize 作为 ORM
  • 你的结构对我来说看起来不错,除了嵌套的 node_modules 文件夹。
  • @KevinB 谢谢,我不知道如何设置它以使用它,这就是我正在努力的地方
  • 与什么一起工作?嵌套的节点模块文件夹?我也没有,我也不想探索它。对我来说似乎是一个非常糟糕的做法。如果我走那条路,我会改为将每个模块开发为完全安装到根 node_modules 文件夹中的单独模块。

标签: node.js express dry mean-stack


【解决方案1】:

在顶层放置一个 node_modules。

给每个模块一个 package.json

现在在您的引导程序中编写一个脚本,从 package.json 中找到所需的所有唯一 node_modules。

在那里,node_modules 解决了。确保它也能识别版本的差异。

构建一个通用运行脚本文件,该文件读取指向所有其他模块的通用配置文件。

Angular 2..4..5 是一个很好的模块化文件结构,可以用来建模。

【讨论】:

  • 请尽量在您的回答中更具描述性,因为它包含许多未正确描述的参考资料。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
  • 1970-01-01
  • 2014-05-22
  • 2016-07-29
  • 2010-11-27
  • 1970-01-01
相关资源
最近更新 更多