1. 程式人生 > >Underscore模版引擎的使用-template方法

Underscore模版引擎的使用-template方法

之前寫小網頁裡有遇到在DOM中增加大量的html結構的時候,傻乎乎的在js中寫一堆模版,然後用replace一個一個做替換。當時就是難看了點,不覺得啥,現在瞭解了模版引擎之後回頭來看真的比較捉急了,以後是不會那麼傻了

看了《javascript程式設計實戰》這本書後,個人認為比較好用的一個模版引擎,Underscore中的template方法。

_.template(templateString, [data], [settings])

這是template方法的api,可接受三個引數,其中:

第一個引數也是必須的引數是模版字串,你可以通過<%=  %> 來插入變數,還可以通過<%  %>來插入js程式碼,也可以通過<%-  %>來進行html轉義,如果變數很多,可以使用<% print() %>來簡化。

第二個引數是傳入模版的資料,如果不傳第二個引數,那麼這個方法會返回一個模版函式,這個模版函式可以穿入資料返回完成的模版,如果傳入data引數則會直接返回一個已完成的模版。

第三個引數是設定,比如這個方法預設是尋找<%  %>來進行替換。

用法其實很簡單

//定義模板
var tem = _.template("hello <%= name %>");
//編譯模板
var compiled=tem({name: mike});
console.log(complied);  //hello mike
//追加到DOM上
$('body').append(complied); 
<span style="font-size:18px;">var compiled = _.template("hello: <%= name %>");
compiled({name: 'moe'});
=> "hello: moe"

var list = "<% _.each(people, function(name) { %> <li><%= name %></li> <% }); %>";
_.template(list, {people: ['moe', 'curly', 'larry']});
=> "<li>moe</li><li>curly</li><li>larry</li>"

var template = _.template("<b><%- value %></b>");
template({value: '<script>'});
=> "<b><script></b>"</span>

可以注意到,模版中可以插入js程式碼,那麼對於很長的帶有相當重複性的內容,可以做這樣的處理

將他和其他JavaScript完全隔離開

type="text/template"表示這是個模板
<script type="text/template" id="tpl">
  <% _.each(data, function(n){ %>
    <p>姓名:<%= n.name %>,年齡:<%= n.age %>,性別:<%= n.sex %></p>
  <% }); %>
</script
>
//也可以用  var myTem=_.template($('#tpl').text());
var data = [
  {
    name: 'mike',
    age: 18,
    sex: '男'
  },
  {
    name: 'nina',
    age: 20,
    sex: '女'
  },
  {
    name: 'elle',
    age: 26,
    sex: '女'
  }
];    
$('body').append(_.template($('#tpl').html(), data));

這樣在js程式碼中就可以只作資料處理,而不用出現那一串又臭又長的模版字串,大大提高了程式碼可讀性,也在某種意義上實現了資料和表現的分離。

相關推薦

Underscore模版引擎的使用template方法

之前寫小網頁裡有遇到在DOM中增加大量的html結構的時候,傻乎乎的在js中寫一堆模版,然後用replace一個一個做替換。當時就是難看了點,不覺得啥,現在瞭解了模版引擎之後回頭來看真的比較捉急了,

template 模版引擎 ——輪播圖

html原始碼: <div id="scrollPic" class="carousel slide" data-scrollPic> <!-- 輪播(Carousel)指標 --> <ol class="carousel-indica

第六章:FLASK模版引擎以及模版方法

temp 不想 set 並且 art xtend string 截取字符串 一個數 一,上節回顧:   1) 什麽是藍圖?   2) 為什麽用藍圖?   3) 怎麽實例化一個藍圖?   4) 怎麽將藍圖註冊到flask的核心對象上? 二,什麽是模版引擎?

Phalcon 使用Volt模版引擎

min vol 更換 phalcon 編譯過程 base false 年齡 擴展 volt 是Phalcon中集成的模板引擎,我們也可以更換為其他模板引擎或同時使用多個模板引擎。本文只介紹 Phalcon 自帶的 volt模板引擎。 啟用Volt 和其他模板引擎一樣,我們需

js模版引擎開發實戰以及對eval函數的改進

fun 開發 else if 積極 rto 工作 eva mov nbsp 簡介   前段時間,想著自己寫一個簡單的模版引擎,便於自己平時開發demo時使用,同時也算是之前學習的知識的一種總結吧!   首先我們先了解一下模版引擎的工作原理吧!   1. 模版引擎其實就

