身思乐,人事爱,稳恒不言败!

<script type="text/template">是干什么的,为什么要把html写在js中? 这是什么编程语言风格,都能这样用吗?

这段代码是我在别人的网站上看到的,很奇怪,谁能解释一下,为什么要这么写,这样写有什么好处。

<script id="login_box_tpl" type="text/template">
http://xxxx/css/$1.0.67/login.css" rel="stylesheet"/>
<!--[if lte IE 6]>
http://xxxx.org/css/$1.0.67/ie6.css" rel="stylesheet"/>
<![endif]-->

<form class="auth_mk" action="/user/doLogin.action" method="post">
        <input type="hidden" name="redirectUrl" value="/"/>
        <ul>
            <li><label for="nick">邮箱</label><input id="nick" type="text" name="email" value=""/>
            </li>
            <li><label for="password">密码</label><input id="password" type="password" name="password"/></li>
            <li class="def"><label><input name="autoLogin" type="checkbox" value="1" checked="checked"/> 下次自动登录</label>
            </li>
            <li>
                <button type="submit">登录</button>
                 <span><a href="/user/forgotPassword.action">忘记密码了</a></span>
            </li>
        </ul>

</form>
</script>

这一段存放了一个模板。
在js里面,经常需要使用js往页面中插入html内容。比如这样:

var number = 123;
$('#d').append('<div class="t">'+number+'</div>')

 

如果html很短还好说,但是遇到描述里面的这么大段,直接用字符串存储会很困难,因为不光要处理单引号,还需要很多「+」号把字符串一个个连接起来,十分的不方便。
给<script>设置type=”text/template”,标签里面的内容不会被执行,也不会显示在页面上,但是可以在另一个script里面通过获取,然后再通过相关的模板工具进行处理,插入到页面中。这样就把大段的HTML操作从js里面分离开了。
其实这里最主要的是为什么会选用这个标签吧
其实以前也有用textarea的,但是要设置隐藏,否则会被输出
用script标签的好处是默认不会显示在页面上,而且可以放置除script标签以外所有的标签,而显然模板里一般不会出现script标签,设置了type后又能保证浏览器不去执行它导致报错
这个text/template或x-template本身是不存在的,用到了scrip上这样就保证了里面不管什么内容都不会被输出或解析.仅需要时取出和h5的<template>比起来不存在兼容问题.
做个比喻:就像是异次元的保险箱.要什么取什么.
前端模板, 比连接字符串好用多了, 还可以使用循环\判断等语句, 减少工作量