何时以及如何使用服务器端JavaScript?

有时候我会search一些JavaScript帮助,并且提到术语“服务器端JavaScript”。 你什么时候使用JavaScript服务器端? 如何?

我的JavaScript经验已经在浏览器中。 有没有JS的编译版本?

有一个项目Phobos ,这是一个服务器端的JavaScript框架。

在当天,Netscapenetworking服务器也提供了服务器端Java脚本。

在这两种情况下,就像使用服务器上的任何语言一样使用JavaScript。 通常处理HTTP请求并生成内容。

Rhino是Mozilla用于Java的JavaScript系统,将JavaScript编译为Java字节代码,JVM可以selectJIT。 其他系统使用其他手段来执行Java脚本,甚至有些是JIT编译他们的Java脚本内部代码。

我预见到服务器上会有越来越多的JavaScript。 当你在客户端用JavaScript编写“厚”的应用程序时,你也可以在服务器上用JavaScript编写你的逻辑,以便不必从一种语言到另一种语言进行认知飞跃。 环境将会有所不同,但是您的许多代码和知识将是可共享的。

最后,在实现方面,JavaScript可能是现在最有钱的单一语言。 从苹果,Mozilla,谷歌,甚至微软,以及努力使其成为一种更先进的语言(即基本上是Algol句法无macros的Scheme)。

这些实现大部分都隐藏在浏览器中,但这并不是说服务器端也没有价值。

工具是JavaScript缺乏的最大的地方,特别是在服务器端,但是如果你考虑像Phobos这样的在IDE中debugging服务器端JavaScript的东西,这是一个很大的进步。

就我个人而言,我在像白色涂料这样的应用程序中徘徊JavaScript。 它提供廉价的可扩展性,成本很低,是一个很好的推动因素。

这不是AJAX,除非人们使用这个词不当。 顾名思义,SSJS就是在服务器上运行的JavaScript,由一个独立的(即独立于浏览器的)JavaScript引擎(如SpiderMonkey)解释。

何必? 那么我目前看不到的一个领域是数据validation。 使用SSJS,您可以编写一段代码,然后在服务器和客户端上使用。 因此,您可以立即得到来自客户端JS的用户反馈,这些反馈将自动匹配服务器上进行的数据检查。

传统的ASP能够在服务器上使用JavaScript,尽pipe大多数人使用VBScript。

在服务器上引人注目地使用JavaScript是对客户端数据validation的补充。 例如,您可以在客户端和服务器上使用相同的JavaScriptvalidation库。 这可以确保您在客户端上使用与服务器上相同的逻辑,但是(可能)通过在客户端进行预先validation来避免不必要的往返。

维基百科在这里列出了许多服务器端的JavaScript实现。

2013年的新闻

Node.js (另请参阅维基百科文章 )是一个成功的例子, 它的社区正在成长 !

MongoDB (在服务器端), Chorme (在客户端)和Node.js (在服务器端)使用V8 JavaScript引擎 。

PS:只能使用一种语言,Javascript,到所有的项目模块:客户端API,客户端接口,“服务器中心”和服务器数据库(例如存储过程)。 所有程序员“一次编码”!


Server-Javascript的标准库http://www.commonJS.org/解释了;“Server-Javascript”“Client-Javascript”语言的主要区别。

CommonJS从2009年开始存在,而今天(2013年) 是一个成熟的标准 ,同时在MongoDBNode.js中使用


历史注意: 最老的活跃的“客户端+服务器Javascript”(包括使用PostgreSQL)打开包是活的!
自从2001年发布以来, Whitebeam是一个成熟的Javascript(和DOM)技术。 最近一次更新是在2016年1月。


2016年的新闻

Node.js引擎继续作为基于Chrome的V8 JavaScript构build的运行时间…现在实际上是一个巩固的成功! 最新版本是v7.0v6.8 LTS

作为数据交换格式, JSON在过去几年中持续不断的兴趣, 在2016年超过了对XML的兴趣 (另请参阅2011年超越的科学背景 )。 作为原生的Javascript格式,它也是一个很好的语言趋势指标。

自2014年以来,(更快的) V8引擎也是最常用的:在最受欢迎的客户端 ( 在桌面上使用Chrome,在Android上使用WebView),在服务器上很受欢迎 – Node.js作为运行时,PostgreSQL使用PL / V8 for SQL和存储过程。

…也许2016年最重要的服务器端贡献是对JSON和Javascript的快速和健壮的数据库支持:使用PostgreSQL 9.1+(2016-10),您可以通过简单的方式加载PL / V8(以及像Coffeshop这样的方言) CREATE EXTENSION命令; PostgreSQL 9.5+(2016-10)是最重要的一个完整的JSON和JSONb函数和运算符的正交集合。

