Раскрытие информации: я поддерживаю BOB.
Существует библиотека javascript, которая значительно упрощает этот процесс, называется BOB .
Для вашего конкретного примера:
<div><img src="the url" />the name</div>
Это может быть создано с помощью BOB с помощью следующего кода.
new BOB("div").insert("img",{"src":"the url"}).up().content("the name").toString()
//=> "<div><img src="the url" />the name</div>"
Или с более коротким синтаксисом
new BOB("div").i("img",{"src":"the url"}).up().co("the name").s()
//=> "<div><img src="the url" />the name</div>"
Эта библиотека достаточно мощная и может использоваться для создания очень сложных структур с вставкой данных (аналогично d3), например:
data = [1,2,3,4,5,6,7]
new BOB("div").i("ul#count").do(data).i("li.number").co(BOB.d).up().up().a("a",{"href": "www.google.com"}).s()
//=> "<div><ul id="count"><li class="number">1</li><li class="number">2</li><li class="number">3</li><li class="number">4</li><li class="number">5</li><li class="number">6</li><li class="number">7</li></ul></div><a href="www.google.com"></a>"
BOB в настоящее время не поддерживает внедрение данных в DOM. Это в todolist. На данный момент вы можете просто использовать вывод вместе с обычным JS или jQuery и поместить его, где захотите.
document.getElementById("parent").innerHTML = new BOB("div").insert("img",{"src":"the url"}).up().content("the name").s();
//Or jquery:
$("#parent").append(new BOB("div").insert("img",{"src":"the url"}).up().content("the name").s());
Я сделал эту библиотеку, потому что мне не понравились альтернативы вроде jquery и d3. Код очень сложный и трудночитаемый. Работать с БОБом, на мой взгляд, явно предвзято, намного приятнее.
BOB доступен на Bower , поэтому вы можете получить его, запустив bower install BOB
.