![](/img/trans.png)
[英]Render HTML on Node.js Express (Include HTML code in another HTML file)
[英]Node.js code in html file
是否可以將HTML與node.js命令混合使用? 我想使我的網站像在PHP中那樣:
<html>
<!-- Some HTML -->
<?php
echo "example";
?>
</html>
因此,服務器執行所有命令,這些命令包含在HTML文件中,然后返回純HTML在用戶瀏覽器中顯示。 我需要這個,因為我想從MySQL數據庫中獲取數據,然后將其顯示在我的網站上。
在所有教程中,我僅發現:
res.write("<Some html>");
而且沒有任何關於將html保留在單獨的文件中並向其中添加一些服務器端js的事情。
找到一個模板引擎並圍繞該模板構建您的應用程序,因為無法實現所需的功能。 有關兼容模板引擎的列表,請在此處查看: https : //github.com/joyent/node/wiki/modules#wiki-templating
使用功能res.write
就足夠了。
您可以使用html語法生成一些字符串,例如"<html>..</html>"
,然后將其放入res.write
並獲得帶有html文件的響應。 關鍵是如何使用html語法生成字符串。
如果我們有這樣的模板文件:
<html>
<body>
<h1>{{ "Hello" + " world!" }}</h1>
</body>
</html>
我們想要獲得"Hello world!"
在<h1>
和</h1>
。 因此,我們可以通過以下方式完成工作:
fs.readFile
讀取模板文件 {{
和}}
之間的內容 eval
評估內容,並將其替換。 完成此操作后,您可以使用html語法獲取字符串。 這就是大多數模板引擎(例如ejs , jade )所做的事情,當然它們還有更復雜的工作要做。
我希望這可以幫助您了解更多有關使用node.js的模板引擎的信息,請原諒我可憐的英語...
您的示例使用Express和EJS(我使用的是)。 玉在我看來似乎太過分了,但這只是我的看法。
// index.ejs (the html template)
<html>
<head></head>
<body>
<div><%= example %></div>
</body>
</html>
在您的節點應用中:
app.get('/', function (req, res, next) {
res.render('index.ejs', {
layout: false,
locals: {
example: "Hello world!"
}
});
});
這幾乎就是使用EJS的基礎。 我個人比較喜歡Jade,因為我用來編寫html的人不會以Jade格式將它交給我,這與我以前進行php模板制作的方式非常相似。
當然,您還可以使用模板做更多的事情,您可以在其中添加javascript,以遍歷數據庫返回的數組,包括其他.ejs文件。 您只需要深入研究Web上的文檔和示例。
您是否嘗試過像express這樣的web application framework
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.