更大的项目 Node.js 和 RESTful API

qri*_*kko 5 architecture rest node.js

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

我发现 Node.js 非常容易启动和运行,使用起来感觉很自然,而且我发现了一些很好的入门级教程。

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

我利用Express 框架创建了一个 http 服务器、侦听端口、设置了一个 Express 对象并绑定了一些请求。

然而,这些规模相当小,而且目的是学习,如果我考虑扩大 API 的规模以进行生产,也许还想做其他事情,比如提供网页服务。我发现很难看出架构会是什么样子。

这很模糊,因为我对 Node.js 还很陌生,但我主要考虑的是诸如是否通常将所有 api 保存在一个文件中,或者是否有好的方法将其拆分为模块?如果有人知道任何资源,更多地讨论如何在使用 Node.js 时设计架构

很抱歉这个模糊的问题,感谢您的阅读。

chr*_*etd 4

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

\n\n

它易于测试(例如使用 Mocha 或 Jasmine)和可定制,特别是由于它的中间件

\n\n

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

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

这可能是最小的目录组织。最重要的是,您可能希望使用模板引擎(例如 EJS)来提供网页服务。看一下\xc2\xab 使用 EJS 来模板化您的节点应用程序 \xc2\xbb

\n\n

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

\n