如何像使用 PHP 一样在我的 HTML 页面中运行 Node.js 脚本?

Posted

技术标签:

【中文标题】如何像使用 PHP 一样在我的 HTML 页面中运行 Node.js 脚本?【英文标题】:How do I run a Node.js script in my HTML page, as I do with PHP? 【发布时间】:2014-12-15 19:33:21 【问题描述】:

我从 2010 年开始就是一名 php 开发人员。 我喜欢 PHP,只是因为它很简单。但我想了解更多关于 Node.js 的信息。它看起来很有趣,特别是因为我知道 javascript 并且我是它的忠实粉丝。

有谁知道如何在我的 html 页面中运行 Node.js 脚本,而不像 PHP 那样显示源代码?真的是这样吗?

我看过很多教程,他们在终端中执行 Node.js,但我没有找到在简单的 HTML 页面中运行 Node.js 的快速方法。

谢谢! :)

【问题讨论】:

太多的 PHP 程序员似乎不明白这一点。您不会在您的 HTML 页面中运行 PHP in。您的.php 文件在 PHP 解释器中运行,它输出一个 HTML 页面...输出的页面包含 no PHP 以“在页面中运行”。 嗨@StephenP。我知道。也许我没有很好地表达自己,因为英语不是我的主要语言。还是谢谢。 @guimadaleno 公平地说,您在问题中指定您不知道它是如何工作的。 “有谁知道我如何在我的 HTML 页面中运行 Node.js 脚本,而不像 PHP 那样显示源代码?它真的是这样工作的吗?” 不,根本不是它是如何工作的。 【参考方案1】:

你写的 php 代码可能只是 php 的 html 模板版本(因为缺少更好的术语……)

当在浏览器中请求一个 .php 页面时,会调用一个 php 解释器来解析 html 中的 php 标签并将其替换为 html/text。然后将该结果发送到浏览器。

node.js 不能那样工作。

Node.js 比 php 更详细......当谈到这个特定主题时。 node.js 不仅仅是一个 Web 应用程序框架或 Web 服务器,它还可以用作各种可执行文件来运行常见任务。

通常,要获得您在 node.js 中寻找的那种功能,您会使用一个模板框架,例如把手和 express 来处理网络服务器和路由。这是一个例子:

// this is just an example, it may or may not work, I did not test it.
var express = require('express'),
    app = express(),
    exphbs = require('express-handlebars'),
    hbs,
    path = require('path');

// serve all files under the /assets folder as static files
app.use('/assets', express.static(path.join(__dirname, '/assets')));

// handlebar engine config
hbs = exphbs.create(
    defaultLayout: 'main'
);

// attach engine and specify view location
app.engine('handlebars', hbs.engine);
app.set('view engine', 'handlebars');
app.set('views', path.join(__dirname, '/views'));

// home page http://domain.com/
app.get('/', function (req, resp) 
    resp.render('home', title: 'Home | Hello World!', text: 'Welcome to my site!');
);

// start webserver
app.listen(3000);

上述节点应用程序将创建一个监听端口 3000 的网络服务器,以响应对/assets/ 的请求。当请求/ 时,来自/views 文件夹的home.handlebars 视图将使用来自/views/layoutsmain.handlebars 布局呈现这是一个示例视图,它将显示为/ 传递的标题上面创建的路线:

/views/layouts/main.handlebars

<!doctype html>
<html>
<head>
    <meta charset="utf-8" />
    <title>title</title>
</head>
<body>
    body
</body>
</html>

/views/home.handlebars

<h1>Hello World!</h1>
<p>text</p>

【讨论】:

【参考方案2】:

您似乎将 PHP 的两个不同功能混为一谈:

    可以将许多 Web 服务器配置为通过 PHP 解释器运行 PHP 程序并将结果提供给浏览器。 PHP 被设计为带有铃声的模板语言,因此 PHP 代码嵌入在模板中。

如果您使用的是 Node.js,那么您通常会:

    在 Node.js 中编写您的网络服务器(尽管您可以为它配置一个前端代理)。 the Node.js homepage 上有一个这样的示例,但也有各种框架,例如 express,它们为您完成了很多繁重的工作。 将模板代码与程序代码分开。 Node 有很多 template modules 可用。

引自 Node.js 主页:

一个例子:网络服务器

这个用 Node 编写的简单 Web 服务器响应 每个请求都带有“Hello World”。

var http = require('http');
http.createServer(function (req, res) 
  res.writeHead(200, 'Content-Type': 'text/plain');
  res.end('Hello World\n');
).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

要运行服务器,请将代码放入文件 example.js 并执行它 从命令行使用节点程序:

% node example.js
Server running at http://127.0.0.1:1337/

这是一个简单的 TCP 服务器示例,它监听端口 1337 并回显您发送的任何内容:

var net = require('net');

var server = net.createServer(function (socket) 
  socket.write('Echo server\r\n');
  socket.pipe(socket);
);

server.listen(1337, '127.0.0.1');

【讨论】:

好的,知道了。感谢您的帮助。

以上是关于如何像使用 PHP 一样在我的 HTML 页面中运行 Node.js 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 python 为 Web 元素生成 Xpath(在我的脚本中运行时)?

将数据从 html 页面插入到 php 表单中,就像自动填充值一样

滚动出现在我的 PageScroll 上。如何禁用它?

如何将 HTML 页面连接到 MongoDB?

获取“不提供此类页面”,如何在本地机器上的 VisualStudio 中运行经典 asp?

如何缩小php页面html输出?