2017-04-01 19 views
0

所以我已經深入Node/Express頭(w /學習Javascript中間的東西),我有點困惑,爲什麼像Jade或EJS的「視圖引擎」是必需的?Express/Node是必需的視圖引擎嗎?

我似乎無法找到只使用普通HTML5的東西?或者,我不能將值傳遞給正常的HTML與快遞?

讓我們假裝我有這樣的載荷,當我「登錄」它貼在頂部(只是舉例)的用戶名加載一個index.html頁面。我不能將值傳遞給正常的.html文件嗎?

回答

2

是必要的快遞/節點的視圖引擎?

不,它不是必需的。 Express可以隨心所欲地提供靜態HTML5文件。你不需要一個視圖引擎。您可以創建自定義路線併爲每個頁面使用res.sendFile(),或者您可以使用express.static()自動提供靜態HTML文件的整個目錄,或者編寫自己的代碼來構建要發送的任何HTML5內容並使用res.send()發送它。

當需要視圖引擎是,如果你想有一個模板類型的系統,你可以創建一個佔位符,動態內容的HTML模板,然後必須插入到服務器上的頁面的動態值。

我不能將值傳遞給正常的.html文件嗎?

不,你不能做到這一點與普通快遞。 Express具有提供靜態HTML文件的功能,但不能將動態內容插入到HTML文件中。這就是你使用視圖引擎的原因。 Express本身並沒有建立這種功能,因爲有幾十種不同的視圖引擎哲學,而Express不希望強制一種風格,所以它支持從模板渲染的視圖引擎接口,並且您可以選擇您想要的視圖引擎使用。

+0

我試過在我的視圖文件夾目錄中的index.html文件上使用res.send,它表示無法找到它。我只是將它包含爲另一個靜態文件(以及我的css/etc ...) – msmith1114

+0

@ msmith1114 - 您必須顯示您使用的代碼,以便我們瞭解您做錯了什麼。 'res.send()'將與一個內存中的字符串一起使用。 'res.sendFile()'將與磁盤中的文件一起使用。如果找不到文件,那麼你必須有錯誤的路徑。你可以在視圖引擎中使用'res.render()'。 – jfriend00

+0

我正在使用res.render()多數民衆贊成在問題呢!我猜測大多數節點開發者使用視圖引擎? – msmith1114

1

要回答主要問題 - 視圖引擎不是快遞/節點所必需的。

你說的對,雖然你不能將變量/值傳遞給純html。視圖引擎是查看您傳遞的數據併爲您生成html標記的東西。

的另一種方法,使用一個視圖引擎是使用s前端庫/框架像jQuery,反應,或角度(或者也可以使用純的JavaScript)。 javascript可以檢索數據(使用ajax/fetch)並將其綁定到您的html - 呃,如果您使用的是純javascript或jquery,我想它不會被綁定,但您可以使用數據更新DOM。

+0

那麼我怎麼會做一些像加載值到一個網頁(從數據庫實例)沒有視圖引擎。 – msmith1114

+0

您可以使用ajax將HTTP請求發送到您的服務器,該服務器從數據庫中檢索數據,並將其作爲json發送回您的前端JavaScript請求。這裏是一個例子:http://stackoverflow.com/questions/9436534/ajax-tutorial-for-post-and-get –

+0

我猜大多數用戶反正使用視圖引擎? – msmith1114