有时,我会搜索一些JavaScript帮助,并且遇到术语“服务器端JavaScript”。什么时候使用JavaScript服务器端?如何?
我对JavaScript的体验一直在浏览器中。是否有JS的编译版本?
有时,我会搜索一些JavaScript帮助,并且遇到术语“服务器端JavaScript”。什么时候使用JavaScript服务器端?如何?
我对JavaScript的体验一直在浏览器中。是否有JS的编译版本?
Answers:
这里有一个Phobos项目,它是一个服务器端JavaScript框架。
回到当日,Netscape Web服务器还提供了服务器端Java脚本。
在这两种情况下,就像您在服务器上使用任何语言一样,都使用JavaScript。通常用于处理HTTP请求并生成内容。
Rhino是Mozilla的Java JavaScript系统,可将JavaScript编译为Java字节码,JVM可以选择将其转换为JIT。其他系统使用其他方式执行Java脚本,甚至达到某些JIT编译其Java脚本内部代码的程度。
我预见到服务器上将有越来越多的JavaScript。当您在客户端上用JavaScript编写“厚”应用程序时,那么您也可能能够在服务器上用JavaScript编写逻辑,从而不必使认知从一种语言跃升为另一种语言。环境会有所不同,但是您的许多代码和知识将是可共享的。
最后,就实现而言,JavaScript可能是目前使用最多的单一语言。来自Apple,Mozilla,Google甚至Microsoft的努力,以及使它成为更高级语言的努力(即基本上是带有Algol语法且无宏的Scheme)。
这些实现大多数都隐藏在浏览器中,但这并不是说服务器端也没有任何价值。
该工具是缺少JavaScript的最大地方,尤其是在服务器端,但是如果考虑使用Phobos之类的东西,则可以在IDE中调试服务器端JavaScript,这是一个很大的进步。
就个人而言,我会在我的应用程序(如白色油漆)中扔掉JavaScript。它以很少的成本提供了廉价的可扩展性,并且是一个很好的推动者。
除非人们使用不当,否则它不是AJAX。顾名思义,SSJS是在服务器上运行的JavaScript,由独立的(即独立于浏览器的)JavaScript引擎(如SpiderMonkey)解释。
何苦?好吧,我目前看到的未充分利用的一个方面是数据验证。使用SSJS,您可以编写一段代码,然后在服务器和客户端上使用它们。因此,您将从客户端JS获得即时的用户反馈,该反馈将自动匹配服务器上进行的数据检查。
Node.js(另请参阅Wikipedia文章)是一种成功,并且它的社区正在增长!
MongoDB(在服务器上),Chrome(在客户端上)和Node.js(在服务器上)使用 V8 JavaScript引擎。
PS:您只能在所有项目模块中使用一种语言Javascript:客户端API,客户端接口,“服务器中心”和服务器数据库(例如存储过程)。所有程序员都“编码一次”!
之间的主要区别“服务器的JavaScript”和“客户端JavaScript的”语言,在解释http://www.commonJS.org/,对于标准库服务器的JavaScript。
CommonJS从2009年开始存在,而今天(2013年)是一个成熟的标准,在MongoDB和Node.js中都使用。
历史记录:最早的活动“客户端+服务器Javascript”(包括PostgreSQL的使用)打开包仍然有效! Whitebeam
于2001年发布,此后一直在不断发展,是一种成熟的Javascript(和DOM)技术。最近一次更新是在2016年1月。
Node.js引擎将继续作为基于Chrome V8 JavaScript构建的运行时...现在,事实上,这已经取得了成功!最新版本是v7.0和v6.8 LTS。
JSON作为数据交换格式在过去几年中一直受到越来越多的关注,在2016年已经超过了对XML的关注(另请参阅《科学》上下文,在2011年超过了)。作为本机Javascript格式,它也是一种很好的语言趋势指标。
自2014年以来,(更快)的V8引擎也是使用最多的引擎:在最流行的客户端(台式机为Chrome,Android的WebView)和服务器上最为流行-Node.js作为运行时,PostgreSQL与PL / V8用于SQL和存储过程。
...也许在2016年最重要的服务器端贡献是对JSON和Javascript的快速且强大的数据库支持:使用PostgreSQL 9.1+(2016-10),您可以通过简单的方式加载PL / V8(以及Coffeshop之类的方言)CREATE EXTENSION
命令; 最重要的是PostgreSQL 9.5+(2016-10),它是JSON和JSONb函数和运算符的完整正交集合。
因此,事实上,存在一个快速,灵活且可靠的 统一JavaScript开发堆栈。
尽管大多数人使用VBScript,但是Classic ASP能够在服务器上使用JavaScript。
服务器上JavaScript的一种令人信服的用法是对客户端数据验证的补充。例如,您可能在客户端和服务器上使用相同的JavaScript验证库。这样可以确保您在客户端上使用与服务器上相同的逻辑,但是(可能)通过在客户端进行预验证来避免不必要的往返。
Wikipedia在此处列出了许多服务器端JavaScript实现。
它可能是指使用javascript将消息发布到Web服务器而无需重新加载页面:换句话说就是AJAX。
但更可能的是,我认为它的含义类似于Aptana / Jaxer(或今天的Node.js),它使用javascript作为服务器端语言。在这种情况下,请记住javascript只是一种语言:Web浏览器中使用的DOM是一种API。服务器端的javascript引擎将提供自己的API对象,以适应服务器端的任务,例如数据库和文件系统访问。
由于客户端验证问题,服务器端javascript是一个有趣的主意:您希望在客户端进行验证,以避免向服务器发送不必要的请求。这样可以提高服务器性能并减少客户端的延迟。但是您必须在服务器端进行验证,因为您不能信任客户端。这导致客户端和服务器之间有很多重复的代码。
从理论上讲,如果您的客户端和服务器语言匹配,则不再需要相同逻辑的两个实现。实际上,它不能很好地工作,因为页面请求的客户端和服务器视图是如此不同,并且因为您无法控制客户端使用的javascript引擎。
这实际上取决于您是在谈论ASP.NET还是Classic ASP。如果您使用的是ASP.NET,则没有太多使用Javascript的理由。
ASP Classic是另一种情况。您可以在ASP中的服务器端使用Javascript,就像使用VBScript一样。您可以像通过VBScript一样访问Application,Server,Request和Response对象。
在ASP而不是VBScript的服务器端使用Javascript可能会带来真正的好处。这意味着您可以在浏览器代码和服务器代码之间共享代码。这也意味着您的开发人员无需使用两种不同的语言。
不过,ASP中的服务器端Javascript有一些缺点。首先,它在字符串连接方面似乎不如服务器端的VBScript快。它也没有像VBScript那样对COM对象进行调用(您只能通过返回值而不是通过out / byref参数从COM调用中获取数据)。
您可能希望浏览器和服务器都具有某些功能,以实现完全相同的实现。
一个示例是Wiki语法的渲染器,您可以在浏览器中运行所见即所得(WYSIWYG)编辑器,并在服务器上运行以渲染结果页面。这样,您就知道两种情况下两种渲染结果都是完全相同的。
显然Rhino可以将JavaScript编译为Java类。
传统上,Javascript围绕文档对象模型运行。但是,如果您在Java商店工作,并且想要围绕您的自定义对象模型创建脚本引擎该怎么办?那是服务器端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的可视化渲染部分,并用与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>
注意runat =“ sever”和runat =“ both”
使用ASP,您可以通过多种方式使用服务器端JavaScript。我最常使用的方法是在客户端和服务器上执行相同的代码以进行验证。
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
开始和结束允许包含相同文件的方式。