2012-04-10 92 views
3

我剛剛進入Node.js並嘗試學習。從我所瞭解的情況來看,使用模板引擎(例如Jade)是常見的,甚至對於CSS(例如Stylus)也是如此。說實話,我所看到的所有教程涉及到佈局的模板引擎。沒有模板引擎的Node.js

問題是我不想使用模板引擎,因爲我認爲這是不必要的複雜。

Here是指向節點樣板的鏈接(不幸的是,它不起作用),但是選項1不應該使用任何模板引擎進行佈局。

那麼,將Node.js和Mongodb與「普通」HTML(5)結合起來最簡單的方法是什麼?是否有可能使用帶節點的HMTL5 Boilerplate?

回答

3

使用快遞,你只需發送HTML5的響應:

app.get('/', function(req, res){ 
    res.send('<header>Hello World</header>'); 
}); 

但是,我要說的是,在大多數情況下,模板引擎不增加複雜性。如果您正在渲染動態內容,則關注點的分離會使事情變得更簡單。

+0

所以我需要在響應中嵌入所有的html5?這是唯一的方法嗎?我希望能夠將服務器代碼與客戶端代碼分開。 – holyredbeard 2012-04-10 09:44:16

+3

這就是模板引擎的用途;) – DanS 2012-04-10 09:44:52

9

如果您使用的是靜態html,那麼您不需要在服務器端進行模板化。 您可以輕鬆地爲你的HTML文件與Express/Connect static middleware,例如:

app.use(express.static(__dirname + '/public')); 

然後把一個index.html到公用文件夾。

此外,我認爲你可以複製和粘貼整個h5bp到你的公共文件夾,它應該工作。

2

第一次回答我自己的問題。我只想分享一下,我發現一個轉換器從html到jade(模板引擎)。這絕對是一件好事,至少對我而言,即使它仍然涉及模板引擎,也會消除很多複雜性。

http://html2jade.aaron-powell.com/

+0

查看jade文檔:http://jade-lang.com/ 學習語法並不需要很長時間。 – DanS 2012-04-10 10:45:26

3

這是我的想法。

如果您只提供靜態 html,顯然您不需要任何模板引擎,因爲您可以緩存響應中的html,或者使用Connect靜態中間件。

但是,當你必須處理動態內容時,事情變得有趣。

這是模板引擎擅長的地方,因爲它們提供了將數據與html集成的方法。如果你要替換模板引擎,你需要一個可以執行HTML和DOM操作的庫。我能想到兩個選擇:

  • jsdom,這是圖書館建立在它(如fill.js)。
    使用jsdom,您可以使用服務器端jQuery來構建視圖,甚至可以使用YUI
    但是它也有一些缺點:
    • 它的緩慢和繁瑣
    • 它安裝在Windows上的痛苦,因爲它依賴於本機模塊
    • 我無法得到它來解析HTML片段或者不完整的HTML(也許有人知道解決的辦法)

  • 第二個替代方案是使用HTML處理一些輕量級庫,沒有完整的DOM。到目前爲止,我已經發現了兩個庫,在此都不錯:
    • cheerio - 依賴jQuery的樣選擇
    • plates一個小型圖書館 - 結合數據的庫來標記

兩者在我看來都非常整齊,並且是擺脫模板的好起點:)
可能有其他人我不知道,但你明白了。