barkalov
@barkalov

JQuery UI (widget factory). Код и разметка в одном файле. Best practice?

Подскажите, пожалуйста, как в мире javascript вообще, и в jQuery UI factory в частности, принято хранить HTML-шаблоны? В стандартных коробочных виджетах jQuery UI шаблонов как таковых практически нет, они размазаны по коду .addClass'ами и .appendTo.



Однако, в моём случае html-скелет получился довольно увесистый, и я не знаю как правильно с ним поступить. Чтобы и удобно, и работало.



Как у меняСейчас я пришел к такому решению, что и код, и шаблон виджета лежат в одном отдельном .html файле, в котором содержится фабрика виджета, код её инициализирующий и код, «вешающий» её на первый потомок документа-шаблона (т.е. на div #widgetContainer).

widget.html
<div id="#widgetContainer"><br>
<!-- HTML-шаблон тут --><br>
</div><br>
<script><br>
$.widget( "my.superWidget", { ... // Фабрика виджета<br>
...<br>
$("#widgetContainer").superWidget(); // Инициализация<br>
</script><br>


main.html
...<br>
<body><br>
...<br>
<div id="widgetPlaceholder"/><br>
...<br>
</body><br>
<script><br>
$(function() {<br>
...<br>
$("#widgetPlacehodler").load("widget.html"); // Виджет в одну строку.<br>
...<br>
</script><br>
...<br>




Дико удобно, потому что виджет вставляется на страницу

одной единственной строкой, безо всяких инклюдов:$("#widgetPlacehodler").load("widget.html");<br> и всё работает.



Проблемы две:

1. Вызов асинхронный.

2. Виджетом становится не #widgetPlacehodler, а его содержимое — #widgetContainer.



Может наоборот?По идее надо бы наоборот: положить html-шаблон в js и подключать на страницу именно js через ‹script›.

Это синхронно, логично и всего на одну строку длиннее.

Но я что-то не разобрался с ходу как хранить куски html в js, не нарезая их в салат кавычками.



Всё же, как правильно?
  • Вопрос задан
  • 4633 просмотра
Пригласить эксперта
Ответы на вопрос 2
creage
@creage
Посмотрите, как сделан тимплейтинг в других библиотеках.
Ответ написан
Комментировать
demimurych
@demimurych
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы