使用 Express.js 在 Node.js 中设置路由的最佳方式

Posted

技术标签:

【中文标题】使用 Express.js 在 Node.js 中设置路由的最佳方式【英文标题】:Best way to set up routes in Node.js with Express.js 【发布时间】:2012-08-01 02:50:20 【问题描述】:

我想知道如何在 Express.js 中构建我的路线。这是我现在的应用程序目录:

  ├── public
  │   ├── images
  │   ├── javascripts
  │   │   ├── showLogin.js
  │   │   └── showSignup.js
  │   └── stylesheets
  │       ├── dash.styl
  │       ├── reset.styl
  │       ├── space.styl
  │       ├── style.css
  │       ├── style.styl
  │       └── typography.styl
  ├── routes
  │   └── index.js
  ├── views
  │   ├── dash.jade
  │   ├── index.jade
  │   ├── layout.jade
  │   └── space.jade
  ├── app.js
  └── package.json

最好将 routes/index.js 分解成几个单独的路由文件吗?这个我试过了,显然我不太擅长,哈哈。

另一种选择是在某处引入 lib 目录。通常在哪里这样做?

任何其他建议都会动摇!

【问题讨论】:

自从 Express.js 4.0 以来,这对我来说发生了变化。我现在对网站路由和 api 路由使用单独的路由器。 【参考方案1】:

我们中的几个人创建了一个小型参考应用程序来编写标准的 Express 应用程序结构。它并不过分复杂或任何东西,我们只是试图创建一些易于理解的东西,并且具有允许应用程序随着时间的推移而增长的结构。

你可以在这里找到它:https://github.com/EAAppFoundry/tableau

当您在那里时,请随时向我们提供反馈。我相信它可以改进。

希望对你有帮助!

【讨论】:

看起来很有趣。我不知道我是否有足够的经验来提供有价值的输入,但这里有:我看到有人将他们的配置放入 JSON 文件 publicConfig.json 和 privateConfig.json,将私有配置保持在应用程序上方的一个目录级别出于安全原因,这似乎是一种有趣的方式。希望对您有所帮助! 谢谢!这是关于 privateConfig.json 的好主意。我一直想做一些隐藏敏感信息(主要是数据库连接信息)的事情,b/c 将这些东西检查到 github 并不是最好的主意。 :) 同意。我自己还没有尝试过,所以如果你成功了,请分享! 如果您遵循仅提供静态文件 (app.use(express.static();) 的“/public”目录的约定,那么将 privateConfig.json 放在应用程序目录应该没问题。你真的不应该(并且可能不)静态地为应用程序基础目录提供服务。@Don 在你的 .gitignore 中添加“privateConfig.json”(和任何其他敏感文件)作为一行。你甚至可以将其通配符为“private*”,然后按照约定为任何敏感文件添加前缀。【参考方案2】:

查看我对ExpressJS How to structure an application? 的回复。我喜欢将路由分组到控制器(登录、购物车、偏好、照片等)中,并清晰地分离关注点。

【讨论】:

【参考方案3】:

看看 PayPal 对 KrakenJS 所做的工作。 它建立在 express 之上,但它添加了一个配置层,以保持路由等超级整洁。

【讨论】:

以上是关于使用 Express.js 在 Node.js 中设置路由的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章

使用 Express.js 在 Node.js 中设置路由的最佳方式

node.js + express.js:使用 mongodb/mongoose 处理会话

我可以在 Node.js/Express 中动态导入 TypeScript 模块吗?

javascript 在Express.JS中的Node.JS中使用Fetch API

在Javascript(node.js,express.js,ejs)中访问服务器端变量[关闭]

如何在 Node.js / Express.js 中将中间件放在它自己的文件中