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 文件中为节点使用标识符标记,例如:<node>code</node>
在 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?的主要内容,如果未能解决你的问题,请参考以下文章