所以,事实上,有一个快速,灵活和可靠的统一的JavaScript开发堆栈

它可以指的是使用JavaScript将消息发布到Web服务器,而无需重新加载页面:换句话说,AJAX。

但更可能的是,我认为这意味着像Aptana / Jaxer (或今天的Node.js),它使用JavaScript作为服务器端语言。 在这种情况下,请记住,JavaScript只是一种语言:在Web浏览器中使用的DOM是一种API。 服务器端JavaScript引擎将提供自己的API对象,面向服务器端的任务,如数据库和文件系统访问。

服务器端的JavaScript是一个有趣的想法,因为客户端validation问题:你想做validation客户端,以避免发送不必要的请求到您的服务器。 这可以提高服务器的性能,并减less客户端的延迟。 但是你必须做validation服务器端,因为你不能相信客户端。 这导致了客户端和服务器之间大量的重复代码。

理论是,如果你的客户端和服务器语言相匹配,你将不再需要同一逻辑的两个实现。 在实践中,它不能很好地工作,因为一个页面请求的客户端和服务器视图是如此不同,因为你不控制客户端使用的JavaScript引擎。

这真的取决于你是否谈论ASP.NET或经典的ASP。 如果您使用的是ASP.NET,那么使用Javascript的好处不是很多。

ASP Classic是另一种情况。 您可以在ASP中的服务器端使用Javascript,就像使用VBScript一样。 您可以像通过VBScript一样访问Application,Server,Request和Response对象。

在服务器端使用Javascript而不是VBScript可能会带来真正的好处。 这意味着您可以在浏览器代码和服务器代码之间共享代码。 这也意味着你的开发人员不需要处理两种不同的语言。

ASP中的服务器端JavaScript有一些缺点。 首先它在string连接上看起来不像服务器端的VBScript那么快。 它也不如以VBScript调用COM对象(只能通过返回值而不是通过out / byref参数从COM调用返回数据)。

您可能希望在浏览器和服务器中都有一些function来实现完全相同的实现。

一个例子就是wiki语法的渲染器,在浏览器中运行WYSIWYG编辑器,在服务器上运行渲染结果页面。 这样你就知道两种情况下的渲染结果都是完全相同的。

显然犀牛可以编译JavaScript到Java类。

传统上,Javascript围绕文档对象模型运行。 但是如果你为一个Java商店工作,并希望你的自定义对象模型的脚本引擎呢? 这是当服务器端JavaScript进来。

http://en.wikipedia.org/wiki/Server-side_JavaScript

我记得Cocoon (Apache的Java / XML / Javascript MVC框架)我曾经使用服务器端JavaScript,因为有一些东西(我相信cforms)需要用Javascript编写,并在服务器上运行,即使我相信你可以写在Java中。

那时我们使用了Rhyno,请检查: http : //peter.michaux.ca/articles/server-side-javascript-with-rhino-and-jetty

http://steve-yegge.blogspot.com/2007/06/rhino-on-rails.html

看看Steve Yegge如何在Rhino上使用服务器端JavaScript以及为什么。 他有很多关于JavaScript感觉如何的东西。

是的,我刚刚在一个名叫John Resig的人的博客上读到了SSJS。

他描述了一个名为Jaxer的引擎,他说:“想象一下,剥离Firefox的可视化渲染部分,并将其replace为Apache的钩子 – 粗略地说,这就是Jaxer的原理。

对于任何知道ASP.NET的人HTML看起来很熟悉

 <html> <head> <script src="jquery-latest.js" runat="both"></script> <script> jQuery(function($){ $("form").submit(function(){ save( $("textarea").val() ); return false; }); }); </script> <script runat="server"> function save( text ){ Jaxer.File.write("tmp.txt", text); } save.proxy = true; function load(){ $("textarea").val( Jaxer.File.exists("tmp.txt") ? Jaxer.File.read("tmp.txt") : ""); } </script> </head> <body onserverload="load()"> <form action="" method="post"> <textarea></textarea> <input type="submit"/> </form> </body> </html> 

注意runat =“sever”和runat =“both”

使用ASP,您可以通过多种方式使用服务器端JavaScript 。 我最常用的方法是在客户端和服务器上执行相同的代码进行validation 。

file.js

 <!--//--><% //javascript code function example(){return "Hello, World!";} //%> 

file.html

 <%@LANGUAGE="javascript"%> <!-- METADATA TYPE="typelib" FILE="C:\Archivos de programa\Archivos comunes\System\ado\msado15.dll" --> <!--#include file="file.js"--> <html> <head> <script language="javascript" src="file.js"></script> </head> <body> <%=example();%> <script language="javascript">alert(example());</script> </body> </html> 

file.js开始和结束的方式,以允许包含相同的文件。