据说 Backbone 处理所有高层次的抽象,而 jQuery 或类似的库处理 DOM、规范化事件等等。
请有人用任何简单的实际例子帮助我理解这个说法。
MVC 框架(如 Backbone、Knockout)的一个重要特性是它保持模型(数据)和视图同步。但这似乎只针对页面级别,而不是整个应用程序。那么我们能否在多个页面之间同步模型/数据和视图(全局式)?
据说 Backbone 处理所有高层次的抽象,而 jQuery 或类似的库处理 DOM、规范化事件等等。
请有人用任何简单的实际例子帮助我理解这个说法。
MVC 框架(如 Backbone、Knockout)的一个重要特性是它保持模型(数据)和视图同步。但这似乎只针对页面级别,而不是整个应用程序。那么我们能否在多个页面之间同步模型/数据和视图(全局式)?
你的开头语实际上是关于Backbone.js和jQuery之间差异的一个很好的陈述,让我们来详细探讨。
首先,这两个库并不竞争,它们是互补的。
例如,以下是我会使用jQuery执行的一些操作:
以下是我可能在Backbone.js中执行的一些操作:
jQuery在微观层面上表现出色-选择页面元素,平滑处理浏览器处理事件的差异。
Backbone.js更加注重大局。它有助于管理数据和应用程序逻辑。在上述相册示例中,Backbone提供了几个有用的结构:您需要一个包含与照片相关的所有数据的东西(模型),相册中所有照片的列表(集合),以及某个地方放置逻辑,以确定用户点击缩略图时会发生什么(视图)。这些是Backbone控件或应用程序中的主要组成部分。
但是,Backbone.js也受益于类似jQuery的东西,以帮助将应用程序的数据和逻辑呈现到DOM中。例如,通常使用jQuery选择页面上作为Backbone应用程序容器的元素。还通常使用jQuery的$(function () {});
来启动Backbone控件的各个部分。您可能还会使用jQuery来显示表单字段验证错误消息。
save
方法,它将执行一个AJAX调用以将更改存储在服务器上。只要你边完成就保存数据,你就可以拥有一个多页应用程序。这是一个非常灵活的模型,也是我们在工作中可能会使用Backbone的方式。虽然我很想构建单页应用,但我们现有的多页应用程序已有10年的历史。我们正在寻求在Backbone中重建一些更复杂的UI组件,然后在用户转到不同页面之前将更改同步到服务器。我从未听说过有人在多个页面上使用backbone.js。它几乎总是某种单页应用程序。
单页应用程序可能具有许多不同的模型、视图和状态,并且可以产生一个完整的、强大的应用程序。
如果您已经在Java中具有服务器端模板/视图渲染,则backbone.js对您来说并不适用。要充分利用backbone.js,您必须将其中一些代码移动或复制到前端JavaScript中。
如果您不想做单页应用程序(这只是意味着一个没有页面刷新或更改的应用程序,但URL仍然可以更改,并且对用户来说看起来像多个页面),那么您可以将所有MVC保留在服务器上,您不需要使用backbone。
编辑:
backbone所做的就是将通常在服务器上处理的一些MVC内容移动到客户端。对于许多人来说,这意味着忘记服务器,只需编写单页JavaScript应用程序即可。服务器变成了JSON / REST数据的来源。如果您没有准备好这样做,那么backbone.js并不是很有用。
Backbone是一个MV*框架,而jQuery是一个DOM工具包。
MV*应用程序的主要特征是路由、数据绑定、模板/视图、模型和数据访问。Backbone在部分情况下可能依赖于jQuery。
jQuery是一个坚实的API,可用于查询DOM,具有广泛的浏览器支持和繁荣的社区。它带有事件处理、延迟对象和动画。
// When any <p> tag is clicked, we expect to see '<p> was clicked' in the console.
$( "p" ).on( "click", function() {
console.log( "<p> was clicked" );
});