FAQ

How should I structure my application?

这个问题没有明确的答案. 答案取决于您的应用程序规模和所涉及的团队. 为了尽可能灵活,Express不对结构进行任何假设.

路由和其他特定于应用程序的逻辑可以根据需要存储在任意目录结构中的任意数量的文件中. 查看以下示例以获取灵感:

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

How do I define models?

Express没有数据库的概念. 该概念由第三方节点模块决定,使您可以与几乎所有数据库进行接口.

有关以模型为中心的基于Express的框架,请参见LoopBack .

How can I authenticate users?

身份验证是Express禁止涉足的另一个领域. 您可以使用所需的任何身份验证方案. 有关简单的用户名/密码方案,请参见以下示例 .

Which template engines does Express support?

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

有关更多信息,请参阅将模板引擎与Express结合使用 .

How do I handle 404 responses?

在Express中,404响应不是错误的结果,因此错误处理程序中间件将不会捕获它们. 此行为是因为404响应仅表明没有要做的其他工作. 换句话说,Express已经执行了所有中间件功能和路由,但发现它们均未响应. 您需要做的就是在堆栈的最底部添加一个中间件功能(在所有其他功能下方)以处理404响应:

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

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

How do I setup an error handler?

您使用与其他中间件相同的方式来定义错误处理中间件,除了使用四个参数而不是三个参数之外; 特别是签名(err, req, res, next)

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

有关更多信息,请参见错误处理 .

How do I render plain HTML?

你不! 无需使用res.render()函数"渲染" HTML. 如果您有特定文件,请使用res.sendFile()函数. 如果要从目录中提供许多资产,请使用express.static()中间件功能.

Previous: More examples

by  ICOPY.SITE