服务器端Javascript:为什么?

服务器端Javascript:为什么?,javascript,scripting,server-side,Javascript,Scripting,Server Side,服务器端javascript的使用是否普遍?为什么要使用它而不是任何其他服务器端脚本?是否有比其他服务器端语言更好的特定用例 另外,对于如何开始使用它感到困惑,我使用的是freeBSD,我需要安装什么才能运行服务器端javascript?我认为服务器端javascript的一个非常酷的用法是用于数据验证,而这种用法几乎不常使用。使用它,您可以编写一个javascript文件来验证表单,在客户端检查表单,然后在服务器端再次检查表单,因为我们不应该信任客户端的任何内容。它可以让您保持验证规则的干燥。

服务器端javascript的使用是否普遍?为什么要使用它而不是任何其他服务器端脚本?是否有比其他服务器端语言更好的特定用例


另外,对于如何开始使用它感到困惑,我使用的是freeBSD,我需要安装什么才能运行服务器端javascript?

我认为服务器端javascript的一个非常酷的用法是用于数据验证,而这种用法几乎不常使用。使用它,您可以编写一个javascript文件来验证表单,在客户端检查表单,然后在服务器端再次检查表单,因为我们不应该信任客户端的任何内容。它可以让您保持验证规则的干燥。很方便

另见:

事情是这样的:

服务器很昂贵,但用户可以免费在浏览器中为您提供处理时间。因此,与任何大到需要运行多台服务器的站点上的客户端代码相比,服务器端代码相对昂贵。但是,有些事情不能留给客户,比如数据验证和检索。您希望在客户机上执行这些操作,因为这意味着用户的响应时间更快,您自己的服务器基础设施更少,但出于安全性和可访问性考虑,需要服务器端代码

通常情况下,你会同时做这两件事。编写服务器端逻辑是因为必须这样做,但也可以用javascript编写相同的逻辑,以期为用户提供更快的响应,并在某些情况下为服务器节省一些额外的工作。这对于验证代码尤其有效;浏览器中的验证检查失败可以在服务器上保存整个http请求/响应对

既然我们都是(大部分)程序员,我们应该立即发现新问题。开发两套相同的逻辑不仅需要额外的工作,还需要维护它,平台不匹配导致的不可避免的错误,以及随着时间的推移实现分离而引入的错误

输入服务器端javascript。其思想是您可以编写一次代码,因此相同的代码可以在服务器和客户端上运行。这似乎解决了大部分问题:您一次完成了服务器和客户机的全部逻辑,没有漂移,也没有双重维护。当您的开发人员只需要知道一种语言就可以进行服务器和客户端工作时,这也很好

不幸的是,在现实世界中,它的效果不是很好。问题有四个方面:

  • 页面的服务器视图与页面的客户端视图仍然有很大的不同。服务器需要能够做一些事情,比如直接与数据库对话,而这不应该通过浏览器完成。浏览器需要操作与服务器不匹配的DOM
  • 您无法控制客户端的javascript引擎,这意味着您的服务器代码和客户端代码之间仍然存在重要的语言差异
  • 数据库通常是一个比web服务器更大的瓶颈,因此节省和性能方面的好处比预期的要少
  • 虽然几乎每个人都知道一点javascript,但真正了解javascript的开发人员并不多
  • 这些并不是完全不可回避的技术问题:您将服务器支持的语言限制为大多数浏览器都支持的javascript子集,提供了解该子集和服务器端扩展的IDE,制定一些关于页面结构的规则以最小化DOM问题,并提供一些锅炉板javascript,以便将其包含在客户端中,从而使平台更易于使用。其结果类似于aptanastudio/Jaxer,或者最近的Node.js,这可能非常好

    但并不完美。在我看来,有太多的陷阱和小的兼容性问题,使这真的发光。最终,与开发人员的时间相比,额外的服务器仍然很便宜,而且大多数程序员能够使用javascript以外的东西来提高生产率


    我真正想看到的是部分服务器端javascript。当请求页面或提交表单时,服务器平台会请求使用javascript进行验证,可能是作为web服务器的插件,完全独立于其他部分,但响应是使用您选择的平台生成的。

    javascript只是一种语言。因为它只是一种语言,你可以在任何地方使用它。。。在浏览器、服务器、嵌入其他应用程序、独立应用程序等中


    话虽如此,我不知道“服务器端Javascript”有很多新的发展。

    Javascript是一种非常好的语言,具有self/scheme原型风格库和C风格语法。有一些问题,请看Javascript的好部分,但总的来说,它是一种一流的语言。问题是,大多数javascript程序员都是糟糕的程序员,因为很容易入门

    谷歌的一个团队构建了Rhino on Rails,这是一个MVC框架,类似于Ruby on Rails,它是用javascript编写的,在Rhino上运行,Rhino是Java虚拟机的javascript解释器。在这种情况下,他们需要使用JavaVM,但希望得到一种速度快(javascript很快)、支持duck类型且灵活的语言

    另一个例子是CouchDB,一个面向文档的数据库,它使用json作为传输格式,javascript作为查询和索引语言。他们希望数据库尽可能以web为本机

    Javascript擅长字符串和dom(xml)操作、沙盒、网络、扩展自身等。。。这些特性是开发web应用程序时经常做的事情

    尽管如此,我实际上并没有开发服务器端javasc