EJS

EJS

類似於Handlebars的模板引擎

好處為語法即為javascript使用上較為直覺

Client Side ejs (始祖) http://www.embeddedjs.com/

第一版server side ejs https://github.com/tj/ejs

第二版server side ejs https://github.com/mde/ejs

https://www.npmjs.com/package/ejs

使用

安裝好Express後用

app.set('view engine', 'ejs');

引入即可,之後創建views資料夾,資料夾內檔案後檔名取.ejs

!!如出現找不到ejs module

1.原因為如果是使用-g的express必須將ejs也安裝在-g

2.或是將express和ejs都安裝在local

<% %>同一行有HTML tag 則加等號 <%= %>

使用client端EJS

https://github.com/mde/ejs/issues/158#issuecomment-215120752

(此與tj的ejs不同) http://www.embeddedjs.com/

所以你如果要用在client不可直接使用npm安裝的ejs,要另外從他們官網下載(上面網址)

之後使用時因為要render所以要找views目錄,但又要找ejs.js, 所以折衷的方法為,將ejs.js放入views資料夾,然後

或是使用兩個靜態目錄

最後

SPA example

(但是,發現在article.ejs 內寫script沒反應)

原因是因為,在div內的script無法作用,我們要加上

將server render附帶的data於client端用js儲存

所以我們可以在client端把它存成一般的variable

使用TJ的EJS用在CLIENT端

可參考他的範例 https://github.com/tj/ejs/issues/39 但目前EJS要寫在HTML的SCRIPT標籤內,無法使用EJS外部路徑

用法

1.Include

在ejs2.0可使用include加上傳入data

1.0不可傳入data,但1.0的include寫法在2.0仍適用

include模板時傳入資料第二個方法:

使用app.locals設定

view.ejs

2.模板內的js只讀的到用<%%>包起來的js

附註:mde的ejs如server端跟client都用mde的,同時使用會有些問題

ex:

server一開始會說people undefined,因為server端的ejs會去找res.render有沒有people,而不是等到執行client後才去從ejs.render裡面找,但假如我們也在res.render裡面加上people參數的話,會發現可正常執行,但是出現aa最後產生的值沒有引入people

所以建議的做法是在client端使用 http://www.embeddedjs.com/

Last updated

Was this helpful?