2016-04-04 17 views
0

AngularJS'de yazılan ve async modülü yüklemesi için RequireJS kullanan büyük istemci tarafı bir projem var.RequireJS - komut dosyası olmayan dosyaları CDN kullanarak yükleme

Köşeli yönergelerimin çoğu kendi HTML ve CSS'lerini kullanır. Örneğin :

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 
      } 
     }; 
    }); 
}); 

Bir CDN hizmeti ile başvurum işi yapmaya çalışıyorum Bugünlerde. Yani tüm JavaScript dosyaları için ben require.config.js dosyayı değişti:

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

Ama benim uygulamanın başlangıç ​​sayfasında yüklenirken direktifleri bir sürü ve bunların her biri için iki dosya (vardır Kökeni sunucumdan yüklenen ve CDN'den yüklenmeyen CSS, HTML).

Tarayıcıyı htmls, css'nin CDN sunucusundan almasını sağlamak için require.config.js dosyasını nasıl değiştirebilirim?

requir'ed ediliyor her dosya için bir seçenek var mı - Açıkça require.config.js yer almadığı halde tarayıcı CDN onu alıp bunu ve CDN arızası durumunda benim kaynak sunucuya çare?

cevap

0

path fallbacks'da bulunmaktadır. Bağımlılığınıza bir kimlik atamanız ve bu kimliği, ilk olarak yerel ikinci CDN ile yol eşlemesine sahip olacak şekilde tanımlamanız gerekir. Maalesef, bağımlılıklarınızın her biri için bunu yapmak zorundasınız.

Diğer taraftan, uygulamanızı tek bir dosyada veya bir grupta paketlemek için RequireJS optimize ediciyi kullanmayı ve CDN bu dosyaları kullanmayı düşünün. Bu şekilde, bağımlılıklarınızın her birini tanımlamak zorunda değilsiniz.

+0

Tüm dosyaları RequireJS optimize edici kullanarak paketliyorum, ancak bu css ve html şablonlarını almaz ve bunları birleştirilmiş dosyaya ekler. Bu dosyaları almak için XHR çağrılarını kaydetmek için ne yapabilirim? – johni

+0

@johni Bildiğim kadarıyla, paketi kullanırken bile bir yapılandırma dosyası kullanmanız gerekecek. Doğru hatırlamıyorsam, bu yapılandırmalara sahip olan üretim için aynı yapılandırma dosyasını kullandım. Load RequireJS, ardından config, daha sonra bundle. – Joseph

+0

Bu benim durumum için de geçerli, aynı yapılandırma dosyasını kullanıyorum. Yine de, önceden yapılandırılmış CDn'den göreli yol dosyaları getirmeyi nasıl gerektirebilirim göremiyorum. 100+ direktiflere bir isim veremiyorum ve bunları config dosyasına ekleyemiyorum, bu delilik. Başka bir yol olduğunu umuyorum – johni

İlgili konular