无浏览器JavaScript

无浏览器JavaScript,javascript,Javascript,我和Snap-On Tools的团队负责人谈过一次,她告诉我他们在服务器端编码中使用了“JavaScript实现”。已经有一段时间了,但我在想,她在说什么?除了浏览器中实现的JavaScript解释器外,还有JavaScript解释器吗 如何使用不在浏览器上下文中执行的JavaScript创建程序或代码,尤其是服务器端?如果JavaScript在浏览器加载后没有生成内容,那么服务器端的JavaScript到底是什么?“服务器端”JavaScript能否在HTTP响应交付之前生成内容?如果是,如何

我和Snap-On Tools的团队负责人谈过一次,她告诉我他们在服务器端编码中使用了“JavaScript实现”。已经有一段时间了,但我在想,她在说什么?除了浏览器中实现的JavaScript解释器外,还有JavaScript解释器吗

如何使用不在浏览器上下文中执行的JavaScript创建程序或代码,尤其是服务器端?如果JavaScript在浏览器加载后没有生成内容,那么服务器端的JavaScript到底是什么?“服务器端”JavaScript能否在HTTP响应交付之前生成内容?如果是,如何工作/设置?

我对JavaScript有很多问题,但是一流的函数非常吸引人。JavaScript对象表示法是如此纯粹;我无法想象一种更简单的方法来定义数据结构。另外,如果您没有编写任务关键型的代码,您可以通过动态键入非常快速地写出一些代码


作为一个附带问题,在最后一段中,你对学习一门好的语言有什么建议吗(评论就足够了)?

而且似乎很相关。SpiderMonkey似乎是一个用于执行JS的C库,而Rhino是一个Java同上。

如果使用ECMAScript引擎,JavaScript不必在浏览器中运行。实际上,和都是

Flash的ActionScript是另一种ECMAScript派生语言,不必在浏览器中运行


编辑-哇,三年来发生了很多变化。对于您的服务器端需求,我现在推荐node.js。

是的,JavaScript虚拟机存在于浏览器之外。这里有一个特别定制的适应列表


我个人在命令行上使用它Spidermonkey来尝试代码。Rhino与Spidermonkey(相同的语言实现)是对ECMAScript的相同改编,但Rhino运行在Java虚拟机上,Spidermonkey是用C编写的。

我听说了一些好消息


到目前为止,这些服务器端javascript解决方案中最受欢迎/吸引人的部分是数据验证。您可以使用与在服务器上再次验证表单客户端相同的代码来确保表单的完整性。这非常有用,因为当某些内容发生变化时,它只是简单地保持干燥,并且不会使规则失去同步。

以及VBScript,经典ASP页面可以使用JScript作为底层脚本语言。您可以使用CSCRIPT.EXE在Windows命令行上运行JScript程序。事实上,它是同一个脚本引擎,并且可以扩展以支持任意数量的语言。

我知道的JS解释器列表,可以独立运行或嵌入其他代码:

  • (C++)
  • (.NET)
  • (.NET),旧的
  • (爪哇),以前是Mozilla的Rhino
  • (C)
如前所述,是一个用Java编写的JavaScript引擎

Java6有一个新的脚本引擎工具,适当地称为包中的,基于Rhino的引擎可以开箱即用。我不确定这在JavaEE上是否可用,但它是JavaSE的标准特性

使用脚本API非常简单,允许Java应用程序非常轻松地运行用Javascript编写的脚本。如果您需要在应用程序中编写脚本,则无需编写自己的解释器——只需使用脚本API即可。此外,脚本引擎还可以访问Java类库,因此它可以很好地集成,以便在应用程序中执行任务

例如,使用脚本API计算4的平方根非常简单:

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
engine.eval("var x = java.lang.Math.sqrt(4);");
engine.eval("println(x);");
在服务器端使用它的上下文中,我可以想象Rhino正在执行一个外部Jaavscript,然后将结果嵌入到正在提供服务的动态生成的HTML页面中。通过这种方式,可以添加或修改功能,而无需更改web应用程序本身。Javascipt脚本本身的行为或多或少类似于主应用程序的插件

中有几个示例,这些示例是逐步构建的,用于介绍Java脚本API的功能


Javascript不一定要局限于浏览器。与任何脚本语言一样,它实际上取决于脚本引擎的宿主位置。

还有HTTPUnit,它更像是一个浏览器模拟器,因此,它允许您与DOM交互


您是否查看了John Resig关于使用Rhino创建服务器端Javascript引擎的帖子

()

选择发动机 其他答案已经提到了几个JS引擎。决定使用哪一个的一个非常重要的因素应该是它实现的语言(C、C++或java是选择),因为这个“宿主语言”将是您非常容易访问的一个。 例如,如果您使用rhino,您可以从javascript代码中创建整个java标准库(通常您将使用JS编写包装器,这样您就不会在JS代码中散布所有java库调用)

选择框架 阿尔雷德提到了几个问题。我最喜欢。又老又累。很多大型网站都在上面运行。github还有一个性感但非常阿尔法版的helma:

服务器端JS 您可能也对这个小组感兴趣,他们试图统一JS在服务器端的工作方式(提供标准库等)。该团队刚刚成立,但多年来有很多聪明人在serversideJS上工作:


是一个很好的无浏览器JavaScript运行时(基于Firefox的JS引擎)

参考一下,

您可能指的是“SpiderMonkey”(带“k”):)哎呀,漏打错了!谢谢你,霍萨姆。“k”而不是“k”的奖励积分!:)我问了一个类似的问题。。。它的ECMAScript*而不是teadoops,我会修复它。谢谢你,巴勃罗!