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