服务器端Javascript:为什么?

时间:2009-03-27 20:13:35

标签: javascript scripting server-side

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

另外,对于如何开始尝试它感到困惑,我在freeBSD上,为了运行服务器端的javascript我还需要安装什么?

5 个答案:

答案 0 :(得分:47)

它是这样的:

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

通常情况是你同时做两件事。您编写服务器端逻辑是因为必须这样做,但您也在javascript中编写相同的逻辑,希望能够为用户提供更快的响应,并在某些情况下为您的服务器节省一些额外的工作。这对验证码特别有效。

由于我们所有(大多数)程序员都在这里,我们应该立即发现新问题。开发两组相同的逻辑不仅涉及额外的工作,而且还有维护它所涉及的工作,平台产生的不可避免的错误不能很好地匹配,以及随着时间的推移实现漂移而引入的错误。

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

不幸的是,在现实世界中,它并没有那么好用。问题是四方面的:

  1. 页面的服务器视图与页面的客户端视图仍然非常不同。服务器需要能够执行诸如直接与数据库交谈之类的事情,这些数据库不应该从浏览器完成。浏览器需要执行操作与服务器不匹配的DOM的操作。
  2. 您无法控制客户端的javascript引擎,这意味着您的服务器代码与客户端代码之间仍然存在重要的语言差异。
  3. 数据库通常是比Web服务器更大的瓶颈,因此节省的费用很少。
  4. 虽然几乎每个人都知道一点点javascript,但没有多少开发人员真正了解和理解javascript 以及
  5. 这些并非完全无法解决的技术问题:您将服务器支持的语言限制为大多数浏览器都支持的javascript子集,提供了解此子集的IDE和服务器端扩展,制定一些规则关于页面结构,以尽量减少DOM问题,并提供一些锅炉板javascript包含在客户端,使平台更好用。结果就像Aptana Studio / Jaxer,或者最近的Node.js,它们可能非常好。

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

    我真正希望看到的是部分服务器端javascript。当请求页面或提交表单时,服务器平台在javascript中执行请求验证,可能作为Web服务器的插件完全独立于其余部分,但响应使用您选择的平台构建。

答案 1 :(得分:6)

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

另见:

答案 2 :(得分:3)

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

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

答案 3 :(得分:3)

Javascript是一种非常好的语言,具有自我/方案原型样式库和C样式语法。有一些问题,请参阅Javascript the Good Parts,但一般来说它是一流的语言。问题是大多数javascript程序员都是糟糕的程序员,因为它很容易上手。

谷歌的一个团队在Rails上构建了Rhino,这是一个像Ruby on Rails这样的MVC框架,用javascript编写并在Rhino上运行Java VM的javascript解释器。在这种情况下,他们需要使用Java VM,但希望获得一种快速(javascript快速),支持鸭子打字并且灵活的语言。

另一个例子就像CouchDB,一个面向文档的数据库,它使用json作为它的传输格式和javascript,因为它的查询&索引语言。他们希望数据库尽可能是Web原生的。

Javascript擅长字符串和dom(xml)操作,沙盒,网络,扩展等等......这些功能是您在开发Web应用程序时经常使用的功能。

所有这一切,我实际上并没有开发服务器端的JavaScript。这不是一个坏主意,但绝对不常见。

答案 4 :(得分:1)

我们在客户端使用javascript,因为它存在,而不是因为我们选择的语言列表。我不会为服务器上的任何杂务选择它。

您可以在服务器上运行您喜欢的任何语言,实际上,您可以随意使用。

javascript可靠且易于使用,但它对于服务器上的常见任务而言过于劳力密集。

相关问题