【问题标题】:Server Side Javascript: Why?服务器端 Javascript:为什么?
【发布时间】:2022-05-20 17:41:21
【问题描述】:

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

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

【问题讨论】:

    标签: javascript scripting server-side


    【解决方案1】:

    是这样的:

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

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

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

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

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

    1. 页面的服务器视图与页面的客户端视图仍有很大不同。服务器需要能够做一些事情,比如直接与数据库对话,而这些事情不应该从浏览器中完成。浏览器需要做一些事情,比如操作与服务器不匹配的 DOM。
    2. 您无法控制客户端的 javascript 引擎,这意味着您的服务器代码和客户端代码之间仍然存在重要的语言差异。
    3. 数据库通常是比 Web 服务器更大的瓶颈,因此节省和性能收益最终低于预期。
    4. 虽然几乎每个人都知道一点 javascript,但真正了解和理解 javascript 的开发人员并不多很好

    这些并非完全无懈可击的技术问题:您将服务器支持的语言限制为大多数浏览器都支持的 javascript 子集,提供了解该子集和服务器端扩展的 IDE,制定一些规则关于页面结构以最大限度地减少 DOM 问题,并提供一些样板 javascript 以包含在客户端上,以使平台更好用。结果类似于 Aptana Studio/Jaxer,或者最近的 Node.js,它可能非常好。

    但并不完美。在我看来,有太多的陷阱和小的兼容性问题才能让它真正发光。归根结底,与开发人员时间相比,额外的服务器仍然很便宜,而且大多数程序员能够使用 javascript 以外的东西来提高工作效率。

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

    【讨论】:

    • 你不可能只是输入... :p
    • :) 最后一次有人问这样的问题,就在我点击提交之前它就关闭了。我在帖子中有足够的工作,我决定保存它。
    • 这个问题有问题吗?为什么类似的被关闭了?
    • Plus: 4. 大多数网络程序员使用 JavaScript 不是因为他们喜欢它,而是因为没有其他东西可用!用那种该死的语言做整个应用程序会很痛苦。
    • 我发现阅读这个问题非常有趣,十年后作为 javascript 开发人员回答了这个问题。另一个答案是某些环境是固定的(即您无法安装任何东西)。我们在 2010 年使用 node 在一个拥有数千台设备的分布式环境中解决了这个问题。我们可以在不安装或打开任何东西的情况下使用 exe 运行 node。
    【解决方案2】:

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

    另见:

    【讨论】:

    • +1:你知道,我从没想过我会投票赞成服务器端 javascript,但你的回答值得深思!
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      Google 的一个团队构建了 Rhino on Rails,这是一个类似于 Ruby on Rails 的 MVC 框架,它是用 javascript 编写并在 Rhino 上运行的,它是 Java VM 的 javascript 解释器。在这种情况下,他们需要使用 Java VM,但希望获得一种速度快(javascript 速度快)、支持鸭式输入且灵活的语言。

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

      Javascript 擅长字符串和 dom (xml) 操作、沙盒化、联网、扩展自身等......这些功能是您在开发 Web 应用程序时经常做的事情。

      话虽如此,我实际上并没有开发服务器端 javascript。这不是一个坏主意,但绝对不常见。

      【讨论】:

        【解决方案5】:

        我们在客户端使用 javascript 是因为它就在那里,而不是因为它是我们从语言列表中选择的。我不会选择它来处理服务器上的任何杂务。

        你可以在服务器上运行任何你喜欢的语言,事实上,你喜欢多少就多少。

        javascript 可靠且易于使用,但对于服务器上的常见任务而言,它的劳动强度太大。

        【讨论】:

          【解决方案6】:

          我使用过 Javascript (NodeJS) 和编译语言(例如 Java 或 C#.NET)。互联网上有很多关于哪个更可取的讨论。这个问题很老了(2009)。从那时起,Javascript 世界发生了很大变化,而老实说,Java 世界并没有太大变化(相对而言)。

          Typescript、令人惊叹的框架(例如 Next.JS)、反应式编程、函数式编程、GraphQL、SSR 等在 Javascript 世界中取得了巨大进步。

          当我查看已编译的代码,尤其是 Java 代码时,它似乎仍然是相同的旧工具 - Spring(可能是 SpringBoot)和 Jackson。 .NET 有先进的服务器端,但还没有达到 JS 世界的程度。

          当然,我的列表可以用于多种语言,但我相信 Javascript 已经大大改善了软件工程世界。

          使用 Javascript、Typescript 和 NodeJs 进行服务器端开发既有趣又高效。使用它并享受它。就像今天的数百万人一样。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-01-31
            • 1970-01-01
            • 2013-04-16
            • 2012-02-22
            • 2016-04-03
            • 1970-01-01
            相关资源
            最近更新 更多