当前位置: 首页 > 面试题库 >

Express.js查看“ globals”

吴松
2023-03-14
问题内容

我正在使用Express.js(在Node.js上),并且我知道您可以通过“
locals”参数使用自定义数据呈现视图。(res.render("template", { locals: { foo: "bar" } });

有什么办法可以拥有“全局变量”吗?(即每个视图均可访问的数据)

我看到了view options,但这不是递归的,因此,如果我在模板中使用任何本地语言,它将替换我设置的本地语言。

这是我的用例:我想这样做,以便可以每页添加CSS /
JS文件,这是我的主要布局的一部分。问题是,如果我没有在每个渲染器上显式设置这些数组,则会收到未定义的错误,因此在我的模板中,我总是必须typeof css !== "undefined"跳舞。此外,我还有其他选择框选项列表,不需要将其显式添加到每个表单中。


问题答案:

对于自Express 3发行以来可能遇到此问题的人来说,值得注意的是,“ dynamicHelpers”方法已不复存在。

相反,您可以使用app.locals函数,该函数充当可以存储值或函数的对象,然后使它们可用于视图。例如:-

// In your app.js etc.
app.locals.title = "My App";
app.locals({
    version: 3,
    somefunction: function() {
        return "function result";
    }
});

// Then in your templates (shown here using a jade template)

=title
=version
=somefunction()

// Will output

My App
3
function result

如果您需要访问请求对象以提取信息,则可以编写一个简单的中间件函数并使用app.settings变量。

例如,如果您使用connect-flash向用户提供消息,则可以执行以下操作:

app.use(function(req, res, next) {
    app.set('error', req.flash('error'));
    next();
});

这将使您可以使用模板中的= settings.error访问错误消息。

这些主题在这里进行了介绍,尽管内容简短:http :
//expressjs.com/api.html#app.locals

app.locals 现在是一个简单的JavaScript对象,因此每个属性都必须一个一个地设置。

app.locals.version = 3;
app.locals.somefunction = function() {
    return "function result";
}

res.locals提供了完全相同的功能,只是应将其用于特定于请求的数据而不是应用程序范围的数据。用户对象或设置是常见的用例。

res.locals.user = req.isAuthenticated() ? req.user : null;
res.locals.userSettings = {
    backgroundColor: 'fff'
}


 类似资料:
  • 先看导出了哪些 2.3.1 createApplication 设置默认导出了一个createApplication方法,这个就是我们整个程序的入口。 exports = module.exports = createApplication; function createApplication() { var app = function(req, res, next) { app

  • Express 是一个简洁而灵活的 node.js Web应用框架, 提供一系列强大特性帮助你创建各种Web应用。Express 不对 node.js 已有的特性进行二次抽象,我们只是在它之上扩展了Web应用所需的功能。丰富的HTTP工具以及来自Connect框架的中间件随取随用,创建强健、友好的API变得快速又简单 示例代码: var express = require('express')va

  • 主要内容:查看 XML 文件,查看无效的 XML 文件,其他 XML 实例,为什么 XML 显示这个样子?在所有主流的浏览器中,均能够查看原始的 XML 文件。 不要指望 XML 文件会直接显示为 HTML 页面。 查看 XML 文件 <?xml version="1.0" encoding="ISO-8859-1"?> - < note > < to > Tove </ to > < from > Jani </ from > < heading > Reminder </ heading >

  • 本文档介绍如何查看 TiDB 集群各组件日志,以及 TiDB 慢查询日志。 TiDB 集群各组件日志 通过 TiDB Operator 部署的 TiDB 各组件默认将日志输出在容器的 stdout 和 stderr 中。可以通过下面的方法查看单个 Pod 的日志: kubectl logs -n ${namespace} ${pod_name} 如果这个 Pod 由多个 Container 组成,

  • 在写 node.js 代码的时候,有时会忘记某个模块中有哪些方法及其用法,经常要去官网翻一下api文档。 这里介绍下怎么使用vsc来搞定这一问题。 打开vsc控制台(Help > Toggle Developer Tools > Console) 在控制台写代码,查询模块方法。 过程如下图: vsc是用atom-shell(现在叫electron)写的,这玩意和node-webkit(现在叫nw.

  • 查看文件里面的内容,你可以用 vi 打开这个文件,如果你只想输出文件里的内容,可以使用 cat 命令。如果文件比较大,你只想输出文件的最后一小部分,可以使用 tail 命令。 先在 ninghao-project/README.md 文件里追加点内容,可以这样做: echo "hello" >> ninghao-project/README.md cat cat,可以直接输出文件里的内容。 ca