前面的話

  nodejs的模板引擎有很多, EJS是比較簡(jiǎn)單和容易上手的。本文將詳細(xì)介紹EJS

 

概述

  EJS是一個(gè)簡(jiǎn)單高效的模板語(yǔ)言,通過數(shù)據(jù)和模板,可以生成HTML標(biāo)記文本??梢哉fEJS是一個(gè)JavaScript庫(kù),EJS可以同時(shí)運(yùn)行在客戶端和服務(wù)器端,客戶端安裝直接引入文件即可,服務(wù)器端用npm包安裝

【安裝】

  ejs可以配合express框架使用,或直接在node中/瀏覽器中使用

$ npm install ejs

【特點(diǎn)】

  1、快速編譯和渲染

  2、簡(jiǎn)單的模板標(biāo)簽

  3、自定義標(biāo)記分隔符

  4、支持文本包含

  5、支持瀏覽器端和服務(wù)器端

  6、模板靜態(tài)緩存

  7、支持express視圖系統(tǒng)

 

用法

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計(jì)算培訓(xùn),高端軟件開發(fā)培訓(xùn),項(xiàng)目經(jīng)理培訓(xùn)

<!DOCTYPE html> <html> <head>     <meta charset="UTF-8">     <title>Document</title> </head> <body> <div id="div1"></div> <script src="ejs.min.js"></script> <script>     var html = ejs.render('<%=123 %>','');     document.getElementById('div1').innerHTML = html; </script> </body> </html>

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計(jì)算培訓(xùn),高端軟件開發(fā)培訓(xùn),項(xiàng)目經(jīng)理培訓(xùn)大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計(jì)算培訓(xùn),高端軟件開發(fā)培訓(xùn),項(xiàng)目經(jīng)理培訓(xùn)

 

方法

【ejs.compile(str,[option])】

  編譯字符串得到模板函數(shù),參數(shù)如下

str:需要解析的字符串模板 option:配置選項(xiàng)
var template = ejs.compile('<%=123 %>'); var result = template(); console.log(result);//123

【ejs.render(str,data,[option])】

  直接渲染字符串并生成html,參數(shù)如下

str:需要解析的字符串模板 data:數(shù)據(jù) option:配置選項(xiàng)
var result = ejs.render('<%=123 %>'); console.log(result);//123

  兩個(gè)函數(shù)包括的配置選項(xiàng)參數(shù)options如下:

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計(jì)算培訓(xùn),高端軟件開發(fā)培訓(xùn),項(xiàng)目經(jīng)理培訓(xùn)

cache 緩存編譯后的函數(shù)(ejs.compile(..) ,需要 filename參數(shù)作為緩存的key filename 用于緩存的key,和include context 函數(shù)的執(zhí)行上下文 compileDebug 輸出compile的信息來跟蹤調(diào)試 client 返回編譯后的函數(shù) delimiter <% .. %> 指這里的% debug 輸出ejs.compile()得到函數(shù)的函數(shù)體 strict ejs.compile()返回的函數(shù)是否執(zhí)行在嚴(yán)格模式 _with 是否使用 with(){..} 來訪問本地變量 localsName 保存本地變量的對(duì)象名,默認(rèn)為locals rmWhitespace 移除多余空格

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計(jì)算培訓(xùn),高端軟件開發(fā)培訓(xùn),項(xiàng)目經(jīng)理培訓(xùn)

 

常用標(biāo)簽

【js】

  所有使用 <% %> 括起來的內(nèi)容都會(huì)被編譯成 Javascript,可以在模版文件中像寫js一樣Coding

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計(jì)算培訓(xùn),高端軟件開發(fā)培訓(xùn),項(xiàng)目經(jīng)理培訓(xùn)

//test.ejs <% var a = 123 %> <% console.log(a); %> //test.js var ejs = require('ejs'); var fs = require('fs'); var data = fs.readFileSync('test.ejs'); var result = ejs.render(data.toString()); console.log(result);//123

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計(jì)算培訓(xùn),高端軟件開發(fā)培訓(xùn),項(xiàng)目經(jīng)理培訓(xùn)

  或者,像下面這樣寫

var ejs = require('ejs'); var result = ejs.render('<% var a = 123 %><%console.log(a); %>'); console.log(result);//123

【變量】

  用<%=...%>輸出變量,變量若包含 '<' '>' '&'等字符會(huì)被轉(zhuǎn)義

var ejs = require('ejs'); var result = ejs.render('<%=a%>',{a:'<div>123</div>'}); console.log(result);//&lt;div&gt;123&lt;/div&gt;

  如果不希望變量值的內(nèi)容被轉(zhuǎn)義,那就這么用<%-... %>輸出變量

var ejs = require('ejs'); var result = ejs.render('<%-a%>',{a:'<div>123</div>'}); console.log(result);//<div>123</div>

【注釋】

  用<%# some comments %>來注釋,不執(zhí)行不輸出

【include】

  include 可以引用絕對(duì)路徑或相對(duì)路徑的模板文件

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計(jì)算培訓(xùn),高端軟件開發(fā)培訓(xùn),項(xiàng)目經(jīng)理培訓(xùn)

//test.ejs <% var a = 123 %> <% console.log(a); %> //test.js var ejs = require('ejs');var result = ejs.render('<% include test.ejs %>'); //throw new Error('`include` use relative path requires the \'filename\' option.'); console.log(result);

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計(jì)算培訓(xùn),高端軟件開發(fā)培訓(xùn),項(xiàng)目經(jīng)理培訓(xùn)

  由上面的提示可知,使用相對(duì)路徑時(shí),必須設(shè)置'filename'選項(xiàng)

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計(jì)算培訓(xùn),高端軟件開發(fā)培訓(xùn),項(xiàng)目經(jīng)理培訓(xùn)

//test.ejs <% var a = 123 %> <% console.log(a); %> //test.js var ejs = require('ejs');var result = ejs.render('<% include test.ejs %>',{filename:'test.ejs'}); console.log(result);//123


http://www.cnblogs.com/xiaohuochai/p/7011594.html