首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >app.engine()是做什么的?什么是电话分机和回调?

app.engine()是做什么的?什么是电话分机和回调?
EN

Stack Overflow用户
提问于 2018-08-20 12:39:30
回答 2查看 724关注 0票数 2

我试着翻阅文档,他们说

App.engine(电话分机,回调) 默认情况下,将给定的模板引擎回调注册为ext将需要()基于文件扩展名的引擎。例如,如果您试图呈现一个"foo.jade“文件,Express将在内部调用以下内容,并在随后的调用中缓存require()以提高性能。

我很难弄清楚这里的ext和回调意味着什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-20 13:01:20

这是Express的视图/模板引擎功能的一部分。很多时候,请求处理程序只返回一些JSON对象。但是其他时候,您想要构建一个常规的“文档”,比如一个完整的HTML页面,或者RSS提要等等。模板引擎帮助您实现这一点,尽管它们并不是强制性的。您可以使用其他方法(例如,手工构建字符串,如果您喜欢痛苦),或者您可以使用一个库,如帕格/小胡子等。视图引擎功能基本上是将pug/胡子等库集成到express中,这样就更容易使用它们了。

链接的页面有一个很好的例子,说明了如何在实践中使用这个方法:

然后创建一个呈现index.pug文件的路由。如果未设置视图引擎属性,则必须指定视图文件的扩展名。否则,你可以省略它。 app.get('/', function (req, res) { res.render('index', { title: 'Hey', message: 'Hello there!' }) })当您向主页发出请求时,index.pug文件将被呈现为HTML。

很多时候,express都知道各种模板引擎。所以说express.set('view engine', 'pug')就足够了,只要安装了pug包,它就可以做正确的事情。

其他时候,您需要使用app.engine来更明确地告诉它该做什么。它被称为app.engine('jade', require('jade').__express)。第一个参数就是应该查找的扩展表达式。因此,当您说req.render('index', ...)时,它会查找一个index.jade文件。第二个参数是函数,它实际上是在视图引擎之间进行集成(正如我已经说过,视图引擎是一个独立于express的东西),并表示自己。consolidate.js是一个集成了很多视图引擎的包。

但是,如果要查看该函数的功能,请签出为Express开发模板引擎callback参数必须与function(filePath, options, callback)类似。filePath只是用于呈现的磁盘文件的名称,因此在上面的示例中使用了index.jadecallback是一个标准的节点回调,在出错时作为callback(err)调用,在成功时作为callback(null, renderedContent)调用。options是从req.render('index.jade', /* options */ { title: 'foo', content: 'bar' })传入的对象。然后由您决定如何根据所提供的参数实际进行呈现。

票数 5
EN

Stack Overflow用户

发布于 2018-08-20 12:49:36

简单地说: ext -扩展名,回调库(engine),它将呈现具有给定扩展名的文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51930966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档