为什么我要使用服务器端JavaScript?

时间:2009-12-15 19:04:14

标签: javascript

我很困惑,我经常阅读有关服务器端JS的讨论,为什么我要使用它?它似乎比任何其他语言执行速度慢,它也缺乏许多更复杂语言的约定。

是否可以将整个对象从客户端传递到服务器,操纵它们并将它们还回?

只是努力理解它的概念。

13 个答案:

答案 0 :(得分:8)

  • 我认为你无法知道JavaScript的速度而不知道它在哪里运行。我认为V8可以击败像ruby或python这样的脚本语言。
  • 在我看来,JavaScript是更清晰的语言,例如PHP或Perl。但这只是我个人的意见。

为什么不呢?

有趣的链接:v8cginode.jswxJavaScript以及最后但并非最不重要的CouchDB(基于JavaScript的数据库服务器)

答案 1 :(得分:8)

是的,您可以使用JSON将整个对象从客户端传递到服务器,操纵它们并将它们返回。您还可以在客户端和服务器之间共享代码。

答案 2 :(得分:8)

  

为什么我要使用它?

它减少了项目使用的语言数量。对于现代Web应用程序,您需要具有一些JavaScript知识的开发人员,如果您只需要 JavaScript专业知识,那么您将拥有比您需要JavaScript + Java或JavaScript +更大的劳动力池供您选择C#,或JavaScript +任何东西。

  

它似乎比任何其他语言执行速度慢,

你能否给出任何理由,为什么你这么认为?当然这完全是虚拟机实施的问题,因此你无法做出明确的陈述。此外,Web应用程序通常在数据库访问而不是CPU上存在瓶颈,这几乎是不言而喻的。

  

它也缺乏更多复杂语言的惯例。

嗯......不是吗?如今,JavaScript(或者,正确地说,ECMAScript)是一种非常复杂的语言。它有例外,闭包,关联数组......真的,你需要的只是。

  

是否可以将整个对象从客户端传递到服务器,操纵它们并将它们还回?

不是这样的对象,因为底层协议仍然是HTTP,但使用JSON几乎是一回事。

答案 3 :(得分:3)

如果您了解该语言并且可以在非常高的级别上使用它,为什么还要切换到其他语言?此时,有一个非常好的快速服务器端JS,称为nodejs。在我看来,nodejs证明服务器端的JS不是票价而是现实。

答案 4 :(得分:1)

不要忘记你可以获得Mootools等人给你的所有客户端的好处,但是在服务器端,当你开始运行时,让编码成为一种纯粹的快乐。至于速度,取决于你做什么。我们有一个网站在每页请求JScript ASP中运行1000行代码,每天60K用户,1000页。它快速闪电!如此快,以至于在.net中重新编码它的情况不够强大,因为当前的代码处理得非常好。

