ExpressJS - 最佳实践



与 Django 和 Rails 具有定义好的做事方式、文件结构等不同,Express 没有遵循定义好的方式。这意味着您可以根据自己的喜好来构建应用程序。但是,随着应用程序规模的增长,如果没有一个定义良好的结构,维护它将非常困难。在本章中,我们将了解通常使用的目录结构和关注点分离来构建我们的应用程序。

首先,我们将讨论创建 Node 和 Express 应用程序的最佳实践。

  • 始终使用npm init开始 Node 项目。

  • 始终使用--save--save-dev安装依赖项。这将确保如果您迁移到不同的平台,您只需运行npm install即可安装所有依赖项。

  • 坚持使用小写文件名和驼峰式变量。如果您查看任何 npm 模块,它的名称都是小写并用连字符分隔。每当您需要这些模块时,请使用驼峰式命名法。

  • 不要将node_modules推送到您的存储库。相反,npm 在开发机器上安装所有内容。

  • 使用config文件存储变量

  • 将路由分组并隔离到它们自己的文件中。例如,在 REST API 页面中看到的电影示例中的 CRUD 操作。

目录结构

现在让我们讨论 Express 的目录结构。

网站

Express 没有社区定义的创建应用程序的结构。以下是网站主要使用的项目结构。

test-project/
   node_modules/
   config/
      db.js                //Database connection and configuration
      credentials.js       //Passwords/API keys for external services used by your app
      config.js            //Other environment variables
   models/                 //For mongoose schemas
      users.js
      things.js
   routes/                 //All routes for different entities in different files 
      users.js
      things.js
   views/
      index.pug
      404.pug
        ...
   public/                 //All static content being served
      images/
      css/
      javascript/
   app.js
   routes.js               //Require all routes in this and then require this file in 
   app.js 
   package.json

还有其他方法可以使用 Express 构建网站。您可以使用 MVC 设计模式构建网站。有关更多信息,您可以访问以下链接。

https://code.tutsplus.com/tutorials/build-a-complete-mvc-website-with-expressjs--net-34168

以及,

https://www.terlici.com/2014/08/25/best-practices-express-structure.html.

RESTful API

API 设计起来更简单;它们不需要 public 或 views 目录。使用以下结构来构建 API -

test-project/
   node_modules/
   config/
      db.js                //Database connection and configuration
      credentials.js       //Passwords/API keys for external services used by your app
   models/                 //For mongoose schemas
      users.js
      things.js
   routes/                 //All routes for different entities in different files 
      users.js
      things.js
   app.js
   routes.js               //Require all routes in this and then require this file in 
   app.js 
   package.json

您还可以使用yeoman 生成器来获得类似的结构。

广告