【问题标题】:hard time understanding server side script很难理解服务器端脚本
【发布时间】:2018-12-19 13:38:04
【问题描述】:

我了解到 php 和 node.js 都是服务器端脚本。

我很难理解 node.js 和在网络浏览器上运行 javascript 之间的联系。那么我们不能在网络浏览器上使用 javascript 访问文件和数据库吗?服务器端脚本和客户端脚本是如何连接的(或者我们如何连接它们)?还是我应该将它们视为完全不同的东西?

一个更令人困惑的事实是,我了解到我可以在 html 文件中使用 php 访问数据库和文件,但是 node.js 呢?

提前谢谢你!

【问题讨论】:

  • 从客户端的角度来看,在服务器上运行什么代码没有区别。浏览器和服务器之间的通信都是 HTTP 请求/响应。服务器端代码在服务器上执行,该代码的结果是要发送给客户端的内容。该内容可能包含大量供浏览器执行的 JavaScript 代码,但就服务器而言,它们都只是原始内容。当浏览器收到响应内容时,它会执行客户端代码。
  • I can get access to database and files using php within html file, 不,您有一个呈现 HTML 文件的 PHP 文件,您无法在浏览器中运行 PHP。 NodeJS 也是如此,它可以访问数据库,然后使用 express 或 koa 进行渲染,向浏览器返回 HTML / CSS / JS 等文件。

标签: javascript php node.js server-side-scripting


【解决方案1】:

我很难理解 node.js 和在网络浏览器上运行 javascript 之间的联系。

没有。

JavaScript 只是一种编程语言。你在里面写软件。您可以在不同的地方运行该软件。您可以使用该软件做什么取决于您运行它的位置。

我可以编写一些 JavaScript 来打开和关闭我家的灯。如果我没有可以让我这样做的硬件,那我就做不到。

可以编写在浏览器中运行的 JavaScript 来执行浏览器使之成为可能的事情。

可以编写在 Node.js 中运行的 JavaScript 来完成 Node.js 使之成为可能的事情。

服务器端脚本和客户端脚本如何连接(或者我们如何连接它们)?

在浏览器中运行的 JavaScript 可以向 HTTP 服务器发出 HTTP 请求(并处理来自 HTTP 服务器的响应)。

在 Node.js 中运行的 JavaScript 可以是 HTTP 服务器。

一个更令人困惑的事实是,我了解到我可以在 html 文件中使用 php 访问数据库和文件,但是 node.js 呢?

不,你不能。

如果您通过 Web 服务器运行 PHP,那么 PHP 将自动生成 HTTP 响应标头以表明它正在输出 HTML(您可以覆盖它)。

在 PHP 语言中,<?php ... ?> 之外的代码将直接流式传输到输出。

这意味着您可以在 PHP 程序中键入 HTML 文档,但在 <?php ... ?> 之外,看起来 HTML 文档中有 PHP。真的,它是一个生成 HTML 文档的 PHP 程序。

JavaScript 不是这样工作的。它没有“真正的 JavaScript 模式”(如 <?js ?>)和“流直接输出模式”。

您可以使用很多模板引擎,包括 EJS(它允许您将 JS 嵌入模板中)。我自己倾向于 nunjucks。

【讨论】:

  • 很好的解释:-)
【解决方案2】:

我建议您阅读一些关于客户端和服务器端技术之间差异的文章。这里有一个很好的基础解释What are the differences between server-side and client-side programming?

我认为您正在考虑网络开发。

Node.js 允许在服务器端运行 javascript。为了向客户端(例如您的浏览器)公开数据库和文件,您需要在 node.js 应用程序中创建一个连接。您还可以提供文件并将数据公开给浏览器,例如 express.js。

为了在 webapp 上显示数据,您可以在服务器端呈现 html 或通过 javascript 在客户端应用程序上发出 ajax/http 请求。

例如,在 PHP 中,您将连接到 MySQL 数据库并使用从数据库中检索到的数据呈现一些 html。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-25
    • 2011-08-13
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    相关资源
    最近更新 更多