如何正确调整Node.JS项目中的代码?

时间:2017-02-10 15:00:57

标签: javascript node.js express

[TL; DR]只需读取粗体中的位。

我对Node.JS很陌生,但已经在精心构建一些工作项目。现在我有一个灼热的问题,我一直在谷歌搜索大约半个小时,但我能找到的只是令人沮丧的轻触教程,但没有回答我的问题,所以我走了...... / p>

我有一个使用Express框架的Node.JS项目其中一条路线的代码现在变得非常大,因此,我作为一名优秀程序员的直觉自然会将其分解为自己的类或模块或包或任何被调用的东西。 ..这就是我的问题所在。关于Node.JS的语言的教程在哪里?如何将自己的代码分割成整齐调制,易于阅读的块?

似乎每个指南都是这样的......

  1. 创建NodeJS项目
  2. 将npm模块安装到项目
  3. 添加一个调用模块的单行路由
  4. 在背后拍拍自己并开始申请作为全栈JavaScript开发人员的工作。
  5. 它正在努力!我想用一些复杂的定制代码来深入和肮脏,但我也想以一些正确的,标准化的方式做事,但我不知道要创建什么文件夹,如何嵌套它们,遵循什么命名约定或类似的东西。 NodeJS的Jeff Way在哪里?

    请某人指出我的指导方针或有关此主题的一些文档,以便我可以继续学习。提前致谢。

4 个答案:

答案 0 :(得分:0)

来自An Absolute Beginner's Guide to Node.JS"代码组织" 的部分:

  

在大多数应用程序中,您的代码将分成几个文件。没有标准或强制组织来处理哪些文件。这不是Rails。没有观点的概念在这里,控制者去那里。你想做什么,就可以做什么。

所以有它。这不是Rails你可以做任何你想做的事情

但是看一下SO上另一个问题的接受答案:Folder structure for a Node.js project我们可以看到项目根目录中名为 controllers 的文件夹是一个常见位置但此外,当您使用Express Generator引导新项目时创建的 routes 文件夹被视为替代此项目。

摘要:我使用其他MVC框架(例如Laravel)和@programmingheadache's answer的经验考虑和启发所有事情我将保留routes文件夹,但也创建一个{{ 1}}文件夹。

通过这种方式,我可以将 controllers 文件夹专门用于定义项目的路由,并将逻辑分隔在 routes 。我遵循路由是文档的口头禅,我讨厌我的项目的任何未来的审稿人,当他们只是试图建立存在的URI的早期基础知识时,会被逻辑陷入困境参数。

答案 1 :(得分:0)

我通常做的是将我的逻辑放在控制器中并从routes.js中引用它们。例如:personController用方法find(id)然后在routes.js中放一个路由router.get(' /:id',personController.find);

personcontroller:

module.exports = (app) => {
return { 
    find(req, res, next){
        const id = req.params.id
        //return a user
    } 
};

}

路线:

router.get('/:id', personController.find);

将每个错误传递给下一个并使用middelware来处理它们

问候

伊恩

答案 2 :(得分:0)

为了

<块引用>

请有人给我指出一个好的教程或一些教程的方向 围绕这个主题的文档,以便我可以继续我的学习。 提前致谢。

部分:

├───models
│   ├───user.model.js
├───routes
│   ├───user.route.js
├───services
│   ├───user.service.js
├───controllers
│   ├───user.controller.js

来自https://riptutorial.com/node-js/example/32331/model-routes-controllers-services-directory-structure

src
│   app.js          # App entry point
└───api             # Express route controllers for all the endpoints of the app
└───config          # Environment variables and configuration related stuff
└───jobs            # Jobs definitions for agenda.js
└───loaders         # Split the startup process into modules
└───models          # Database models
└───services        # All the business logic is here
└───subscribers     # Event handlers for async task
└───types           # Type declaration files (d.ts) for Typescript

来自https://softwareontheroad.com/ideal-nodejs-project-structure/

答案 3 :(得分:-1)

项目结构必须是这样的:

-- app.js
-- server.js

配置\

--databaseConfig.js

--thirdPartyConfig.js

--appConfig.js

控制器 \

--userCtrl.js

--productCtrl.js

--businessCtrl.js

中间件 \

--endpointHandler.js

--authHandler.js

--errorHandler.js

路线 \

--userRoute.js

--productRoute.js

--businessRoute.js

工具 \

--encryptFile.js

--uploadFile.js