2010-10-18 93 views
3

我发现了大量的浏览器端JavaScript模板,这些模板呈现一个数据值为字符串的模板。但是,我有点不确定该字符串应该如何转换为显示DOM中的元素。浏览器端JavaScript模板引擎如何呈现模板?

很明显,一种方法就是document.write - 但我认为这已经被埋没了很久。

另一个是使用element.innerHTML,但至少在几年前,这不是任何标准的一部分,它不适用于XHTML文档。

那么,现在的交易是什么? .innerHTML是一个用于XHTML的完美工具,它是标准的一部分吗?或者人们只是使用它,它的工作原理?还是有其他支持的东西?除此之外,PURE.js似乎都是关于从DOM元素中构建模板的,这对我来说很有吸引力 - 是否还有其他模板引擎以相同的方式工作?

回答

4

innerHTML几乎无处不在。

这些方法也可用于与基本上就是一个模板引擎需要做的DOM工作:

  • createElement
  • appendChild
  • createTextNode
  • removeChild
  • parentNode

像jQuery这样的库大量使用这些。

+0

我相信'innerHTML'也往往是非常快速的,与您通常的DOM方法相比。 (插入过早的优化警告。)当你考虑它时,'innerHTML'接受一个字符串,并将它变成一个DOM节点,这是浏览器在加载网页时所做的事情。如果浏览器不这么快,那就麻烦了。 – 2010-10-18 12:22:20

+0

@Paul在Chrome中,DOM比“innerHTML”快,在Firefox中它们大致相同,而在IE中,“innerHTML”要快得多。 – xj9 2010-10-18 13:02:01

+0

@indieinvader:呵呵,很高兴知道。你有什么消息来源?我发现的测试表明,在非IE浏览器中,DOM方法和innerHTML没有太大的区别。 1)http://andrew.hedges.name/experiments/innerhtml/ 2)http://blog.nqzero.com/2009/11/javascript-rendering-performance.html – 2010-10-18 13:38:28