Node.js項目中調(diào)用JavaScript的EJS模板庫的方法
作為外部模塊,調(diào)用的方法和mysql模塊是相同的,不再贅述。
ejs的render函數(shù)有兩個參數(shù) 第一個是字符串,第二個是可選的對象,和其他javascript模版一樣需要渲染的數(shù)據(jù)也是包含在option對象中的
ejs.render(str,option);
// 渲染字符串 str 一般是通過nodejs文件系統(tǒng)的readfile方法讀取
ejs.render(str,{
data : user_data // 需要渲染的數(shù)據(jù)
});
當(dāng)str字符串中沒有包含 include 標(biāo)簽時,渲染數(shù)據(jù)是沒有問題的,反之,就會報錯。前面已經(jīng)講過我的項目文件和nodejs的安裝文件不在同一個根目錄下。解決這個問題需要配置option參數(shù)的filename屬性。
查看ejs源碼,會發(fā)現(xiàn),ejs在處理include包含文件的路徑時會用到一個resolveInclude函數(shù):
function resolveInclude(name, filename) {
var path = join(dirname(filename), name);
var ext = extname(name);
if (!ext) path += '.ejs';
return path;
}
filename正是dirname函數(shù)的參數(shù),作為nodejs核心模塊的path.dirname(),返回的path總是相對nodejs的安裝路徑,如果不指定filename值,就會找不到文件
在使用dirname時應(yīng)當(dāng)注意,函數(shù)處理傳入的路徑參數(shù)時會截取第一個
'/' 之前的部分作為路徑名例如:
path.dirname('/foo/bar/baz/asdf/quux')
// returns
'/foo/bar/baz/asdf'
要取得tpl目錄可以這樣寫:
path.dirname('/tpl/..') // return /tpl
完整的render函數(shù)可以這樣:
ejs.render(str,{
filename : path + '/tpl/..', //tpl文件中保存的是模版文件
data: user_data
});
相關(guān)文章
node將geojson轉(zhuǎn)shp返回給前端的實現(xiàn)方法
這篇文章主要介紹了node將geojson轉(zhuǎn)shp返回給前端的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
10個Node.js庫幫助你優(yōu)化代碼和簡化開發(fā)
這篇文章主要介紹了10個Node.js庫幫助你優(yōu)化代碼和簡化開發(fā),其中包括處理數(shù)組、對象、字符串庫Lodash,緩存數(shù)據(jù)處理庫Node-cache,解析、操作和格式化日期和時間庫Moment.js,Redis操作庫,發(fā)送電子郵件庫Nodemailer2023-05-05
Node.js中的require.resolve方法使用簡介
在Node.js中,可以使用require.resolve函數(shù)來查詢某個模塊文件的帶有完整絕對路徑的文件名,下面這篇文章主要介紹了Node.js中require.resolve方法使用的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-04-04

