Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
何时以及如何使用服务器端JavaScript?_Javascript_Server Side - Fatal编程技术网

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

何时以及如何使用服务器端JavaScript?,javascript,server-side,Javascript,Server Side,偶尔我会搜索一些JavaScript帮助,我会遇到术语“服务器端JavaScript”。什么时候使用JavaScript服务器端?怎么做 我在浏览器中体验过JavaScript。有JS的编译版本吗?它可以指使用javascript将消息发布到web服务器,而无需重新加载页面:换句话说,是AJAX 但更可能的是,我认为它意味着类似(或者,今天的Node.js)的东西,它使用javascript作为服务器端语言。在本例中,请记住javascript只是一种语言:web浏览器中使用的DOM是一种API

偶尔我会搜索一些JavaScript帮助,我会遇到术语“服务器端JavaScript”。什么时候使用JavaScript服务器端?怎么做


我在浏览器中体验过JavaScript。有JS的编译版本吗?

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

但更可能的是,我认为它意味着类似(或者,今天的Node.js)的东西,它使用javascript作为服务器端语言。在本例中,请记住javascript只是一种语言:web浏览器中使用的DOM是一种API。服务器端javascript引擎将提供自己的API对象,用于服务器端任务,如数据库和文件系统访问

由于客户端验证问题,服务器端javascript是一个有趣的想法:您希望在客户端进行验证,以避免向服务器发送不必要的请求。这将提高服务器性能并减少客户端上的延迟。但是您必须在服务器端进行验证,因为您不能信任客户端。这导致客户机和服务器之间存在大量重复代码


理论上,如果客户机和服务器语言匹配,就不再需要相同逻辑的两个实现。实际上,它的工作效果不太好,因为页面请求的客户端和服务器视图非常不同,而且您无法控制客户端使用的javascript引擎。

您可能希望在浏览器和服务器中都有一些功能,以便实现完全相同的实现

例如,wiki语法的呈现器,您可以在浏览器中为WYSIWYG编辑器和服务器上运行该呈现器,以呈现生成的页面。这样您就知道,在这两种情况下,两种渲染结果将完全相同


显然可以将JavaScript编译成Java类。

传统上,JavaScript围绕文档对象模型运行。但是,如果您在一家Java商店工作,并且希望在自定义对象模型周围有一个脚本引擎,该怎么办?这就是服务器端Javascript出现的时候


这取决于您所谈论的是ASP.NET还是经典ASP。如果您使用的是ASP.NET,那么使用Javascript的理由就不多了

ASP Classic是另一种情况。您可以在ASP中的服务器端使用Javascript,就像使用VBScript一样。您可以像通过VBScript一样访问应用程序、服务器、请求和响应对象

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


不过,ASP中的服务器端Javascript有一些缺点。首先,在字符串连接时,它似乎没有服务器端的VBScript那么快。它也不如VBScript那样调用COM对象(只能通过返回值而不是通过out/byref参数从COM调用中获取数据)。

它不是AJAX,除非人们不正确地使用该术语。顾名思义,SSJS是在服务器上运行的JavaScript,由独立(即独立于浏览器的)JavaScript引擎(如SpiderMonkey)进行解释


为什么要麻烦?嗯,我目前看到的一个未充分利用的领域是数据验证。使用SSJS编写一段代码,然后在服务器和客户机上使用。因此,您可以立即从客户端JS获得用户反馈,该反馈将自动匹配服务器上进行的数据检查。

Classic ASP能够在服务器上使用JavaScript,尽管大多数人使用VBScript

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

Wikipedia列出了许多服务器端JavaScript实现。

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


那时我们已经使用了Rhyno,请检查:

是的,我刚刚在一个叫

他描述了一个名为Jaxer的引擎,他说这是“想象一下剥离Firefox的可视化渲染部分,用Apache的钩子代替它——粗略地说,这就是Jaxer。”

对于任何了解ASP.NET的人来说,HTML看起来都很熟悉

<html>
<head>
  <script src="http://code.jquery.com/jquery.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>

jQuery(函数($){
$(“表格”)。提交(函数(){
保存($(“textarea”).val());
返回false;
});
});
功能保存(文本){
write(“tmp.txt”,text);
}
save.proxy=true;
函数加载(){
$(“textarea”).val(
Jaxer.File.exists(“tmp.txt”)?Jaxer.File.read(“tmp.txt”):“”;
}
注意runat=“sever”和runat=“both”

查看Steve Yegge如何将服务器端JavaScript与Rhino结合使用,以及原因。他有一大堆关于JavaScript即将出现的想法。

有一个项目,它是一个服务器端JavaScript框架

当年,Netscape web服务器还提供服务器端java脚本

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

,这是Mozilla的Java JavaScript系统,将JavaScript编译成Java字节码,JVM可以选择JIT。其他系统使用其他方式执行
<!--//--><%

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

//%>
<%@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>