向连接资产添加变量

时间:2012-12-05 23:32:36

标签: node.js coffeescript express connect ejs

我正在尝试将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的正确方法是什么?

1 个答案:

答案 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