簡體   English   中英

HTML文件中的Node.js代碼

[英]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> 因此,我們可以通過以下方式完成工作:

  1. 使用fs.readFile讀取模板文件
  2. 使用正則表達式獲取{{}}之間的內容
  3. 使用eval評估內容,並將其替換。

完成此操作后,您可以使用html語法獲取字符串。 這就是大多數模板引擎(例如ejsjade )所做的事情,當然它們還有更復雜的工作要做。

我希望這可以幫助您了解更多有關使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM