2024-08-02 08:40:35
AngularJS,Ember.js,Backbone这类新框架与jQuery的区别如下:
1、本质区别
AngularJS,Ember.js,Backbone这三者是框架,而jQuery是一个库;使用库是指,使用者的代码决定什么时候从库中调用一个特定的方法;使用框架则是,使用者实现了一些回调方法,到了特定的时候框架会去调用这些方法
2、数据绑定的区别
在jQuery中,常常按照以下方式响应事件并修改视图:
$.ajax({
url: '/myEndpoint.json',
success: function ( data, status ) {
$('ul#log').append('<li>Data Received!</li>');
}
});
相对于这样一个视图
<ul class="messages" id="log">
</ul>
必须人工手动去引用并更新这个DOM节点,但是在AngularJS中,可以这样做
$http( '/myEndpoint.json' ).then( function ( response ) {
$scope.log.push( { msg: 'Data Received!' } );
});
视图应该像下面这样
<ul class="messages">
<li ng-repeat="entry in log">{{ entry.msg }}</li>
</ul>
不管是数据如何修改,视图层也会自动随之发生变化,非常简洁!
3、区别model层
在jQuery中,DOM类似于一种model,但是在AngularJS等框架中,拥有不同于jQuery中的model层以便可以以任何想要的方式去管理它,它是完全独立于视图之外的。这种方式是有助于进行数据绑定并且可以保持对分离的关注,而且可以具备更好的可测试性。
4、关注点分离
AngularJS,Ember.js,Backbone这三个框架都是MVC框架,都是基于模型-视图-控制器的;关注分离,视图层显示记录,model层代表数据,你服务层用来执行这些可复用的任务。使用directive来执行dom操作并扩展视图,并将它和controller连接起来,这也就是其他方面提到的有关于增强可测试性的原因
而jQuery却无法实现
5、依赖注入
AngularJS,Ember.js,Backbone这三个框架分析代码,找到这些参数,然后将代码中所需要的服务推送给使用者。
jQuery无法实现。
jQuery主要是用来操作DOM的,如果单单说jQuery的话就是这样一个功能,它的插件也比较多,大家也都各自专注一个功能,可以说jQuery体系是跟着前端页面从静态到动态崛起的一个产物,他的作用就是消除各浏览器的差异,简化和丰富DOM的API,简单易用。
而AngularJS、Ember.js、Backbone则是比较新的产物,他们的产生不是为了再页面上实现各种特效,而是为了构建更重量级的webapp,这种app通常只有一个页面,通常拥有丰富的数据和交互,业务逻辑耦合深,跟传统的web页面还是有比较大的差异的。他们通常把数据和逻辑还有展现之类的东西做了分离,可以更方便做出复杂的单页面应用。
2024-08-02 07:36:56