2016-04-04 19 views
0

非同期モジュールのロードにRequireJSを使用するAngularJSで書かれた大きなクライアント側プロジェクトがあります。RequireJS - CDNを使用してスクリプト以外のファイルをロード

私のAngularディレクティブの多くは、独自のHTMLとCSSを使用しています。たとえば :私はCDNサービスで自分のアプリケーションを機能させるに取り組んでいます

define(function (require) { 
    require('css!path/to/directive-name.css'); 
    app.directive('directive-name', function() { 
     return { 
      restrict: 'E', 
      template: require('text!path/to/directive-name.html'), 
      controller: function ($scope) { 
       // code 
      } 
     }; 
    }); 
}); 

このごろ。 だから、すべてのJavaScriptファイルのために私はにrequire.config.jsファイルを変更しました:

paths: { 
     app: [ 
      '//cdn.domain.net/path/to/main', 
      'main' 
     ], 
} 

しかし、私のアプリケーションのスタートアップページにロードされているディレクティブがたくさんあり、それらの各々のための2つのファイルが(ありますCSS、HTML)が含まれていますが、CDNからではありません。

require.config.jsファイルをどのように変更して、ブラウザがHTMLを取得できるようにすることができますか?cssはCDNサーバーから取得しますか?ブラウザがCDNからそれをフェッチし、明示的require.config.jsに記載されていないが、CDNの障害の場合には、私のオリジンサーバにフォールバックします -

はオプションがrequir'edされていますごとファイルことありますか?

答えて

0

path fallbacksがあります。依存関係にIDを割り当て、そのIDを最初にローカルのCDNでパスマッピングするように定義する必要があります。残念ながら、依存関係ごとにこれを行う必要があります。

一方、RequireJSオプティマイザを使用してアプリを1つのファイルまたは複数のファイルにまとめ、そのファイルをCDNにバンドルすることを検討してください。そうすれば、それぞれの依存関係を識別する必要はありません。

+0

私はRequireJSオプティマイザを使用してすべてのファイルをバンドルしますが、それはcssとhtmlのテンプレートを取ってバンドルされたファイルに挿入しません。 これらのファイルをフェッチするためのXHRコールを保存するにはどうすればよいですか? – johni

+0

@ johni私が知る限り、バンドルを使用していても設定ファイルを使用する必要があります。私が正しく覚えていれば、私はそれらのマッピングを持っている生産用の開発で同じ設定ファイルを使用しました。 RequireJSをロードし、次にconfigをロードし、次にバンドルをロードします。 – Joseph

+0

私の場合もそうです。同じ設定ファイルを使用します。しかし、私はrequirejsがあらかじめ設定されたcdnから相対パスファイルをフェッチする方法を見ていません。 100 +のディレクティブにIDを付けて、設定ファイルに追加することはできません。 別の方法があります – johni

関連する問題