2016-04-04 2 views
0

У меня есть большой клиентский проект, написанный в AngularJS, который использует требование для загрузки асинхронного модуля RequireJS.RequireJS - загрузка файлов без скрипта с использованием CDN

Многие из моих угловых директив используют свои собственные HTML и CSS. Например:

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

В эти дни я работаю над делает мою работу приложений с сервисом CDN. Так что для всех файлов JavaScript Я изменил файл require.config.js на:

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

Но есть много указаний, которые загружаются на странице запуска моего приложения, и для каждого из них есть два файла (CSS, HTML), которые загружаются с моего исходного сервера, а не из CDN.

Каким образом я могу изменить файл require.config.js, чтобы заставить браузер извлекать htmls, css с сервера CDN?

Есть вариант, что для каждый файл, который будучи requir'ed - браузер будет получать его из CDN и Откат к моему происхождению сервера в случае выхода из строя CDN хотя прямо не упоминается в require.config.js?

ответ

0

path fallbacks. Вам придется назначить идентификатор вашей зависимости и определить этот идентификатор для сопоставления пути с CDN сначала, а второй. К сожалению, вам придется делать это для каждой из ваших зависимостей.

С другой стороны, рассмотрите возможность использования оптимизатора RequireJS для объединения вашего приложения в один файл или его группу, а также файлы CDN. Таким образом, вам не нужно указывать каждую из ваших зависимостей.

+0

Я собираю все файлы с помощью оптимизатора RequireJS, но это не принимает шаблоны css и html и вставляет их в связанный файл. Что я могу сделать, чтобы сохранить эти вызовы XHR для извлечения этих файлов? – johni

+0

@johni Насколько я знаю, вам все равно придется использовать конфигурационный файл даже при использовании пакета. Если я правильно помню, я использовал тот же конфигурационный файл в разработке для производства, который имеет эти сопоставления. Load RequireJS, затем конфигурацию, затем пакет. – Joseph

+0

Это также верно для моего случая, я использую тот же конфигурационный файл. Тем не менее я не вижу, как я могу сделать requirejs извлечения относительных путей-файлов из предварительно сконфигурированного cdn. Я не могу назвать ID до 100+ директив и добавить их в файл конфигурации, это безумие. Я надеялся, что есть другой способ – johni

Смежные вопросы