一个简单的 nodejs 应用程序,带有 MVC 和 API

  • 第一个主要区别是动态生成的目录,它们将用于托管和源目录。
  • 源目录将具有配置文件或文件夹,具体取决于你可能具有的配置量。这包括你可以选择放在 config 目录中的环境配置和业务逻辑配置。
 |-- Config
        |-- config.json
        |-- appConfig
            |-- pets.config
            |-- payment.config
  • 现在是我们区分服务器端/后端和前端模块的最重要的目录。2 目录服务器webapp 分别代表后端和前端,我们可以选择将其放入源目录即可。 src

    根据个人选择,你可以使用不同的名称来获取服务器或 webapp,具体取决于你的意义。确保你不想让它太长或太复杂,因为它在最终的内部项目结构中。

  • 服务器目录中你可以拥有控制器,App.js / index.js,它将是你的主要 nodejs 文件和起点。服务器目录。也可以有 dto 目录,它包含 API 控制器将使用的所有数据传输对象。

     |-- server
          |-- dto
              |-- pet.js
              |-- payment.js
          |-- controller
              |-- PetsController.js
              |-- PaymentController.js
          |-- App.js
    
  • webapp 目录可以分为 publicmvc 两个主要部分,这又受到你想要使用的构建策略的影响。我们使用 browserfiy 构建 webapp 的 MVC 部分并最小化 mvc 目录中的内容。

    | - webapp | - public | - mvc

  • 现在,公共目录可以包含所有静态资源,图像,css(也可以包含 saas 文件),最重要的是 HTML 文件。

|-- public 
    |-- build  // will contianed minified scripts(mvc)
    |-- images
        |-- mouse.jpg
        |-- cat.jpg
    |-- styles
        |-- style.css
    |-- views
        |-- petStore.html
        |-- paymentGateway.html
        |-- header.html
        |-- footer.html
    |-- index.html
  • 所述 MVC 目录将包含前端逻辑包括模型,该视图控制器和任何其它 utils 的可能需要作为 UI 的一部分的模块。index.js 或 shell.js 中的任何一个也可以包含在你的目录中。

     |-- mvc
         |-- controllers
             |-- Dashborad.js
             |-- Help.js
             |-- Login.js
         |-- utils
         |-- index.js
    

所以在最后整个项目结构看起来像 below.And 一个简单的构建任务一样一饮而尽 browserify 会再缩小 MVC 脚本,并在发布公开目录。然后我们可以通过 express.use(satic(‘public’)) api 将此公共目录作为静态资源提供。

    |-- node_modules
    |-- src
        |-- server
            |-- controller
            |-- App.js   // node app
        |-- webapp
            |-- public
                |-- styles
                |-- images
                |-- index.html
            |-- mvc
                |-- controller
                |-- shell.js  // mvc shell
    |-- config
    |-- Readme.md
    |-- .gitignore
    |-- package.json