app.set函数是什么(express.js)?

14

我刚开始学习node.js,看到一个例子不明白app.set('title', 'My Site')是什么意思,请帮忙解释一下?

3个回答

21
你可以使用 express 实例来存储和检索变量。在这种情况下,你可以将标题设置为“我的网站”,并稍后用类似以下方式检索它。
var title = app.get('title');

不需要声明和保留全局变量来搞乱代码。

参数名称并不重要。你可以这样做:

app.set('jabberwocky', 'correct battery horse staples');

同样,如果您正在使用express和jade,您可能需要在模板中进一步获取“jabberwocky”的值。


编辑:由于这个答案被标记为正确并且得到了最多的投票,我有责任指出下面由Vlad Pana提供的答案:https://dev59.com/nV8e5IYBdhLWcg3w6d4_#44007538

应用程序实例上设置的许多关键名称都具有特殊含义。


6
我知道我来晚了,但我有同样的问题,这就是我来到这里的原因。 经过一些研究,我发现答案有点不完整。 如果第一个参数是应用程序设置,则必须阅读以下表格。
属性 -> 类型 -> 说明
区分大小写路由 -> 布尔值 -> 启用大小写敏感性。启用后,“/Foo”和“/foo”是不同的路由。禁用后,“/Foo”和“/foo”被视为相同。
环境 -> 字符串 -> 环境模式。在生产环境中一定要设置为“production”;请参见生产最佳实践:性能和可靠性。 process.env.NODE_ENV(NODE_ENV环境变量)或者如果未设置NODE_ENV,则设置为“development”。
ETag -> 各种 -> 设置ETag响应头。可能的值,请参见ETag选项表。
jsonp回调名称 -> 字符串 -> 指定默认的JSONP回调名称。
json替换器 -> 各种 -> 由JSON.stringify使用的'replacer'参数。 注意:子应用程序将继承此设置的值。
json空格 -> 各种 -> 由JSON.stringify使用的'space'参数。这通常设置为用于缩进漂亮的JSON的空格数。 注意:子应用程序将继承此设置的值。
查询解析器 -> 各种 -> 通过将值设置为false来禁用查询解析,或者将查询解析器设置为使用“simple”或“extended”或自定义查询字符串解析函数。 简单的查询解析器基于Node的本地查询解析器querystring。 扩展的查询解析器基于qs。 自定义查询字符串解析函数将接收完整的查询字符串,并必须返回一个查询键及其值的对象。
严格路由 -> 布尔值 -> 启用严格路由。启用后,路由器将“/foo”和“/foo/”视为不同。否则,路由器将“/foo”和“/foo/”视为相同。 注意:子应用程序将继承此设置的值。
子域偏移量 -> 数字 -> 要访问子域的主机中要删除的点分隔部分的数量。
信任代理 -> 各种 -> 表示应用程序位于前置代理后面,并使用X-Forwarded-*头确定连接和客户端的IP地址。注意:X-Forwarded-*头很容易被欺骗,检测到的IP地址不可靠。
当启用时,Express会尝试确定通过前端代理或代理系列连接的客户端的IP地址。然后,req.ips属性包含客户端连接的IP地址数组。要启用它,请使用信任代理选项表中描述的值。 trust proxy设置使用proxy-addr包实现。有关更多信息,请参阅其文档。 注意:子应用程序将继承此设置的值,即使它具有默认值。
views -> 字符串或数组 -> 应用程序视图的目录或目录数组。如果是数组,则按照它们在数组中出现的顺序查找视图。
process.cwd() + '/views'
view cache -> 布尔值 -> 启用视图模板编译缓存。
view engine -> 字符串 -> 默认引擎扩展名(当省略时)。 注意:子应用程序将继承此设置的值。
x-powered-by -> 布尔值 -> 启用“X-Powered-By: Express”HTTP头。

1
这是一个非常好的补充。你说得对,有些设置不仅仅是任意的名称,而是会影响应用程序的行为。 - ffflabs

1
使用以下内容:
app.set('views', path.join(__dirname, 'views'));

这将把您的应用程序视图文件夹设置为类似于以下内容:
/Users/jilles/Project/myApp/views

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接