Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

关于HTML模板

  虽然WebComponents中提供了TEMPLATE标签,但是目前WebComponents的支持并没有到普及的程度,在正式项目中可能还需要使用传统的方式自己模拟实现HTML模板。实现HTML模板的方式并不止一种,我们应该选择哪一种方式来实现会比较科学呢?
  HTML模板是为了让其包含的内容不直接被作为HTML解析,我们可以通过一些有这样性质的标签来做HTML模板。一种很普遍的做法是使用SCRIPT标签,将其type设置成非程序文本来作为HTML模板。虽然我目前的程序也是使用这种方法,但总觉得有点不科学的地方。回忆一下遥远的过去,曾经的XMP标签为什么会被废弃呢?其实它和SCRIPT标签有很多相似之处,比如我们这么使用SCRIPT标签,它不就和XMP标签一样了吗? <body>
<style>
script {display:block;white-space:pre;}
script,xmp {font:14px/1.75 Simsun;border:1px solid red;}
</style>
<script type="text/plain">
  <strong>我是SCRIPT</strong>
</script>
<xmp>
  <strong>我是XMP</strong>
</xmp>

  那么我们反过来,把XMP标签设置成隐藏的,不就和SCRIPT标签一样了吗?于是,使用SCRIPT标签来存放HTML模板和使用XMP标签有什么区别呢?那么问题就找到了,我们犯了和XMP标签同样的错误。既然内容不会被解析,我们就无法对结束标签进行转义,所以他们无法实现嵌套。
  我们需要其内容不被作为HTML解析,但又支持转义的标签。TEXTAREA不就是这样的标签吗?它包含的标签不会被作为HTML解析,但却支持HTML转义 <textarea rows="3" cols="40">
<textarea>只转义斜杠<&#x2F;textarea>
&lt;textarea&gt;完全转义&lt;&#x2F;textarea&gt;
</textarea>
  当我们从TEXTAREA的value属性上读取内容时,所有的HTML转义都会被还原,把它作为模板的话就可以实现嵌套的模板了。是不是比SCRIPT的方式更科学一些呢?
  最后要注意的是,TEXTAREA毕竟是属于控件,如果在FORM中可能会受到一些影响,使用时需要稍微注意。
网名:
3.80.55.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^