2013-03-17 60 views
0

現在,我有一個ASP.NET應用程序,在aspx文件內的各個點上,我調用插入標準模板HTML的函數。例如:Node.JS令牌替換(相當於在ASP.NET中調用內聯函數)

<html> 
<head> 
</head> 
<body> 
<%=SectionHeader('Section title 1') %> 
some content for section 1 
<%=SectionHeader('Section title 2') %> 
some content for section 2 
</body> 
</html> 

因此,無論在SectionHeader函數被調用,它會讀取傳入的參數,並插入節頭中的HTML,如{}稱號。我試圖弄清楚如何在Node中完成同樣的事情。

我明白如何做一個基本的令牌替換 - 讀取一個靜態的HTML文件,尋找一個令牌(例如{token1})並用某種東西代替它。但是使用正則表達式和複雜的字符串操作很少,有什麼方法可以在Node中完成與ASP.NET相同的操作?

回答

0

我把生成的應用程序框架,並修改index.jsindex.jade傳遞一個函數到模板中。我想你是在問什麼,但是如果這是一個很好的架構來讓模板回到邏輯中,可能會有意見。

index.js

exports.index = function(req, res){ 
    var fn = function(initial) { 
     return initial + ". Tester"; 
    }; 
    res.render('index', { title: 'Express', fn : fn }); 
}; 

index.jade

block content 
    h1= title 
    p Welcome to #{title} 

    div Hello #{fn('A')} 

現在,當我打開http://localhost:3000/,這是在屏幕上呈現什麼。注意「A」被傳遞到函數中爲輸出生成字符串「A.Tester」。


快速

歡迎快速

你好A.測試

0

lots of templating engines爲節點,也許你應該嘗試其中之一。如果你正在尋找一個web應用程序框架express將是一個很好的起點,它支持許多模板發現。

當然,你可以只做字符串替換,但模板引擎提供更多。

+0

我一直在使用快很多(因爲一個月前開始使用),我還在探索它。我閱讀了關於EJS和Jade的所有內容,並且我找不到任何文檔可以解釋我如何實現這一目標。從我理解的方式來看,他們模板化的方式是通過令牌 - 所以您可以說{title},它會用您指定的內容替換{title}的所有實例。我不能在我的生活中發現如何將某種值傳遞給模板引擎,作爲其模板機制的一部分。 – 2013-03-17 20:26:26

+0

在Jade中,您必須具備以下可能性:或者使用mixin來創建「子模板」或擴展另一個jade文件(通常是佈局)以在佈局中渲染塊。您的示例將類似於佈局文件。您可以使用tepmlate來定義可以在佈局中填充佔位符的各種塊。 https://github.com/visionmedia/jade#template-inheritance – topek 2013-03-17 20:41:30

+0

謝謝! mixin正是我一直在尋找的!如果在其他模板引擎中可以使用相同的概念,您是否有機會知道?我只是不習慣使用玉器 – 2013-03-18 00:00:49