偶然看到一个项目,script标签里面嵌入html标签,没接触过这样的,哪位老哥解释一下这种...
<script type="text/itpl" id="tpl_readonly">
<div class="field_line">
<div class="field_key"><%=data.key%>:</div>
<div class="field_content readonly test">
<%if(data.type == 'text' || data.type == 'textarea'){%>
<span class="editable" dbk="<%=data.dbk%>"><%=data.html%></span>
<%}else{%>
<%=data.html%>
<%}%>
</div>
<div class="clear"></div>
</div>
</script>
当script标签写了type且不是JavaScript对应type的时候,就相当于一个自定义的不可见标签,内容不会展示,但是dom是存在的,这种特性经常用来作为字符串模板引擎,放置模板的地方。就跟在js里面定义一个
主要历史原因是:
以前的js中没有类似与字符串模板 `` 这样的多行字符串标识,你要在js里面定义多行字符串很麻烦,要么在每行结尾加转义符,要么用引号和 + 来拼接,而且有时候还会有一些特殊字符需要转移,可读性和可维护性都很差。 这样把这种需要频繁修改维护的字符串模板放在一个更合适的地方就有必要了。