常见问题

我应该如何组织我的应用程序?

这个问题没有确切的答案。答案取决于您的应用程序的规模和所涉及的团队。为了尽可能灵活,Express 在结构方面不作任何假设。

路由和其他应用程序特定逻辑可以存在于您希望的任意数量的文件中,在您喜欢的任何目录结构中。请查看以下示例以获取灵感:

此外,还有一些 Express 的第三方扩展,它们简化了其中一些模式:

我如何定义模型?

Express 没有数据库的概念。这个概念留给了第三方 Node 模块,让您可以与几乎任何数据库进行接口。

请参阅 LoopBack,这是一个以模型为中心的基于 Express 的框架。

我如何验证用户?

认证是 Express 不涉足的另一个有主观性的领域。您可以使用任何您希望的认证方案。对于简单的用户名/密码方案,请参阅此示例

Express 支持哪些模板引擎?

Express 支持任何符合 (path, locals, callback) 签名的模板引擎。为了规范模板引擎接口和缓存,请参阅 consolidate.js 项目以获得支持。未列出的模板引擎可能仍然支持 Express 签名。

更多信息,请参阅在 Express 中使用模板引擎

我如何处理 404 响应?

在 Express 中,404 响应不是错误的结果,因此错误处理中间件不会捕获它们。这是因为 404 响应只是表明没有额外的工作要做;换句话说,Express 已经执行了所有中间件函数和路由,发现它们都没有响应。您只需在堆栈的最底部(所有其他函数之下)添加一个中间件函数来处理 404 响应。

app.use((req, res, next) => {
  res.status(404).send("Sorry can't find that!")
})

express.Router() 实例上运行时动态添加路由,这样路由就不会被中间件函数取代。

我如何设置错误处理程序?

您定义错误处理中间件的方式与定义其他中间件相同,只是它有四个参数而不是三个;具体来说,签名是 (err, req, res, next)

app.use((err, req, res, next) => {
  console.error(err.stack)
  res.status(500).send('Something broke!')
})

更多信息,请参阅错误处理

我如何渲染纯 HTML?

您不需要!没有必要用 res.render() 函数“渲染”HTML。如果您有一个特定文件,请使用 res.sendFile() 函数。如果您从一个目录提供许多资产,请使用 express.static() 中间件函数。

Express 需要哪个版本的 Node.js?

上一页:更多示例

编辑此页面