我正在尝试将 app.js 文件中的一些变量添加到由 connect-assets 编译的文件中。
我有一个名为
file.ejs
的文件
<%- js('code.js') %>
<input type="text" value="Doe">
在
app.js
我有:
app.locals.url = 'http://123.123.123.123'
在
code.js
中,我想根据系统添加一些生产/开发变量(<%- url %>
)。当我尝试这样做时,添加的变量被拒绝,因为 connect-assets 将它们编译为标签。将变量传递到 code.js
的正确方法是什么?
code.js
被视为静态文件,因此您无法从 EJS 模板将变量传递到其中。通常,在这种情况下,您根据环境传递数据,您将设置某种可以在内部读取的全局配置变量code.js
。
您可以为不同的环境在某处设置一组设置,而不是为这样的值全局设置
app.locals
。在你的代码中的某个地方说你有这个:
var environments = {
production: {
url: 'http://1.1.1.1'
},
development: {
url: 'http://2.2.2.2'
}
};
当您渲染主页模板或易于访问的地方时,无论您所处的环境如何,您都可以传递适当的设置。渲染模板时,您可以传递设置。
html = new EJS(...).render({settings: settings['production']});
<html>
<head>
<script type="text/javascript">
var AppSettings = <%= JSON.stringify(settings); %>;
</script>
...
然后在您的
code.js
文件中,您可以直接读取AppSettings.url
。