将全局配置变量传递给车把模板的最佳方法是什么?

Ros*_*ndr 3 javascript node.js express handlebars.js

我有一个带有 express-handlebars 的 nodejs 应用程序,我想为 CSS 和 Javascript 的“主机”地址等内容定义变量,这些内容当前正在导入到我在特定布局中调用 form 的 header.hbs 文件中。

我创建了一个 config.js 文件,它有许多我想设置的变量,我使用以下方法将其导入到 app.js 中:

var config = require('./config.js');
Run Code Online (Sandbox Code Playgroud)

但后来我迷失了去哪里。例如,我在想我是否可以做这样的事情:

 <link href="{{config.csshost}}basev1.css" rel="stylesheet" type="text/css" /> 
Run Code Online (Sandbox Code Playgroud)

任何人都可以提供一些指针,除了每次加载模板时都声明这些变量之外,我感到很困惑。

sct*_*skw 6

您将设置应用程序本地人:

var app = express()

app.locals = {
     config: config,
     templateVar: 'test'
 }
Run Code Online (Sandbox Code Playgroud)

编辑:

您的路线将如下所示:

app.get('/', function(req, res) {
  res.render('index', {config: config});
})
Run Code Online (Sandbox Code Playgroud)

它的作用是更新express中的app.locals变量,如下所示:

app.locals = {
   config: config
}
Run Code Online (Sandbox Code Playgroud)

然后可以通过以下方式在您的模板中访问所有app.local变量:

{{config}}

//which is really
app.locals['config']
Run Code Online (Sandbox Code Playgroud)

因此,在您配置 express 的 app.js 中,您将执行以下操作:

var app = express();

app.locals.config = require('./config')

app.get('/', function(req, res) {
  return res.render('index')
})
Run Code Online (Sandbox Code Playgroud)