我正在尝试将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
的正确方法是什么?
答案 0 :(得分:1)
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
。