node.js 中每个文件的最佳代码行数是多少?
What is the optimal number of lines of code per file in node.js?
我知道这是一个稍微主观的问题,但我希望有经验的 Web 应用程序工程师提供见解。
我目前正在 node.js 中使用 REST API/Single 页面应用程序类型的架构开发中型 Web 应用程序。在服务器端,我总是很难知道何时是拆分单个文件并使用 require() 调用代码块的最佳时机。
我知道文件复杂性不太可能影响最终生产服务器的性能,我想知道适度范围以平衡可读性和目录结构复杂性。
有一个类似的问题专门针对经典语言,如 vb.net here and there is an excellent question about web application architecture here。
而不是计算 类 或行数,我会考虑根据它应该完成或提供的内容,可以将特定文件的多少内容抽象到它自己的模块中。
如果您的 app.js 包含一千条路线,将这些路线放入单独的 "require" 文件中可能是有意义的。
如果您的多个路由与应用程序的 accessing/manipulating 配置有关,它们也可能是自己文件的候选者。
就性能而言,您只会在程序加载时受到影响,因为在典型情况下,节点会在加载应用程序中的每个文件时加载您的所有要求。
我一直遵循的规则是:将足够多的代码打包到一个文件中,这样,作为一个整体,它只提供一种功能或服务,除此服务外别无其他,尤其是如果该服务可以在其他地方重用的话申请。
本质上,每个文件的适当行数是允许文件实现其目标的行数,仅此而已。
您如何决定您的代码应该完成什么以及如何将一个潜在的复杂应用程序分解成可抽象的部分完全取决于您。
我认为这没有任何性能限制。在我看来,文件的良好分离(这意味着代码组织得更好,你做的无用的事情更少)比限制 'require' 的使用更有效。当内容与文件的其余部分无关时,我个人会拆分文件。为了编写干净的代码,我个人将我的代码分为 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)。一旦您熟悉了一般结构,您将能够创建自己的符合您需求的结构,没有通用的响应。
我知道这是一个稍微主观的问题,但我希望有经验的 Web 应用程序工程师提供见解。
我目前正在 node.js 中使用 REST API/Single 页面应用程序类型的架构开发中型 Web 应用程序。在服务器端,我总是很难知道何时是拆分单个文件并使用 require() 调用代码块的最佳时机。
我知道文件复杂性不太可能影响最终生产服务器的性能,我想知道适度范围以平衡可读性和目录结构复杂性。
有一个类似的问题专门针对经典语言,如 vb.net here and there is an excellent question about web application architecture here。
而不是计算 类 或行数,我会考虑根据它应该完成或提供的内容,可以将特定文件的多少内容抽象到它自己的模块中。
如果您的 app.js 包含一千条路线,将这些路线放入单独的 "require" 文件中可能是有意义的。
如果您的多个路由与应用程序的 accessing/manipulating 配置有关,它们也可能是自己文件的候选者。
就性能而言,您只会在程序加载时受到影响,因为在典型情况下,节点会在加载应用程序中的每个文件时加载您的所有要求。
我一直遵循的规则是:将足够多的代码打包到一个文件中,这样,作为一个整体,它只提供一种功能或服务,除此服务外别无其他,尤其是如果该服务可以在其他地方重用的话申请。
本质上,每个文件的适当行数是允许文件实现其目标的行数,仅此而已。
您如何决定您的代码应该完成什么以及如何将一个潜在的复杂应用程序分解成可抽象的部分完全取决于您。
我认为这没有任何性能限制。在我看来,文件的良好分离(这意味着代码组织得更好,你做的无用的事情更少)比限制 'require' 的使用更有效。当内容与文件的其余部分无关时,我个人会拆分文件。为了编写干净的代码,我个人将我的代码分为 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)。一旦您熟悉了一般结构,您将能够创建自己的符合您需求的结构,没有通用的响应。