1

我正在尝试将我的 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

4

1 回答 1

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直接阅读。

于 2012-12-06T08:03:37.630 回答