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 に答える