JS數據模板分離(告別字符串拼接)-template


剛開始在寫第一個動態網頁的demo時,由於html不多,便使用字符串拼接的方法添加到dom來渲染,可是在后來寫某外賣app時也需要如此添加,打開代碼一看幾千行,突然感覺累覺不愛

一行行的拼接有這功夫別人項目都上線了。於是在苦苦尋找之下,發現了可以使用js模板來渲染,還可以跟html文件相分離,終於等到你,還好我沒放棄。

話不多說,進入正題吧

首先我們要引入一個js插件,這便是underscore.js,這個東西的功能很強大,當我發現時感覺被壓在身下無法喘氣。

然后我們可以創建一個函數,記住這個函數,等下他有大作為,因為這樣我們便可以多次調用來插入模板。

function _gettpl(tplName, data){
	return _.template($('#' + tplName).html())(data);
};

接下來便是生成模板吧,先看下面代碼,這個就是完整版了,插入以后就長這個樣子。

<ul id=“wife”>    
    <li>
        <p>我是模板</p>
    </li>
</ul>

 

我們需要在html頁面中添加<script type="text/template" id="man"></script>,將html元素全部塞進去,那么便已經生成模板了

這里要注意的是,在標簽里的內容,一般情況下<script>標簽智能補全的內容是type="text/javascript" 我們需要將其替換成type="text/template"。以及在里面命名一個id為“man”

<script type="text/template" id="man">
    <li>
        <p>我是模板</p>   
  </li>

</script>
 

這樣子就可以啦,心里是不是一萬只草泥馬奔騰而過?我拼死拼活拼接字符串,你兩句就搞完了?不不不,大俠饒命,其實我們還沒寫完這個時候我們要在js文件中寫下這么一句代碼

$('#wife').html(_gettpl('man', {'data': data}));

這個時候就是真的完成了呢。你可能要問了,那Id=“wife“的孫子是誰,其實就是你模板插進去的父類啦”。

還不懂?那親我一下就給你解釋一遍

最后在總結一下流程:

1、靜態頁html構建完成后拿到數據

2、引入underscore.js(這個自己網上下載下來就可以了)

3、將需要數據替換的html放進script標簽里(// <script type="text/template" id="xxx">  HTML模板 </script >)

4、在模板中的需要使用js的語法是以<%  %>來包裹,例如循環  

<%  _.each( 需要遍歷的數據,像data.xxx ,function(){ %> 

  HTML代碼   

<% })  %>

開始用<% %>包住第一部分代碼,分行后里面html內容不需要再用<% %>包裹,正常填寫,最后結尾的js代碼再以<% %>包住就可以了 

5、第三步script中的id,就是插入父級的id,通常在父級也會有一個id,例如 <ul id="aa"></ul>

模板是<script type="text/template" id="bb"> 

      <li>需要插入的數據</li>

      </script >

接下來在js里面便是寫 將id=“bb”的html插入到id=“aa”的容器中。

6、js通常會定義一個函數,比如  

  function _gettpl(tplName, data){

    return _.template($('#' + tplName).html())(data);

  }

函數接受2個參數,tplName是傳入的id,也就是需要插入容器的內容,id=“bb”,data就是你的數據了,接下來就可以將內容插進容器了

$('#aa').html(_gettpl('bb', {'data':data}))

這樣子他就插進去了

還想看?不了不了,營養跟不上,先到這里。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM