6

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

最吸引人的解决方案之一是继续为我们呈现服务器端,就像Twitter 所做的那样。他们称之为“Hijax + 服务器端渲染”。我们不希望在 javascript 中拥有完整的 mvc 框架,但博客中的这些引述对我们非常有吸引力:

按照约定,我们的组件将自己附加到单个 DOM 节点,通过委托监听事件,在 DOM 上触发事件,这些事件通过 DOM 事件冒泡广播到其他组件。[...] 其次,我们所有的组件都是使用 AMD 定义的。

我们一直在尝试构建我们自己的东西,但是如果没有高水平的 javascript 专业知识,我们就无法做到这一点。对于非常简单的情况,像jquery-pjax这样的东西似乎也是一个很好的解决方案。

我们正在寻找:

  1. 将 XHR 与 DOM 松散耦合的 UI/数据隔离
  2. 事件驱动的 UI,因此开发人员可以将侦听器附加到所有类型的 DOM 对象

有没有类似 javascript 框架的东西?随着pushState越来越多的关注,我希望会有一些东西可用。有任何想法吗?

4

2 回答 2

2

您可能想查看History.jsAmplifyjs(可能还有一些组件的microjs )

于 2013-02-07T07:08:10.243 回答
0

我将尽我所能回答你的问题。话虽如此,我会说您的问题非常广泛且含糊不清。您尚未成功传达您在 JavaScript 库中寻找的确切内容。您提到了许多不同的主题,这些主题都很复杂,每个主题都是为了服务于客户端开发中的特定目的。虽然可能有所有这些概念的实现,但没有一个明确的答案可以解决您的所有问题。

我将从您的第一点“UI / 数据隔离”开始。这个概念实际上是关于关注点分离。您希望您的 UI 与您的数据分开存在。您真正需要的是让您的 HTML 反映数据模型的当前状态。您还希望这会自动为您发生。这是具有 MVC 设计模式的非常常见的工作流程。JavaScript 有几个可供您使用的选项: Backbone.jsAngularJSEmberJS,不胜枚举……

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

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

简而言之,如果你想为你的 JavaScript 添加结构......这真的取决于你想要什么。对于简单的事情,一点点手工制作的 jQuery 就可以了。如果您真的想要一个更具 MVC 风格的应用程序,并且具有增长潜力,那么像 Backbone 这样的 MVC 框架是您的最佳选择。

于 2013-02-08T04:32:53.360 回答