如何组织我的应用程序?
这个问题没有标准答案. 具体取决于应用的规模,和参与的团队. 为了尽可能的灵活,Express在结构方面并没有任何的规定.
路由和其余的应用逻辑可以放在任何你想放的文件中. 查看下面的例子,从中获取灵感:
Express有第三方的拓展 ,简化了一些模式:
- Resourceful routing
如何定义模型(model)?
Express 没有数据库的概念. 这块留给了第三方 Node 模块, 这样你就几乎可以接入任何数据库.
有关以模型为中心的基于Express的框架,请参见 LoopBack .如何验证用户?
认证是Express坚决不涉足的另一个领域。您可以使用您想要的任何身份验证方案。要获得一个简单的用户名/密码方案,请参阅 此示例。Express 支持哪些模板引擎?
Express支持符合(path,locals,callback)签名的任何模板引擎。要规范化模板引擎接口和缓存,请参见consolidate.js项目。未列出的模板引擎也可能支持Express签名。
有关详细信息,请参阅使用模板引擎.如何处理 404 响应?
在Express中,404响应不是错误的结果,因此错误处理程序中间件不会捕获它们。这种行为是因为404响应仅仅表示没有额外的工作要做;换句话说,Express已经执行了所有的中间件功能和路由,但发现它们都没有响应。您需要做的就是在堆栈的最底部(在所有其他函数下面)添加一个中间件函数来处理404响应:
在运行时给app.use(function (req, res, next) {
res.status(404).send("Sorry can't find that!")
})
express.Router()
的实例上动态添加路由,以便路由不会被中间件函数取代。如何设置一个错误处理器?
错误处理器中间件的定义和其他中间件一样,唯一的区别是 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()
中间件。