Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJS-目录结构模式_Javascript_Node.js_Express_Architecture_Structure - Fatal编程技术网

Javascript NodeJS-目录结构模式

Javascript NodeJS-目录结构模式,javascript,node.js,express,architecture,structure,Javascript,Node.js,Express,Architecture,Structure,我不熟悉web开发和NodeJS,我正在重构我们的应用程序(代码和目录结构) 我想了解更多有经验的开发人员对我想使用的文件结构模式的看法 通常的MVC应用程序结构可能如下所示: /config /server /controller (business logic) /models (contain all models) /routes (contain all routes) /middlewares (express middleware) /views (

我不熟悉web开发和NodeJS,我正在重构我们的应用程序(代码和目录结构)

我想了解更多有经验的开发人员对我想使用的文件结构模式的看法

通常的MVC应用程序结构可能如下所示:

/config
/server
    /controller (business logic)
    /models (contain all models)
    /routes (contain all routes)
    /middlewares (express middleware)
/views (server templates)
/app (contain JS client app)
/public (assets, ...)
/test
/config
/lib
   /middlewares (express middlewares)
   /services (utils modules, db modules, ...)
   /config
/views
/public
/app
/server
   /user
       /routes
       /logic
       /test
       /model
       /validation-schema
       /...
   /articles
       /routes
       /logic
       ...
这种结构允许我们按关注点对文件进行分组

但是如果我们使用按服务分组文件的应用程序结构,例如:

/config
/server
    /controller (business logic)
    /models (contain all models)
    /routes (contain all routes)
    /middlewares (express middleware)
/views (server templates)
/app (contain JS client app)
/public (assets, ...)
/test
/config
/lib
   /middlewares (express middlewares)
   /services (utils modules, db modules, ...)
   /config
/views
/public
/app
/server
   /user
       /routes
       /logic
       /test
       /model
       /validation-schema
       /...
   /articles
       /routes
       /logic
       ...
视图、模板和客户机目录与第一个结构中的相同。更多的是关于服务器API结构

这允许我们将与用户实体相关的所有文件放在同一目录中。包括测试、模型、路线


你对此有何看法?

你将发动一场宗教战争@SimonBruneaud.:)。这两个版本都是完全可行的,许多人都使用这两个版本。第二个是模块化的,事实上,如果需要,您可以将每个服务器子文件夹作为单独的npm模块进行开发和版本设置。MEAN框架使用类似的东西,尽管它们实际上是按照这些思路打包所有东西(包括客户机代码和模板)


最终,我认为这是个人偏好的问题,我怀疑你的问题很快就会以主要观点结束

你要发动一场宗教战争@SimonBruneaud.:)。这两个版本都是完全可行的,许多人都使用这两个版本。第二个是模块化的,事实上,如果需要,您可以将每个服务器子文件夹作为单独的npm模块进行开发和版本设置。MEAN框架使用类似的东西,尽管它们实际上是按照这些思路打包所有东西(包括客户机代码和模板)


最终,我认为这是个人偏好的问题,我怀疑你的问题很快就会以主要观点结束

谢谢你的回答。我会记住的。我没有指出模块化设计的困难,我发现这是不可避免的相互依赖。例如,您的“文章”模块几乎不可避免地需要了解用户模块并从中导入。这不是不可克服的,但它确实意味着事情从来没有像最初的文件结构所建议的那样清晰地分开。是的,这就是为什么我不知道是否可以使用模块化模式的原因。我们的团队将致力于微服务体系结构,为此,模块化结构允许我们轻松管理代码片段。感谢您的回答。我会记住的。我没有指出模块化设计的困难,我发现这是不可避免的相互依赖。例如,您的“文章”模块几乎不可避免地需要了解用户模块并从中导入。这不是不可克服的,但它确实意味着事情从来没有像最初的文件结构所建议的那样清晰地分开。是的,这就是为什么我不知道是否可以使用模块化模式的原因。我们的团队将致力于微服务架构,为此,模块化结构允许我们轻松管理代码片段。