Node.js:如何将 Node.js 嵌入 HTML?

Posted

技术标签:

【中文标题】Node.js:如何将 Node.js 嵌入 HTML?【英文标题】:Node.js : How to embed Node.js into HTML? 【发布时间】:2011-08-28 09:32:17 【问题描述】:

在 php 文件中我可以这样做:

<p><?php echo "hello!";?></p>

有没有办法在节点中做到这一点,如果有,它的逻辑是什么?

我知道如何做到这一点:

html 文件中为节点使用标识符标记,例如:&lt;node&gt;code&lt;/node&gt;

在 Node 中加载和解析 HTML 文件

从 HTML 文件中抓取节点标记并运行它

但我不确定这是否是最好的方法,或者即使它有效:)

请注意我想学习node.js,所以express和其他库和模块对我来说不是答案,因为我想知道过程的逻辑。

【问题讨论】:

加入我们node.js chat room ;) 这个问题与嵌入式系统编程无关,所以我删除了标签。见***.com/tags/embedded/info 【参考方案1】:

您可以尝试使用 JooDee,这是一个节点网络服务器,可让您在网页中嵌入服务器端 javascript。如果您熟悉 Node 和 PHP/ASP,那么创建页面是轻而易举的事。下面是页面的样例:

<!DOCTYPE html>
<html>
<:  //server side code in here
    var os = require('os');
    var hostname = os.hostname();
:>
<body>
    <div>Your hostname is <::hostname:></div>
</body>
</html>

使用 JooDee 还可以通过将属性附加到“客户端”对象服务器端,并在客户端 javascript 中访问生成的“客户端”对象,从而毫不费力地向客户端公开服务器 JavaScript 变量。

https://github.com/BigIroh/JooDee

【讨论】:

不要使用这个。这是我和一个朋友在大学里写的,当时我们还没有理解我们所做的事情的邪恶! @maco-taco 如果你做得很好,通过重新解释 html 并仅替换文本节点,那么我认为它并不是那么糟糕。【参考方案2】:

使用模板引擎。从终端

npm install ejs

在代码中:

var ejs = require('ejs');

var options = 
  locals: 
    foo: function()  return "bar"; 
  
;

var template = "<p><%= foo() %></p>";
console.log(ejs.render(template, options));

【讨论】:

【参考方案3】:

您对 node.js 预处理器的描述/要求。 It does exist 但它被认为是有害的。

更好的解决方案是使用 express 中使用的视图。看看screencasts。

如果你必须从头开始,那么你可以编写一个微模板引擎。

function render(_view, data) 
    var view = render.views[view];
    for (var key in data) 
        var value = data[key];
        view.replace("" + key + "", value);
    
    return view;


render.views = 
    "someView": "<p>foo</p>"
;

http.createServer(function(req, res) 
    res.end(render("someView", 
        "foo": "bar" 
    ));
);

直接将 php/asp/js 代码与 HTML 混合是不好的,这是有充分理由的。它不会促进关注点的分离并导致意大利面条代码。这些天的标准方法是模板引擎,如上面的引擎。

想详细了解微模板? Read the article by J. Resig.

【讨论】:

嗨@Raynos 你能解释一下我如何使用这个模板引擎从.html 文件执行node.js 命令吗?据我了解,这只是将 foo 更改为 bar?还是我又误会了什么? @CIRK 使用更大的模板引擎。 Mustache、EJS、Jade、jQuery templ 等。看看express screencasts,虽然你使用 express,但它有一个很棒的视图引擎 你好。 3 个链接中有 2 个已损坏。我不知道它们是否可以修复,但我很想访问这些材料:)

以上是关于Node.js:如何将 Node.js 嵌入 HTML?的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 9 新特性

其他通过html用node.js连接和显示mysql的方式

Node.js的嵌入式文档数据库[关闭]

Node.js主流Web框架对比

通过 Mongoose、Node.js、MongodB 中的特定属性查找嵌入式文档

Node JS+Express:如何在 HTML(EJS) 中定义和使用 MySQL 数据?