2.6. FAQ

未匹配的标注

Node.js

Express 常见问题及解答

如何组织我的应用程序?

这个问题其实没有一个明确的答案。它取决于你的项目所涉及的范围以及你的团队构成。为了尽可能的灵活,Express 没有预设任何项目结构。

你可以根据自己的风格把路由和应用的业务逻辑放在自定义的目录结构中。下面有一些例子,可以参考:

有一些 Express 的第三方扩展包,也提供了一些简化模式:

如何定义模型(model)?

Express 没有数据库的概念。通过引入第三方模块,Express 可以和绝大多数的数据库交互。

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

如何验证用户?

Express 没有自带的认证方案。你可以使用你所熟悉的认证方案。这是一个简单的用户名 / 密码认证的例子:this example

Express 支持哪些模板引擎?

Express 支持的模板引擎都有一个共同的特征:使用  (path, locals, callback) 模式渲染。consolidate.js库统一了模板接口和缓存功能,适用于大部分模板引擎。当然还有一些支持 Express  (path, locals, callback) 模式的模板引擎没有包含在内。

想了解更多信息,请查阅 在Express 中使用模板引擎

如何处理 404 响应?

在 Express 框架中,404 响应不是错误,所以处理错误的中间件不会捕获404。
之所以这样设计是因为404响应仅表明没有处理。换句话说,就是 Express 执行了所有的中间件和路由之后,仍然没有找到相应的处理器。这种情况下,你需要在程序的最下方添加一个处理器去处理404响应。

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

如何设置一个错误处理器?

错误处理器中间件的定义和其他中间件一样,唯一的区别是 4 个而不是 3 个参数,即 (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() 直接对外输出 HTML 文件。 如果你需要对外提供的资源文件很多,可以使用 express.static() 中间件。


协助译者署名

用户名 头像 职能 签名
@matteao html>

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 查看所有版本


暂无话题~