6. FAQ

FAQ

我应该如何构建我的应用程序?

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

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

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

我如何定义模型?

Express没有数据库的概念。这个概念由第三方Node模块决定,允许您与几乎任何数据库进行交互。

请参阅LoopBack了解以模型为中心的基于Express的框架。

我如何验证用户?

身份验证是Express未冒险进入的另一个有见地的领域。您可以使用您希望的任何验证方案。有关简单的用户名/密码方案,请参阅此示例

Express支持哪些模板引擎?

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

有关更多信息,请参阅使用Express模板引擎。

我如何处理404响应?

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

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

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

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

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

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

我如何呈现纯HTML?

你不能!没有必要使用该res.render()功能“呈现”HTML 。如果您有特定文件,请使用该res.sendFile()功能。如果您正在从一个目录提供许多资产,请使用express.static()中间件功能。