pushstate的Javascript框架;hijax“;

pushstate的Javascript框架;hijax“;,javascript,ajax,javascript-framework,pushstate,hijax,Javascript,Ajax,Javascript Framework,Pushstate,Hijax,我们所有的应用程序都是php mvc,在客户端的顶部有一个非常简单的js行为层。我们希望更多地构建javascript,并停止请求“代码片段”来执行简单行为(例如,到处加载不同的jquery插件)。我们不使用javascript MVC框架,也不为我们的新应用寻找最合适的解决方案 最吸引人的解决方案之一是继续为我们呈现服务器端,如。他们称之为“Hijax+服务器端渲染”。我们不希望在javascript中有一个完整的mvc框架,但博客中的这些引语对我们很有吸引力: 根据约定,我们的组件将自己连接

我们所有的应用程序都是php mvc,在客户端的顶部有一个非常简单的js行为层。我们希望更多地构建javascript,并停止请求“代码片段”来执行简单行为(例如,到处加载不同的jquery插件)。我们不使用javascript MVC框架,也不为我们的新应用寻找最合适的解决方案

最吸引人的解决方案之一是继续为我们呈现服务器端,如。他们称之为“Hijax+服务器端渲染”。我们不希望在javascript中有一个完整的mvc框架,但博客中的这些引语对我们很有吸引力:

根据约定,我们的组件将自己连接到单个DOM节点,通过委托监听事件,在DOM上激发事件,并且这些事件通过DOM事件冒泡广播到其他组件。[…]其次,我们所有的组件都是使用AMD定义的

我们一直在尝试构建自己的东西,但如果没有高级javascript专业知识,我们在这方面就走不远。对于非常简单的情况,类似的方法似乎也是一个很好的解决方案

我们正在寻找:

  • 将XHR与DOM松散耦合的UI/数据分离
  • 事件驱动的UI,因此开发人员可以将侦听器附加到所有类型的DOM对象
  • 是否有类似于javascript的框架?随着
    pushState
    受到越来越多的关注,我希望能提供一些东西。有什么想法吗?

    您可以结帐并
    (可能还有一些组件)我将尽力回答你的问题。话虽如此,我要说的是,你的问题很广泛,也很含糊。您尚未成功地传达您在JavaScript库中寻找的内容。您提到了许多不同的主题,这些主题都很复杂,每个主题都是为了在客户端开发中实现特定的目的而存在的。虽然在野外可能会实现所有这些概念,但没有一个明确的答案来解决所有问题

    我将从您的第一点“UI/数据分离”开始。这个概念实际上是关于关注点的分离。您希望UI与数据分开存在。这里真正需要的是让HTML反映数据模型的当前状态。您还希望这种情况自动发生。这是一个具有MVC设计模式的非常常见的工作流。JavaScript有几个选项可供选择:,,列表如下

    根据我个人使用这些不同框架的经验,我建议Backbonejs具有灵活性和轻量级。在主干网中,我们有“视图”的概念,它可以直接绑定到数据模型。它还通过其路由机制支持您想要的“pushSate”概念

    “事件驱动UI”部分可以由任意数量的不同JavaScript库处理。jQuery可能是最流行的将事件附加到“各种dom元素”的库。js还允许使用其视图对象轻松设置事件委派(通过事件冒泡)


    简而言之,如果您希望向JavaScript添加结构。。。这完全取决于你想要什么。对于简单的事情,一点手工制作的jQuery就可以了。如果你真的想要一个更具MVC风格的应用程序,它有增长的潜力,那么像主干网这样的MVC框架是一个不错的选择。

    IMO Twitter的方法相当糟糕。早在六月份,我就写了一篇文章,展示了他们如何通过逐步增强mobile.twitter.com来迁移到
    pushState
    。我使用了我的js框架,演示只花了几天时间。Twitter迁移花了多少人月时间?有趣的评论Sean:-)然而,我们没有过渡到js hijax,因为我们希望获得性能提升,我们有时需要行为脚本,而html无法完成这项工作,我们希望最小化服务器端应用程序。这就是为什么我们认为hijax非常适合我们。当javascript被禁用时,您应该会得到“旧”完整页面呈现应用程序的回退。我完全同意“hashbang已经死了”:它们是不灵活的,渐进式的增强成为不可能。这是新twitter.com的另一个问题——如果js被禁用,就没有办法发布tweet。twitter发布了一个轻量级的、基于组件的JavaScript框架,它将行为映射到DOM节点。它听起来不像是集成的
    pushState
    ,但是您可以将它与
    jquery pjax
    结合起来。您能更具体地说明您在寻找什么吗?您需要的jquerypjax缺少什么?