原生js封裝模板引擎template和測試

/*
   模板引擎封裝template
         實現原理:
               通過id獲取模板中的內容(注:內容爲字符串)
               調用方式:
                     找到字符串中特殊的符號.如:標籤裏的{{name}}用正則表達式替換
                     使用對象對應的屬性進行替換
               返回字符串
   @param id:傳入的模板id.如<script id="template"></script>傳入template
   @param:obj:傳入的對象數據.如:data={name:'哈哈',age:34}
*/

代碼如下:

function myTemplate(id,obj){
    //獲取字符串
    var str = document.querySelector('#'+id).innerHTML;
    //定義正則檢索字符串匹配含雙大括號的內容,\w:匹配字符,+:匹配至少一個字符,():多次匹配
    var reg = /{{(\w+)}}/;
    //檢索滿足條件
    var result = reg.exec(str);
    //循環替換直到null爲止
    while(reg.exec(str)!=null){
          //替換字符串
          var str = str.replace(result[0],obj[result[1]]);
          //再次檢索
          var result = reg.exec(str);
    }
    //獲取結果
    //console.log(str);
    return str;
}

使用模板引擎:

<!DOCTYPE html>
<html>
        <head>
                 <title>jquery-ajax</title>   
                 <meta charset="UTF-8" />    
                 <style></style>
        </head>
        <body>
                  <h1>模板引擎</h2>
                  <div></div>
                  <!--模板引擎使用-->
                  <script id="template" type="text/html">
                        <ul>
                             <li>{{name}}</li>
                             <li>{{age}}</li>
                        </ul>
                  </script>

                 <!--導入自己的模板引擎-->               
                  <script src="./template.js"></script>
                  <script>
                       var data={
                             name:'哈哈',
                             age:34
                       }
                       var str = document.querySelector('#template').innerHTML;
                       console.log('數據替換前');
                       console.log(str);
                       var result = myTemplate('template',data);
                       console.log('數據替換後');
                       document.querySelector('div').innerHTML = result;
                  </script>
        </body>
</html>

效果圖:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章