Javascript node.js应用程序服务器的结构是什么?

Javascript node.js应用程序服务器的结构是什么?,javascript,node.js,express,directory,socket.io,Javascript,Node.js,Express,Directory,Socket.io,我正在用socket.io制作一个node.js应用程序,我想知道正确的文件夹结构是什么。我有这些文件 Server.js package.json 及 Client.js Index.html 我还想在index.html中显示一些图像(png)。()我看到的一些文件夹名称是public、static、server和app,但我不确定它们的用途。我的应用程序使用socket.io、http、path和express 这是我的第一个问题,如果它没有正确形成,我很抱歉 谢谢。没有“适合所有

我正在用socket.io制作一个node.js应用程序,我想知道正确的文件夹结构是什么。我有这些文件

  • Server.js
  • package.json

  • Client.js
  • Index.html
我还想在index.html中显示一些图像(png)。()我看到的一些文件夹名称是public、static、server和app,但我不确定它们的用途。我的应用程序使用socket.io、http、path和express

这是我的第一个问题,如果它没有正确形成,我很抱歉

谢谢。

没有“适合所有人”的项目文件夹结构。它实际上取决于您正在工作的项目,并且会受到架构决策的强烈影响和变异

对于小型项目和学习目的,可以使用“标准”文件夹结构,如Express.js在其中使用的文件夹结构,也可以使用类似的文件夹结构

对于单人项目,我建议您保持简单,只是尝试在具有臭名昭著的不同职责的模块之间设置一些边界,例如
路由器
、数据库
模型
测试
资产
模板
、与业务逻辑相关的
服务
。足够让它有条理,并尝试在学习时开始思考如何维护解耦组件

对于更大的项目,我建议您进一步研究这个主题,Robert C.Martin的Clean Architecture对您来说是一本很棒的书,可以深入研究软件体系结构,并提出一个更适合您和项目需要的不断发展的项目结构。

没有一本“适合所有人”的书项目文件夹结构。它实际上取决于您正在工作的项目,并且会受到架构决策的强烈影响和变异

对于小型项目和学习目的,可以使用“标准”文件夹结构,如Express.js在其中使用的文件夹结构,也可以使用类似的文件夹结构

对于单人项目,我建议您保持简单,只是尝试在具有臭名昭著的不同职责的模块之间设置一些边界,例如
路由器
、数据库
模型
测试
资产
模板
、与业务逻辑相关的
服务
。足够让它有条理,并尝试在学习时开始思考如何维护解耦组件


对于更大的项目,我建议你对这个主题做进一步的研究,罗伯特·C·马丁(Robert C.Martin)的《清洁体系结构》(Clean Architecture)是一本很棒的书,可以让您深入研究软件体系结构,并提出一个更适合您的需求和项目的不断发展的项目结构。

如何组织服务器端文件完全取决于您,有许多不同的方法可以做到这一点,没有一个“正确的”方法或“最佳实践”方法。为了便于部署,您只需要在所有片段之间有一个一致的相对位置,以便它们都可以使用相对路径相互引用,而不依赖于任何绝对路径

绝对正确的一点是,您的public文件(发送到客户端的内容)通常应该位于它们自己的层次结构中,可以与服务器文件共享一个公共父级,但服务器文件不应该位于public层次结构中。所以,像这样的事情很好:

 project
      server
           server.js
           package.json
      public
           client.js
           index.html
根据您拥有的公共文件数量以及其他人可能正在处理这些文件,通常会按类型将它们分开:

project
    server
         server.js
         package.json
         node_modules
            various modules you're using in your server code
    public
         scripts
             client.js
         html
             index.html
         images
             logo.png
         style
              main.css
    database
         database stuff here
这是因为服务器和公共层次结构是分开的。这有助于解决一大堆问题,并且在您开发哪些内容是公开共享的,哪些内容不是公开共享的时,完全清楚。它还允许您使用诸如
express.static()
之类的工具,它根据请求的路由和目录中的文件名之间的名称匹配,自动为目录中的文件提供服务。这些类型的自动路由必须来自指定的公共目录,否则会有意外提供私有服务器文件的风险

如果您有数据库文件,您可以将它们放在与服务器相同级别的另一个目录中

服务器文件或公共文件在其层次结构中的具体布局完全取决于您,只要将它们分开,您需要什么服务

需要考虑的几点:

  • 你在传输或编译什么东西吗?如果是这样,您将需要源和分发层次结构
  • 这是现在还是将来可能是一个多人项目。如果是这样,项目中是否有人应该只能访问项目的某些部分(例如可能只能访问HTML、CSS和图像文件的GUI设计师)?如果是这样的话,您可能想要构建一些东西,以便提供更简单的访问
  • 您正在使用
    express.static()
    或其他工具来自动为某些类型的文件提供服务。如果是这样,它们需要被干净地隔离在一个或多个目录中,这样使用
    express.static()

  • 如何组织服务器端文件完全取决于您,有许多不同的方法可以做到这一点,没有单一的“正确”方法或“最佳实践”方法。为了便于部署,您只需要在所有片段之间有一个一致的相对位置,以便它们都可以使用相对路径相互引用,而不依赖于任何绝对路径

    绝对正确的一点是,您的public文件(发送到客户端的内容)通常应该位于它们自己的层次结构中,可以与服务器文件共享一个公共父级,但服务器文件不应该位于public层次结构中。所以,像这样的事情很好:

     project
          server
               server.js
               package.json
          public
               client.js
               index.html
    
    取决于有多少公共文件