繁体   English   中英

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

[英]Why would I want to use server-side JavaScript?

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

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

只是努力理解它的概念。

  • 我想你不能在不知道它运行的地方就JavaScript的速度说些什么。 我认为V8可以击败像ruby或python这样的脚本语言。
  • 在我看来,JavaScript是更清晰的语言,例如PHP或Perl。 但这只是我个人的意见。

那为什么不呢?

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

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

我为什么要用它呢?

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

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

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

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

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

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

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

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

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

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

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头痛。

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

我很困惑,我经常阅读有关服务器端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/

但是,不是那些解释器是客户端浏览器的一部分,他们可能不会有那些可用于他们的服务器

查看www.commonjs.org

- MV

Javascript并不慢; DOM是。

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

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

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

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

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

带有JIT的谷歌V8 JavaScript引擎已经过优化。 它用于Chrome(浏览器)和NodeJS(服务器)。

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

嗯..你说所有的客户端都很好,但是这些库提供的大多数客户端东西主要是DOM操作,是吗?

他们是这样。 但您可以使用jquery(例如)生成HTML服务器端

- MV

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

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

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

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

最好的答案可以在这个页面上找到

." “用于创建当今现代动态网页的最常用方法之一是服务器端脚本语言。这些动态页面的构建方式使得所有服务器进程都在页面传递给用户之前进行。 。“

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM