использовать один большой внешний файл для многих шаблонов JavaScript с backbone.js? - PullRequest
3 голосов
/ 21 декабря 2011

У меня есть две разные HTML-страницы, которые обслуживают магистральные приложения.До сих пор я помещал все шаблоны js в каждый соответствующий HTML-файл.

Теперь я немного рефакторинг и хотел бы разделить некоторые базовые представления между файлами.При загрузке представления, которое не может найти шаблон js, произойдет ошибка всего приложения.Я знаю, что правильный способ объединить эти два элемента - иметь внешние шаблоны js, например, с использованием EJS, и иметь по 1 шаблону на файл, однако я хотел бы просто иметь один огромный HTML-файл со встроенным <script type='text/template'> и делитьсяфайл шаблона HTML между моими 2 страницами.Это возможно?Я попытался получить внешние шаблоны js с помощью AJAX и записать их в заголовок, но базовые представления по-прежнему не могут их найти.

Кто-нибудь еще хочет иметь файл со многими шаблонами javascript?Я также обнаружил, что у меня неуправляемое количество файлов, открытых при использовании ejs.Любая помощь будет наиболее ценной.

Ответы [ 3 ]

2 голосов
/ 22 декабря 2011

Я использую дополнительный файл javascript / coffeescript и использую шаблон для подчеркивания , чтобы позаботиться обо всем. Таким образом, вы можете включать шаблоны и помещать их в любое количество (или несколько) файлов, сколько захотите.

1 голос
/ 21 декабря 2011

Я использую один файл для всех шаблонов моего текущего проекта, и он работает довольно хорошо.

Это сайт Asp.Net, поэтому я превратил файл шаблона в пользовательский элемент управления, чтобы легко включить его на любую страницу, использующую Backbone.

0 голосов
/ 06 ноября 2012

Если вы выбираете все шаблоны через AJAX, возможно, вам не нужно записывать их в заголовок.

Вы можете отправлять шаблоны клиенту как объект JSON, например:

{"about":"<p>About</p>...","gallery":"<p>Gallery</p>...","contact":"<p>Contact</p>..."}

После извлечения храмов вы можете сохранить их как переменные шаблонов внутри какого-либо объекта (или хранилища локалей), и после этого вы можете сделать следующее:

var tempStr = templates['about'],
    template = new EJS({element:{value: tempStr, id: 'about'}}),
    content = template.render();
...