Node.js:如何将Node.jsembedded到HTML中?
在一个PHP文件中,我可以这样做:
<p><?php echo "hello!";?></p>
有没有办法做到这一点,如果是的话是什么逻辑呢?
我有一个想法如何做到这一点:
-
在HTML文件中为节点使用标识符标记,如:
<node>code</node>
-
在Node中加载和parsingHTML文件
-
从HTML文件中获取节点标记并运行它
但我不知道这是最好的方式,或者即使它工作:)
请注意我想学习node.js
,所以node.js
和其他库和模块都不是我的答案,因为我想知道这个过程的逻辑。
你在描述/请求一个node.js预处理器。 它确实存在,但被认为是有害的。
更好的解决scheme是使用快速使用的视图。 看看屏幕录像 。
如果你必须从头开始,那么你可以写一个微模板引擎。
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是不好的。 它不促进分离的问题,并导致意大利面代码。 现在的标准方法是像上面那样的模板引擎。
想要了解更多关于微模板的信息? 阅读J. Resig的文章 。
你可以尝试使用JooDee,一个节点的networking服务器,它允许你在你的网页中embeddedserverside javascript。 如果您熟悉Node和PHP / ASP,创build页面是一件轻而易举的事情。 以下是一个页面如下所示的示例:
<!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还可以让服务器的JavaScriptvariables暴露给客户端,通过将属性附加到“客户端”对象服务器端,并访问客户端JavaScript中生成的“客户端”对象。
使用模板引擎。 从terminal
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));