【问题标题】:How can I manipulate the DOM in languages other than Javascript? [closed]如何使用 Javascript 以外的语言操作 DOM? [关闭]
【发布时间】:2017-09-28 18:14:14
【问题描述】:

所以我一直想知道如何使用 Javascript 和 PHP 以外的语言操作 DOM。我总是可以在一个 HTML 文件中使用 Javascript 和 PHP 以及其他 HTML 和 CSS 代码。

同样,在 Javascript 中有多种方法,例如 document.getElemenyById() 等。在 PHP 中,基本上它是一个超文本预处理器,因此它会自动通过服务器呈现 HTML,再次可以用于 DOM 操作。

其他语言呢?我们可以使用它们来构建网络吗?或者具体来说,做 HTML 和 CSS 操作之类的事情。例如,Python 或 C#。如何像 JS 和 PHP 一样使用它们?

【问题讨论】:

  • 我想最后都变成了javascript。它们会转译。
  • PHP 是服务器端脚本语言。同样,可以使用 Python、Java 或任何其他服务器端脚本语言代替 PHP 来做同样的事情。但是,DOM 是客户端的一部分,在客户端,除了 Javascript,没有其​​他类型的脚本可以工作。因此,除了 javascript,没有什么可以帮助您对 DOM 进行任何类型的更改。
  • @TuralƏsgərov 这不是这里的问题。我在问如何使用 Python 来操作 HTML。就像.. Python 中 'document.getElementById() 的替代方法是什么?
  • @mi6crazyheart 哦,非常感谢。

标签: javascript php html css


【解决方案1】:

你在这里提出的真正问题是:

我们是否可以使用 C# 或 python 之类的语言进行 JS 之类的 DOM 操作?

简单来说,答案是否定的。但是,如果您使用任何类型的解析器,您会觉得您正在用 Python 做一些事情,比如 HTML,但在浏览器上它只会是 HTML。 相反,我会说......标记语言(前端语言)和服务器端语言之间存在很大差异。

HTML 被用作在网页上显示某些内容的标记。您可以使用一些模板,但最终将再次仅编译为 HTML。 现在是 JS 的角色,无论网页上创建了什么元素,Javascript 都有能力对它们执行操作/操作。这称为 DOM 操作,只能通过某些前端语言实现。据我所知,目前我们只有 Javascript(如果我错了,请有人纠正我)

现在是 C#、python 或 PHP 的角色。这些语言用于后端工作。您从前端发送的任何内容都将在后端处理,并且这些语言用于这些目的,因此,通过 C# 进行 DOM 操作是一个很大的问题。为此,您需要 javascript(jQuery 或其他库)。

谢谢, 希望对您有所帮助。

【讨论】:

  • 那么,这样做的方法是将数据从'Python'等发送到JS,然后JS可以操作DOM?此外,为什么 PHP 可以与 HTML 一起工作,而其他语言则不能?此外,谁决定 JS 将是客户端。我的意思是它毕竟是一种编程语言,就像所有其他语言一样。?
【解决方案2】:

使用 DOM 有两个“工作”阶段。 第一阶段是服务器渲染。当 PHP 引擎接收到模板(HTML、PHP 的混合)加上数据并将有效的 HTML 输出到浏览器时。在这个阶段,您可以构建 HTML 将被浏览器解析为 DOM 树。您不使用 DOM,而是使用模板的纯文本。

第二阶段是 Javascript 评估。浏览器解析并运行 JS,这个 JS 可以访问 DOM 树。

第一阶段可以用任何在服务器上运行的语言来完成。您可以使用 c# 模板、python 模板、go 模板,甚至 javascript。所有模板引擎只处理模板(文本)和数据,并提供可以是有效 HTML 的文本输出。

第二阶段仅适用于 JS,因为浏览器仅适用于 JS。有一些尝试将其他语言引入前端(如 Dart),但都失败了。但是你有一些选择。现有语言有许多可以针对 JS 的编译器。例如,clojure 的 clojruescript、ocaml 的 bucklescript、go 的 gopherjs 等。此外,还有许多为此目的而创建的语言(编译为 JS):purescript、elm、typescript 等。 现代浏览器可以使用 webassembly 二进制包。它与 JS 不同,但也无法访问 DOM。

【讨论】:

  • 谢谢哥们。现在我明白了为什么 JS 是客户端。因为,浏览器默认拥有它。如果 Python/C# 等已经在浏览器中实现,我们可以像使用 JS 一样处理它们。最后一件事,为什么我们不能像使用 PHP 一样在同一个文件中使用 Python 和 HTML?
  • 事实上,对于 OCaml,我会引用 ocsigen,它允许您以统一的方式在客户端和服务器端工作。
  • @HenrySpike 因为语言的架构。我不熟悉 Python 生态系统,但是在 Nodejs 中,一些模板引擎允许在里面使用 js 代码。也许Python中有一些东西。但我应该注意到:这是一种不好的做法。检查 MVC 模式。它可以帮助您避免常见的 PHP 陷阱。
猜你喜欢
  • 1970-01-01
  • 2020-11-09
  • 1970-01-01
  • 2021-10-14
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-28
相关资源
最近更新 更多