写Javascript客户端一开始可能会伤害你的头脑,没有任何元素可以用一些非常古怪的功能来处理好的编码风格(我们将一个烦人的函数/闭包传递到我们的数据库代码中,例如:

var hotels = DataLayer.FindByHotelByStarRating( 4 )

hotels.each( function( hotel ) {
  %>
  <li><%= hotel.name.htmlEncode() %> is rated as <%= hotel.star_rating %> star</li>
  <%
}, this );

现在它非常强大且非常有趣,而且学习Mootools或高级JS的时间并没有浪费,因为我们可以在服务器端和客户端使用它。

我们可以使用相同的验证逻辑,相同的JSON函数,相同的对象(如果小心)等等。使用JScript的ASP比VBScript好100倍/更清洁/更简单/更好,让我的工作变得快乐而不是VBScript头痛。

最重要的是,这该死的乐趣!

答案 5 :(得分:1)

  

我很困惑,我经常阅读谈话   服务器端JS,我为什么要这样做   用那个?

这样您就可以用一种语言编写所有应用程序。这样您就可以在服务器和客户端之间共享对象,而无需通过序列化/转换/等。这样你就可以一次编写代码(例如,字段验证)

  

似乎它会执行方式   比其他几乎慢   语言,

不正确。 JS缓慢的感觉是由于被客户端使用。引擎实现非常缓慢,并且还存在DOM问题。   已经证明[1] JS在性能上可以接近于C.这是去年。进一步的性能改进。另请查看[Node.js webserver的基准测试再次[2]。

  

它也缺乏更多复杂语言的惯例。

你的意思是[闭包,生成器,map / reduce [3],[高阶函数,动态类型和基于原型的OO范例],比基于类的OO更灵活[4]?

  

是否可以交出整个物体   从客户端到服务器,   操纵它们并将它们还回来?

它[5]是[6]。

- MV

1:shaver.off.net/diary/2008/08/22/the-birth-of-a-faster-monkey/   2:four.livejournal.com/1019177.html   3:ejohn.org/blog/javascript-18-progress/   4:www.ibm.com/developerworks/java/library/j-cb12196/index.html   5:www.jaxer.org/   6:juicejs.org /

答案 6 :(得分:1)

  但是,不是那些口译员   它们是客户端浏览器的一部分   可能没有那些可用的   他们的服务器

查看www.commonjs.org

- MV

答案 7 :(得分:1)

Javascript并不慢; DOM是。

答案 8 :(得分:1)

现在已经使用了nodejs并为其编写了一个mongodb驱动程序,我不得不说我印象非常深刻。首先,因为我使用存储JSON对象的mongo,我有一个客户端到数据库管道,这都是javascript。

因此,当我在工作中仍然使用ruby时,我已经为所有个人项目转移到Javascript,因为我很懒,无法忍受SQL,Ruby,Javascript之间的持续上下文切换。

如果没有别的。 NodeJS是重新学习我们很少投入大量精力的语言的绝佳方式,这只会让你成为一个更强大的网络开发者:D

答案 9 :(得分:1)

我来晚了。 JavaScript / ECMA-Script是一种可以绑定到任何库的基本语言。在浏览器中使用时,它会向该语言公开几个浏览器级对象(窗口,文档等)。您嵌入.html文件或链接为.js文件的脚本被编程为对这些对象执行所需的操作。

同样的概念适用于服务器端。例如,NodeJS公开HTTP Server和Client对象,您可以执行与PHP,CGI脚本,Python或Ruby框架或Apache模块相同的操作。

谷歌的J8 JavaScript引擎与JIT非常优化。它用于Chrome(浏览器)和NodeJS(服务器)。

我曾经在浏览器中使用JavaScript来为服务器进行AJAX调用和Python / WSGI。这种混合编程模式让我感到恼火。由于我发现了NodeJS,我可以使用相同的语言进行服务器端和客户端编程。令人惊讶的是,NodeJS吞吐量是我使用Python实现的两倍多。 nodejs.org上有一些更详细的分析。简单的说法就是JS在使用V8时非常接近C / C ++速度。

答案 10 :(得分:0)

  嗯..你说所有的客户端   善良,但真的大部分   客户端填充这些库   提供的主要是DOM操作,   呀?

他们这样做。但你可以use jquery (for example) to generate HTML serverside

- MV

答案 11 :(得分:-2)

服务器端JScript是.NET系列语言中的另一种语言。在语法和功能方面,它几乎是我们从客户端工作中知道的Javascript,它在服务器上执行时有一个明显且非常显着的差异。

因此,环境是您在任何.NET语言中对程序所期望的标准.NET环境,特别是没有DOM。服务器端JScript受到任何其他服务器端程序的限制。特别是,无法直接将客户端JavaScript对象传递给服务器端程序。

性能明智的JScript代码与任何其他语言都相同,因为服务器端JScript是编译的,而不是解释的。类型强制引入了一些开销,但它很少。

至于为什么要使用JScript - 主要是因为它是一种脚本语言。如果您需要程序用户使用的语言来表达一些简单的条件和/或计算,您可能会发现给它们提供JScript作为提供此表达式的方法是一个很有吸引力的选择。至少对我而言,它确实很好用

答案 12 :(得分:-5)

可以找到最佳答案on this page

“用于创建当今现代动态网页的最常用方法之一是服务器端脚本语言。这些动态页面的构建方式使得所有服务器进程都在页面传递给用户之前进行。意味着您只需要最基本的互联网浏览软件来查看当今网络上最复杂和最动态的页面。“

这也为移动浏览器提供了与完整PC浏览器相同的体验。