4

В настоящее время я создаю Javascript-библиотеку, которая может быть использована для легкого создания встраиваемых носителей на основе URL-файла медиафайла, а затем контролироваться с помощью Javascript-методов и событий (подумайте что-то вроде Flash/Silverlight JW player).Кросс-доменные шаблоны с Javascript

Конечно, я мог бы просто кошки все HTML-теги из библиотеки Javascript и отправить его в браузер:

function player(url) { 
    document.write('<object type="foo"><param name="something" value="bar">' + 
    <param name="source" value=" + url + '/></object>'); 
} 

Но я думаю, что это очень некрасиво практика, как правило, создает неуправляемый код, нечитабельно, если вы просмотрите его несколько недель спустя.

Итак, решение для шаблонов, похоже, подходит для решения проблемы. Я искал EJS, потому что он загружает шаблоны с помощью AJAX, поэтому вы можете управлять своими шаблонами в отдельном файле, а не непосредственно на HTML-странице.

Существует одна «игра» с этой: моя библиотека должна быть полностью междоменной: сама библиотека может быть расположена на foo.com, в то время как сервисный сайт может быть расположен на bar.com. Поэтому, если bar.com захочет добавить медиаплеер, используя библиотеку, ему необходимо выполнить вызов AJAX в шаблон, расположенный на foo.com, который не будет работать из-за политики одного и того же происхождения в браузерах.

AFAIK, нет библиотеки, которая использует что-то вроде JSONP для чтения и записи шаблонов, чтобы обойти эту проблему.

Может ли кто-нибудь указать мне на решение этой проблемы?

ответ

3

Отвечая на мой собственный вопрос: вам нужно какое-то серверное решение, которое поставляет JSONP для решения этой проблемы. Скажем доу есть шаблон на сервере foo.com, вы могли бы иметь серверный скрипт, который отвечает на запросы, подобные этим:

http://foo.com/template/bar.html?callback=cb 

Что бы вернуть:

cb({ 
    "html" : "<p>i'm a template!</p>" 
}); 

Затем вы можете использовать любой язык шаблона, который вы хотите, и проанализировать шаблон в своем приложении.

0

Очень поздно к этому вопросу, но я пришел к выводу, что KnockOut JS - лучшее решение для стороннего преобразования шаблонов. Если вы загружаете JS на веб-страницы сторонних разработчиков, Knockout позволяет очень легко вводить ваши данные в DOM без необходимости хранить весь раздел HTML в качестве шаблона, который вы «визуализируете» (это парадигма, которая усы и аналогичное использование).

код прост - вот веб-страница регион третьей стороны вы хотите шаблон:

<p>First name: <strong data-bind="text: firstName"></strong></p> 
<p>Last name: <strong data-bind="text: lastName"></strong></p> 

После самой загружающего KNOCKOUT библиотеки JS, то вы просто представить некоторые данные KNOCKOUT как JavaScript «модели данных объект "и он делает все остальное:

// This is a simple *viewmodel* - JavaScript that defines the data and behavior of your UI 
function AppViewModel() { 
    this.firstName = "Bert"; 
    this.lastName = "Bertington"; 
} 

// Activates knockout.js 
ko.applyBindings(new AppViewModel()); 

Ссылки: