渲染模板template_(內容管理系統總結3)
阿新 • • 發佈:2019-01-29
2 template模板渲染
因為前面的總結中看到了script type=”text/html” ,在總結這章的時候又看到了script type=”text/template”,所以我就順便的研究了下這個type的意義。
必需的 type type: 規定指令碼的 MIME 型別。
MIME 型別:(Multipurpose Internet Mail Extensions) 是描述訊息內容型別的因特網標準。
MIME 訊息能包含文字、影象、音訊、視訊以及其他應用程式專用的資料
所以我們通過這個type型別來分析用那個解析器來解析這段程式碼。
這個渲染模板是underscore裡邊的方法,所以我們要引用的是underscore.js這個js檔案
首先看個能跑起來的程式碼把,其實也就是相對於上一章的render渲染改了一點:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="jquery-1.10.2.min.js"></script>
<script src="ejs.js"></script>
<script src="underscore.min.js"></script>
<style type="text/css">
.test{
display:table;
height:400px;
width:400px;
background:#99cc99;
border-radius:5px;
border:1px solid #f70;
}
.test > span{
display:table-cell;
vertical-align :middle;
text-align:center;
}
.test > span > img{
height:200px;
width:200px;
border-radius:50%;
box-shadow:1px 1px 3px rgba(0,0,0,.5);
display: inline-block!important;
}
.hide{
display: none!important;
}
</style>
<script id="testName" type="text/html">
<div class="name">
<ul class="<%= nameType%>">
<% for(var i= 0;i<data.info.list.name.length;i++) { %>
<li class="list"><%= data.info.list.name[i] %></li>
<% } %>
</ul>
</div>
</script>
</head>
<body>
<div class="test">
<span><img class="hide" src="http://d.hiphotos.baidu.com/image/h%3D200/sign=8663264274f082023292963f7bfbfb8a/f3d3572c11dfa9eca13b947665d0f703918fc1be.jpg" alt=""></span>
<a href="www.baidu.com">點我嘍!</a>
</div>
<script>
function render(id, data, isJQuery) {
var html = new EJS({
element: id
}).render(data);
return isJQuery ? $(html) : html;
}
$(".test").click(function(){
alert("test測試");
});
$(".test img").click(function(){
alert("img測試");
return false;
});
$(".test a").click(function(){
alert("哈哈,我就是來阻止你的~");
return false;
});
var data = {
info : {
list:{
name:["hello","nihao","xining"]
}
}
}
// var $nameHtml =render(testName,{data:data,nameType:"nameul"});
// var $nameHtml =new EJS({element:testName}).render({data:data,nameType:"nameul"});
var $nameHtml = _.template($("#testName").html())({data:data,nameType:"nameul"});
$("body").append($nameHtml);
</script>
</body>
</html>
這個程式碼很好理解,這裡沒有統一的定義template方法,因為template這個比較方便的,所以就沒有寫總體的方法了。
underscore.js還有很多的其他的方法,都可以使用的。推薦underscore.js的中文文件檢視:
underscore.js中文文件檢視
_.方法名:這其實就是標準的underscore.js的使用了。