node.js - 添加变量到连接 Assets

标签 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 的正确方法是什么?

最佳答案

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['product']});

<html>
  <head>
    <script type="text/javascript">
      var AppSettings = <%= JSON.stringify(settings); %>;
    </script>

    ...

然后在 code.js 文件中,您可以直接读取 AppSettings.url

关于node.js - 添加变量到连接 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13734447/

相关文章:

node.js - 如何在关联模型中执行 find()/where()

javascript - 如何使用node.js执行多个http请求

node.js - MongoDB - 获取排行榜前 5 个字段

backbone.js - 如何在主干文章中添加调整大小事件?

javascript - Express 和 Jade 中内联 jade.render() ?

node.js - 在 session ID 中包含工作端口号的安全影响

javascript - 使用摩卡和 CoffeeScript 进行 UI 测试

javascript - 如何在 coffeescript js 中使用 Rails 助手

node.js - nginx如何代理express(node.js)?为什么res.data是index.html?

javascript - NodeJS + Express 与 Ajax