Я думаю, что JQuery великолепен, но мне также нравится идея сохранить HTML в HTML-документе и практически не включать его в javascript. Что я имею в виду? Вы знаете, как, скажем, вы создаете динамическую таблицу, которая имеет много строк или переменное количество строк. Это именно то, что я не хочу делать:
function initBoard(symbol) {
for (var i=0;i<30;i++) {
myBoard += "<tr>";
enemyBoard += "<tr>";
for (var j=0;j<60;j++) {
myBoard += '<td bgcolor="#0000ff" id="my_sqr_'+i+'_'+j+'">'+symbol+</td>';
enemyBoard += '<td bgcolor="#ff0000" id="enemy_sqr_'+i+'_'+j+'">'+symbol+'</td>';
}
myBoard += "</tr>";
enemyBoard += "</tr>"
}
$("#my-board").html(myBoard);
$("#enemy-board").html(enemyBoard);
}
Несколько лет назад я придумал решение, которое почти хорошо работает, и я часто им пользуюсь, но мне все еще хотелось бы увидеть что-то лучшее, в этом и заключается мой вопрос. Моя текущая стратегия состоит в том, чтобы создать скрытый div в нижней части основного файла HTML. Например:
<div class="hidden-templates" style="visibility:hidden;">
<div id="board-line-tpl">
<td bgcolor="--bg-color--" id="--side--_sqr_--index1--_--index2--">--symbol--</td>
</div>
</div>
и затем javascript изменяется на что-то вроде этого:
function initBoard(symbol) {
for (var i=0;i<30;i++) {
myBoard += "<tr>";
enemyBoard += "<tr>";
for (var j=0;j<60;j++) {
// Get the template
myBoardLine = $("#board-line-tpl").html();
// substitue the template's"variables" with unique data
myBoardLine.replace(/--side--/, "my");
myBoardLine.replace(/--bg-color--/, "#0000ff");
myBoardLine.replace(/--index1--/, i);
myBoardLine.replace(/--index2--/, j);
myBoardLine.replace(/--symbol--/, symbol);
myBoard += myBoardLine;
// You get the idea. I'll leave this line as is.
enemyBoard += '<td bgcolor="#ff0000" id="enemy_sqr_'+i+'_'+j+'"></td>';
}
myBoard += "</tr>";
enemyBoard += "</tr>"
}
$("#my-board").html(myBoard);
$("#enemy-board").html(enemyBoard);
}
Хорошо, одна вещь, которую вы замечаете, что отстой в моем решении, является несколько более многословной, но, честно говоря, кажется, что она сияет, если ваш шаблон имеет какую-то сложность. Хорошим кандидатом на шаблон является HTML с 5 или более строками. Еще одна вещь в его пользу - он делает работу по извлечению HTML из Javascript. Теперь я могу позволить своему HTML-дизайнеру редактировать HTML-код в div скрытого шаблона, а также изменять его внешний вид и помещать классы по своему усмотрению (его легко научить шаблонам и тому, что они делают), и теперь он этого не делает. не нужно трогать Javascript. Однако в последнее время у меня возникли проблемы с определением целых таблиц в качестве шаблона. Когда JQuery читает шаблон, он пытается переосмыслить код таблицы и испортит его.