Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js:如何将Node.js嵌入HTML?_Html_Node.js_Markup - Fatal编程技术网

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

Node.js:如何将Node.js嵌入HTML?,html,node.js,markup,Html,Node.js,Markup,在php文件中,我可以执行以下操作: <p><?php echo "hello!";?></p> 在node中是否有这样做的方法,如果有,逻辑是什么 我有一个办法: <p><?php echo "hello!";?></p> 在HTML文件中为节点使用标识符标记,如:code 在节点中加载并解析HTML文件 从HTML文件中获取节点标记并运行它 但我不确定这是否是最好的方法,甚至它是否有效:) 请注意,我想学习n

在php文件中,我可以执行以下操作:

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

在node中是否有这样做的方法,如果有,逻辑是什么

我有一个办法:

<p><?php echo "hello!";?></p>
  • 在HTML文件中为节点使用标识符标记,如:
    code

  • 在节点中加载并解析HTML文件

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

但我不确定这是否是最好的方法,甚至它是否有效:)


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

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

更好的解决方案是使用express中使用的视图。请看下面的图片

如果您必须从头开始做所有事情,那么您可以编写一个微模板引擎

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" 
    }));
});
函数渲染(_视图,数据){
var view=render.views[view];
for(var输入数据){
var值=数据[键];
视图.替换(“{{+key+“}}}”,值);
}
返回视图;
}
render.views={
“someView”:“{{foo}

” }; http.createServer(函数(req,res){ res.end(渲染(“someView”){ “foo”:“bar” })); });
将php/asp/js代码直接与HTML混合是不好的,有很好的理由。它不会促进关注点的分离,并导致意大利面代码。现在的标准方法是像上面那样对引擎进行模板化


想了解更多有关微模板的信息吗

使用模板引擎。从终点站

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));
var ejs=require('ejs');
变量选项={
当地人:{
foo:function(){return“bar”;}
}
};
var template=“

”; log(ejs.render(模板,选项));
您可以尝试使用JooDee,这是一种节点web服务器,允许您在网页中嵌入服务器端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变量公开给客户端


加入我们的行列;)这个问题与嵌入式系统的编程无关,所以我去掉了标签。请参见Hi@Raynos您能解释一下如何使用这个模板引擎从
.html
文件执行node.js命令吗?据我所知,这只是把foo改为bar?还是我又被误解了?@CIRK使用了一个更大的模板引擎。Mustache、EJS、Jade、jQuery templ等。查看一下,当您使用express时,它有一个很棒的视图engineHello。3个链接中有2个断开。我不知道它们是否可以修复,但我很想访问这些材料:)不要使用这个。这是我和一个朋友在大学里写的,那时我们还没明白我们所做的坏事!