2012-12-05 76 views
1

我想从我的app.js文件中将一些变量添加到由连接资产编译的文件中。将变量添加到连接资产

我有一个名为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

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