【问题标题】:Bigger projects Node.js and RESTful API更大的项目 Node.js 和 RESTful API
【发布时间】:2016-07-17 22:57:34
【问题描述】:

我正在研究 node.js,它看起来确实是一个非常不错的环境。我使用过很多不同的技术和服务器,主要是 php 和 Java (jsp),但也涉足过 som RoR 和 Python。

我发现 node.js 很容易启动和运行,使用起来感觉很自然,我还找到了一些不错的入门级教程。

我只是缺少一些中间资源。例如,在创建更大的框架或 API 时,您将如何构建或构建它。我设置了一些较小的 api 来尝试它会像这样:

我已经使用 Express 框架来创建一个 http 服务器,监听一个端口,设置一个 express 对象并绑定一些请求。

但是这些都非常小,而且目的是学习,如果我考虑扩大 API 的大小以用于生产,也许还想做其他事情,比如服务网页。我发现很难看到架构会是什么样子。

这很模糊,因为我还是 node.js 的新手,但我主要考虑的是您是否通常将所有 api 保存在一个文件中,或者是否有很好的方法将其拆分为模块?如果有人知道在 node.js 中工作时如何设计架构的任何资源

抱歉这个含糊不清的问题,感谢您的阅读。

【问题讨论】:

  • 尝试使用 yeoman 生成器 angular-fullstack 来寻找最佳实践。

标签: node.js rest architecture


【解决方案1】:

在我看来,如果您想构建复杂或大型 API,Express 是一个不错的选择。

它易于测试(例如使用 Mocha 或 Jasmine)和可定制,尤其要感谢它的 middlewares

对于目录结构,我通常使用的是(至少)如下:

  • app.js :主入口点。将创建 express 应用程序,指示每个路由前缀使用哪个控制器,并分配中间件。 Example from a previous project
  • controllers :将包含控制器、处理请求的函数,其风格与标准 MVC 框架(例如 UserController,...)中的风格相同。每个控制器都会创建一个express Router 对象并将其导出。在控制器内部,单独的处理程序负责单独的 API 请求,例如 /api/users/list。它会使用一些库来访问您的数据(例如 Mongoose for MongoDB),然后将响应发送给客户端。 Example (UserController.js)
  • models :将包含模型及其所有属性和方法。就我而言,它将是 Mongoose 模型。 Example (Song.js)
  • middlewares :将包含项目的各种中间件。一个实际的例子是中间件检查传入请求中的访问令牌,如果没有则返回 403 HTTP 错误。 Example (AuthMiddleware.js)
  • 帮助者:各种帮助者
  • 测试 : API 的单元测试

这可能是最小的目录组织。最重要的是,您可能希望使用 EJS 等模板引擎来提供网页服务。看看« Use EJS to template your node application »

这只是为了让您大致了解快速目录结构的外观,但当然还有很多(更好的?)其他可能性。希望能给你一个快速而有用的见解:)

【讨论】:

  • 谢谢,这很有帮助!很好的例子和易于理解的想法。
猜你喜欢
  • 2019-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-13
  • 2016-01-08
  • 2013-11-30
  • 2011-10-30
  • 1970-01-01
相关资源
最近更新 更多