node.js中每个文件的最佳代码行数是多少?

时间:2015-02-06 18:39:31

标签: node.js performance structure

我知道这是一个有点主观的问题,但我很感激有经验的网络应用工程师的见解。

我目前正在使用REST API /单页面应用程序类型的体系结构在node.js中开发中型webapp。在服务器端,我总是很难知道什么时候分割单个文件并使用require()来调用代码块。

我知道文件复杂性不太可能影响最终的生产服务器性能,我想知道goldilocks范围以平衡可读性与目录结构的复杂性。

有一个类似的问题专门针对像vb.net here这样的经典语言,并且有一个关于Web应用程序架构here的优秀问题。

2 个答案:

答案 0 :(得分:1)

我不会计算类或行,而是根据应该完成或提供的内容,考虑将特定文件的多少内容抽象到自己的模块中。

如果你的app.js包含一千条路由,那么将这些路由放入一个单独的“require”-able文件中可能是有意义的。

如果您的多个路由涉及访问/操作应用程序的配置,那么它们也可能是他们自己文件的候选者。

就性能而言,您只会受到程序加载的影响,因为在典型情况下,节点会在应用程序中的每个文件都加载时加载您的所有需求。

我一直遵循的规则是:将足够的代码打包到单个文件中,以便整体上它提供一个功能或服务,而不是该服务,特别是如果该服务可以在其他应用程序中重用。

从本质上讲,每个文件的正确行数是允许文件完成其目标的行,而不是更多。

您如何决定代码应该完成什么以及如何将可能复杂的应用程序分解为可抽象的部分完全取决于您。

答案 1 :(得分:0)

我认为没有任何性能限制。就我而言,文件的良好分离(这意味着代码组织更好,你做的事情更少),比限制“需要”更有效。用法。我个人在内容与文件的其余部分无关时拆分文件。为了清理代码,我个人将我的代码分别放在API的端点中的三个文件中。让我们以用户为例:

  • index.js(包含我的路线定义)。我需要我的用户 控制器功能。

var controller = require('./user.controller'); var router = express.Router(); router.get('/:id', userController.get);

  • user.controller.js(包含服务器端用户的逻辑)。用户控制器将调用用户模型定义var User = require('./user.model');
  • user.model.js(包含用户模型定义 - 在这种情况下使用MongoDB)

网上有很多良好做法指南。我最好的建议是查看样板angular-fullstack生成的内容,这是应用Node.js良好实践的服务器端部分。 (https://github.com/DaftMonk/fullstack-demo/tree/master/server)。一旦您熟悉了一般结构,您就可以创建自己的,符合您的需求,没有普遍的反应。