我在一些地方使用了一個全局標題,我試圖在渲染模板時可以傳遞的變量中定義它的位置。將變量傳遞給EJS包括
喜歡的東西:
var headerLocation = 'some/location/header.ejs';
res.render(viewDir + '/index', {
header: headerLocation
});
而且在模板文件:
<% include header %>
頭是與渲染傳遞的價值。
這似乎不可能,但也許我錯過了一些東西,所以認爲我會問這裏。
編輯:
這在下面,但總結答案評論中提到,這是目前在EJS的2版本。
在這裏看到:https://github.com/mde/ejs#includes 及相關討論在這裏:https://github.com/tj/ejs/issues/93
感謝。在發佈這個問題後,我實際上很快遇到了https://github.com/visionmedia/ejs/issues/93。雖然有一個拉的請求,它似乎還沒有發佈到NPM。希望它會很快被接受和發佈。一旦發生這種情況,我會將這個答案標記爲正確的,以免誤導可能在這裏降落的其他人。有趣的是,無論出於何種原因,只有在Windows上,使用節點全局對象才能工作。所以<%include global.somepath%>以某種方式起作用。不過在Mac或Linux上。奇怪的一個。 –
想想用這一行改變bug.push行(在新代碼中):buf + =「'+(function(){」+ include +「})()+'」; (可能導致.push出錯) – Arthur
我剛試過,在var中存放一個路徑並試圖用'include'使用var,它仍然嘗試使用var名稱而不是值。 EJS'1.0.0' – Vadorequest