Web frameworks 存在哪些新一代web应用程序框架?他们如何超越RoR、Django等。?

Web frameworks 存在哪些新一代web应用程序框架?他们如何超越RoR、Django等。?,web-frameworks,Web Frameworks,目前,最流行的web应用程序框架包括,以及各种PHP框架,如和。然而,我一直在阅读一些“下一代”web应用程序框架,它们声称以不同的方式进行web开发 也许最著名的例子是基于Smalltalk语言构建的框架。在其页面中,它列出了4个关键功能: 编程HTML生成 基于回调的请求处理 嵌入式组件 模式会话管理 我正在开发一个相当复杂的模拟web应用程序,它需要类似于桌面应用程序的功能,比如复杂的交互表单、任务流程、大量的图表和视觉效果、UI灵活性和可重用性(大量的小部件),Seaside的功能2、3

目前,最流行的web应用程序框架包括,以及各种PHP框架,如和。然而,我一直在阅读一些“下一代”web应用程序框架,它们声称以不同的方式进行web开发

也许最著名的例子是基于Smalltalk语言构建的框架。在其页面中,它列出了4个关键功能:

  • 编程HTML生成
  • 基于回调的请求处理
  • 嵌入式组件
  • 模式会话管理
  • 我正在开发一个相当复杂的模拟web应用程序,它需要类似于桌面应用程序的功能,比如复杂的交互表单、任务流程、大量的图表和视觉效果、UI灵活性和可重用性(大量的小部件),Seaside的功能2、3和4听起来非常吸引人

    因此,我想听听其他(高级)web开发人员关于存在哪些开源的“下一代”web应用程序框架,是什么使它们比Django/RoR等更为熟悉的工具“更好”,以及使用这些较新的工具可以构建哪些类型的应用程序,而使用较旧的框架很难/很痛苦,例如,我了解Seaside基于延续的会话/状态管理使有状态应用程序比全局会话变量容易得多。这到底有多有用


    提前感谢您的经验和见解

    坦率地说,只要你在每次用户界面交互中来回往返于服务器,你就永远不会有“桌面式”的体验。我基本上放弃了服务器端框架。我的web应用程序是javascript和web服务,在这些应用程序中,我尽量减少服务器端代码的数量。剩下的很少,我将其包装到Zend框架中,但数据持久性和验证层实际上并不需要那么多代码

    我使用的是javascript代码,但是有很多javascript框架都很好(,,…)


    所有真正丰富的交互最终都是javascript,因此,如果您要选择一个平台,请选择一个与javascript集成得非常好的平台。显然javascript工具包在这方面有优势。我收集到的GWT很神奇,因为它不是javascript,但您可以假装它是javascript,而不会遇到问题。Quake II的javascript端口是一个GWT项目,这说明了一些问题。

    相当于Smalltalk的Seaside框架的python是一个功能强大的系统,尽管目前文档在深度/广度上不一致,而且我在网上找不到很多开发人员的故事/经验。同样有趣的是,它用于支持连续性。

    是的,基于haskell语言的框架。

    Seaside对我们来说非常有用。我们在Pharo上开发,并将其部署在带有Gemstone OODB的VPS上,目前我们的开发速度大约是我以前的公司在ASP.NET MVC中的五倍

    没有数据库代码、生成的html(没有模板)和javascript(Scriptaculous/jQuery/RaphaelJs)的组合效果非常好

    第一点非常重要。我从未见过一个足够干燥的基于模板的系统(尽管可能有一个基于lisp的系统)

    我也玩过卡布奇诺的早期版本,如果你有cocoa/nextstep的背景就好了,但它(在第一次公开发行后的几个月)对我们来说还不够完善。

    是一个用Haskell编写的web框架,类似Seaside,但没有连续性问题(持久性和可伸缩性问题)

    web开发的主要问题是HTTP的无状态性质,这迫使一个事件处理编程模型,其中充满了不安全的变量标识符和这里或那里引用的事件处理程序。大多数情况下,状态是以动态类型数据的哈希表的形式出现的,因为事件处理程序不共享变量范围

    基于continuation的框架,如ocsigen(ocaml)和seaside(smalltalk)很好地处理了back按钮,它们将状态保持在正常变量中,并且可以通过阅读代码来理解导航。而且他们在一定程度上都很安静。但是这些框架是不可伸缩的,并且由于固有的延续性问题而存在持久性问题

    web应用程序的另一个问题是HTML的无类型性,它可能会产生不匹配和运行时错误

    在MFlow中,不仅每个页面,而且整个导航在编译时都是安全的,并且不会出现上述问题。它具有基于延续的框架的良好特性,但它是可伸缩的,因为它使用日志记录和回溯而不是延续。它使用标准的Haskell web库:WAI、Formlet、stm、blaze html。它有一个可插拔的独立组件系统

    这是一个有三页的完整应用程序。在一个循环中,它要求两个数字并显示总和。你可以随意按后退按钮。在配置文件、页面和源代码中,您不必在这里和那里放置神奇的标识符:

    module Main where
    import MFlow.Wai.Blaze.Html.All
    
    main= do
      addMessageFlows  [("sum", transient . runFlow $ sumIt )]
      wait $ run 8081 waiMessageFlow
    
    sumIt= do
      setHeader $ html . body
      n1 <- ask $  p << "give me the first number"  ++>  getInt Nothing
      n2 <- ask $  p << "give me the second number" ++>  getInt Nothing
      ask $ p << ("the result is " ++ show (n1 + n2)) ++> wlink () << p << "click here"
    
    modulemain其中
    导入MFlow.Wai.Blaze.Html.All
    main=do
    addMessageFlows[(“sum”,transient.runFlow$sumIt)]
    等待$run 8081消息流
    sumIt=do
    setHeader$html。身体
    我相信n1是真正的下一代web框架。顾名思义,它正在杀死恐龙

    为什么是下一代?让我列出它的一些特性,摘自它的

  • 电线上的数据。Meteor不通过网络发送HTML。服务器发送数据并让客户端呈现数据

  • 一种语言。Meteor允许您用JavaScript编写应用程序的客户端和服务器部分

  • 数据库无处不在。您可以使用相同的方法从客户端或服务器访问数据库

  • 延迟补偿。在客户机上,Meteor预取数据并模拟模型,使其看起来像服务器方法调用立即返回