【11】 Express安裝入門與模版引擎ejs

scrip png js文件 是我 use 處理 ica direct 配置 前言 Express簡介和安裝 運行第一個基於express框架的Web 模版引擎 ejs express項目結構 express項目分析 app.set(name,value) app

php-angular/think-angular/php模版引擎

樹狀 and select use start 整潔 測試 get dump 最近學習thinphp5的時候發現一個好用的模版引擎——think-angular, 此模板引擎主要特點是 不需要額外的標簽定義, 全部使用屬性定義, 寫好的模板文件在IDE格式化代碼的時候很整潔

express模版引擎

發現 使用 例子 jad express 正常 div gin 喜歡 最近在用node+express做一個項目,開發中碰到一些問題記錄一下:按照例子我配置了ejs模版引擎,頁面後綴.ejs也可以正常使用,但是總感覺怪怪的,只是想簡單用html為啥要帶個ejs後綴於是看了好

在express3裏用ejs模版引擎時,如何使其支持'.html'後綴

模板 span clu 如何 自動 runnable str targe pretty ①express 默認jade模板,改為ejs模板,需執行以下命令:   express -e --ejs ②在app.js中,將 app.set(‘view engine‘, ‘jad

MySQL存儲引擎MyISAM與InnoDB區別

多應用 基本 binlog sele detail bin insert details text MyISAM 和InnoDB 講解   InnoDB和MyISAM是許多人在使用MySQL時最常用的兩個表類型,這兩個表類型各有優劣,視具體應用而定。基本的差別為:MyISA

js模板引擎-art-template常用

ava 隱藏 定義函數 debug 很多 原生 語法 console 接受 art-template javascript 模板引擎 分為原生語法和簡潔語法,本文主要是講簡潔語法 基礎數據渲染 輸出HTML 流程控制 遍歷 調用自定義函數方法 子模板引入 基礎數據渲染

T4模版引擎之基礎入門

如何 inf 添加引用 研究 變量 sta word lis ports   額,T4好陌生的名字,和NuGet一樣很悲催,不為世人所熟知,卻又在背後默默無聞的奉獻著,直到現在我們項目組的人除了我之外,其它人還是對其豪無興趣,基本上是連看一眼都懶得看

Nodejs學習筆記(五)—Express安裝入門與模版引擎ejs

num routes 項目目錄 其中 bubuko 執行 ctrl+ ica 開發經驗 前言   前面也學習了一些Node.js的基本入門知道,現在開始進入Web開發的部分;   Node.js提供了http模塊,這個模塊中提供了一些底層接口,可以直接使用,但是直接開發網站

使用DOM解析來實現PHP模版引擎

0. 前言: 傳統模版語法的不利之處 目前市面上有很多PHP的模版引擎,如smarty、blade等。其中大部分都是基於正則表示式將其中的模版語法轉換成PHP程式碼,並進行快取。模版程式碼所經歷的過程如下: template -> php -> html 複製程式碼 使用正則替換或者直接使用P

[前端]全面探索 FreeMarker 模版引擎的擴充套件性

******************************************************************************* *******************************************************

全面探索 FreeMarker 模版引擎的擴充套件性

FreeMarker 模版引擎簡介 FreeMarker 是一個採用 Java 開發的模版引擎,是一個基於模版生成文字的通用工具。 FreeMarker 被設計用來生成 HTML Web 頁面,特別是基於 MVC 模式的應用程式。雖然 FreeMarker 具有一些程式設計的能力,但通常由 Ja

thymeleaf 模版引擎

問題 name為null時<p>hello<p>還顯示嗎? <div th:text="{$name}"> <p>hello</p> <

node使用模板引擎art-template

art-template不僅可以在瀏覽器使用,也可以在node使用 安裝: npm    install     art-template 該命令在哪執行就會把包下載到哪裡,預設會下載到node_modules目錄中,node

Javascript模版引擎mustache.js簡介

背景 最近使用ELK的sentinl進行告警配置,sentinl的郵件通知支援mustache,藉此機會學習了mustache相關知識,記錄在此。 mustache的思想 mustache的核心是標籤和logic-less. 標籤: 定義模板的時候,使用了{{name}}、{{#systems}}{{

dede模版引擎二次開發(增加修改顯示)

add.php <?php require_once ("../include/common.inc.php");  //這個兩行就是連線資料成功了  $dsql.方法(執行SQL語句完畢); require_once DEDEINC."/arc.partview.