如何在服务器端运行 JavaScript 代码?

2022-09-04 06:19:56

我想在服务器端运行JavaScript代码。我想在我的 Java 代码中操作 JavaScript 返回的结果。如何做到这一点?


答案 1

开始显然是研究犀牛

我想你会发现这3个链接非常有用

  1. JavaScript EE,第 1 部分:在服务器端运行 JavaScript 文件
  2. JavaScript EE,第 2 部分:使用 Ajax 调用远程 JavaScript 函数
  3. JavaScript EE,第 3 部分:将 Java 脚本 API 与 JSP 结合使用

你也可以看看赫尔玛

Helma是一个服务器端Javascript环境和Web应用程序框架,用于快速有效地编写脚本并为您的网站和Internet应用程序提供服务。

Helma是用Java编写的,并为其服务器端脚本环境使用Javascript...


答案 2

其他答案是正确的,如果你想在服务器端执行Javascript,你需要在JS运行时的上下文中评估它。

但是,我不相信这正是您要问的。我认为您可能想要运行一些“典型”的JS功能,这些功能与页面在客户端计算机上的显示方式或在客户端上交互的方式有关 - 并且无法在服务器端运行。

具体举例:

  1. 如果你想在JS中运行某种算法而不将其移植到Java - 比如说,你有一些不透明的Javascript代码,它会生成给定种子的特定序列 - 如果你在服务器上的Rhino上运行它,这将工作正常。
  2. 如果你想在创建页面时调用Javascript函数,而不是在它运行时调用它 - 比如说,获取用户的颜色深度/屏幕分辨率并更改页面的生成方式 - 那么这将无法从服务器进行,因为此时没有客户端进行查询。

从广义上讲,任何涉及甚至页面本身的任何元素的Javascript都可能属于后一类。documentnavigator

如果确实需要获取有关客户端环境的信息以控制页面的呈现方式,则必须从上一页上的客户端中提取此信息,并将其编码到请求中(作为查询参数或表单数据)。然后,可以直接在服务器上读取这些参数,并用于控制输出。

请记住,当您的代码在服务器端运行时,您正在创建一个页面(最终是一堆HTML,CSS和JS),一旦完成,该页面将发送到客户端 - 此时还没有客户端,因此您无法与它们进行交互。

如果我在这个问题上有错误的一端,请道歉,但这种类型的问题通常是由那些没有掌握客户端/服务器分离的人提出的。