【问题标题】:Server-Side javascript framework服务器端 javascript 框架
【发布时间】:2012-07-14 07:27:37
【问题描述】:

我希望用更好的东西代替 PHP(似乎每个人都说 PHP 是邪恶的,对吧?),并考虑使用服务器端 JavaScript。

node.js 似乎很受欢迎,但我担心我会因为异步的东西而发疯。是否可以在节点下编写普通(同步)代码?

我的愿望清单:web 和命令行脚本,良好的性能(在 The Computer Language
Benchmarks Game
,V8 似乎比 PHP 快一个数量级),最好由某些公司或社区开发,这样它就不会被放弃总有一天,用户社区会拥有一个不错的模块库。

我不考虑基于 Rhino 的各种框架,因为 Rhino 在 Java 中运行,而且我不喜欢 Java,知道它的内存占用,而且将 javascript 编译为 java 的整个想法对我来说毫无意义。

花了一些时间在谷歌上搜索,发现了许多项目:Myna、Meteor、GromJS、APE、GLUEscript、v8cgi、silkjs、wakanda、GPSEE、sorejs、ejscript、Persevere、PhantomJS。

有人有这方面的经验吗?欢迎任何建议。

【问题讨论】:

  • 如果您还没有为异步模型做好准备,那么您是对的:Node.js 会让您发疯。
  • @Sandman4...我能感觉到你在这个问题上。。我确实为我的简单实现寻找了新奇的东西,但我不再这样做了,除非它服务于商业目的。花哨的实现面临的挑战是长期的维护。如果您的组织有足够的 PHP 技能,请使用 PHP.. 或简单的 .NET(我知道 .NET 并不简单:D).. 或者如果您的组织将沿着这条路径发展以建立能力,请使用 Node!
  • Rhino 不会编译成 Java,它会编译成字节码。
  • 不想听起来像个狂热分子,但 PHP 是“邪恶”的想法更多的是时尚问题。到目前为止,它仍然是最常用的 Web 开发语言。人们往往认为微软也是邪恶的,但我们中的 90% 至少有 Windows 的双启动或训练营。

标签: javascript server-side javascript-framework serverside-javascript server-side-scripting


【解决方案1】:

Meteor。建立在 Node.js 之上并快速发展 very

在 Meteor 中,您的服务器代码在每个请求的单个线程中运行,而不是以 Node.js 典型的异步回调样式。我们发现线性执行模型更适合 Meteor 应用程序中的典型服务器代码。

更新一年后 - Why Meteor

【讨论】:

    【解决方案2】:

    感谢您提供您找到的“众多项目”列表。我们目前正在使用自 1996 年以来提供服务器端 JavaScript 实现的 Microsoft ASP 3.0(“经典 ASP”,IIS 附带)——它快速、成熟,并且由于 COM 技术相当可扩展。如果您不固定开源,那么值得一看。对于我们的开源策略,我们将仔细研究 SilkJS。

    【讨论】:

      【解决方案3】:

      你看过Comparison of server side JavaScript solutions吗?

      Node.js 很流行。至于php速度,你看过HipHop吗?用 javascript 重写代码可能不会比 php 带来太多的性能提升。

      【讨论】:

      • 我花了一整天的时间在谷歌上搜索,所以是的,我看到了维基百科。我的想法不仅仅是性能(尽管基准游戏中的基准看起来令人印象深刻),只是想尝试 PHP 以外的其他东西,也许更“有序”。
      【解决方案4】:

      Nodejs 在很多方面都是非常好的选择。

      但你说你担心它的异步性质。

      两点。

      1. 您永远不必担心异步,并且可以继续像 PHP 一样从上到下编写您的应用程序。那是如果您没有执行“阻塞 IO”。

      2. 如果您正在执行“阻塞 IO”,例如读取数据库或访问文件系统,那么您将需要处理异步。幸运的是,有很多好方法可以做到这一点,而无需过多地改变你的编码习惯。

      【讨论】:

        【解决方案5】:

        如果你问我,那么 Node.JS 就是要走的路。您可以编写同步代码,但只能在命令行脚本中执行。在编写 Web 服务器时,您必须走异步路由,否则它将无法执行,因为 JavaScript 是单线程的,一切都会停止。

        Node.js 之所以这么快,是因为异步 IO。

        你会习惯回调和事件,一段时间后你就不想回去了。

        Node.js 是一个基于 Chrome 的 JavaScript 运行时构建的平台,可轻松实现 构建快速、可扩展的网络应用程序。 Node.js 使用 事件驱动的非阻塞 I/O 模型,使其轻量级和 高效,非常适合运行的数据密集型实时应用程序 跨分布式设备。

        【讨论】:

        • 我不认为 JavaScript 是单线程的,它是一个单线程的 实现。只是不知道是node.js还是V8本身的限制。
        • Javascript 本质上是并行的,因为它使用异步调用。问题是它运行在通常是单线程的解释器上。
        • JavaScript 应该按照常用的方式使用(意外惊喜)。它具有执行解释 JavaScript 的主线程,在非阻塞环境中工作,多个工作人员在单独的线程上工作(在阻塞 IO 环境中)。它可以在 Node.js(JavaScript 和 C++ 模块)中清楚地看到,但实际上也可以在所有(主要)浏览器中完成(毕竟 Node.js 使用 V8 引擎)。考虑到这一点,您可以将其称为单线程还是多线程。
        猜你喜欢
        • 2011-12-25
        • 1970-01-01
        • 2018-12-15
        • 2018-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多