你们现在做前端的,还用jQ吗?还是用vue+js?

JavaScript013

你们现在做前端的,还用jQ吗?还是用vue+js?,第1张

avaScript最初是为Web应用程序而创建的。随着前端技术的发展,比起纯JavaScript 脚本,大多数开发人员更喜欢使用基于JavaScript的框架来开发Web应用,如Vue、React等。这些框架大大简化了你的代码,也使你能够完成更多的全栈工作。

使用什么类型的框架决定了应用程序的敏捷程度。因此,您必须慎重选择。在充满多样性的前端生态中,有两个框架十分引人瞩目——Ember.js和Vue.js。

本文,我们将就这两个框架进行对比,帮助你判断哪个框架才更适合你。

开发者为什么要为选择框架而犯愁?

在开始对比这两个框架之前,我们应该先了解:选择一个框架的决定因素都有哪些:

代码必须简单易懂

应以更少的代码量产出更多的功能

应提供一个布局合理的工作框架

是否支持内置路由或外部插件的路由

应该能够在页面加载时传输更多数据,从而使页面成为单页应用(PS:单页应用程序的使用体验更好)

在单页架构中,如果用户需要共享应用子页面链接,那么框架应该具备基于URL路由不同功能的能力

更严格的模板选项有助于实现双向绑定

不应与任何第三方库产生冲突

应该很容易测试框架内的代码

应为Ajax调用提供HTTP客户端服务

文档必不可少,并且应该是完整且最新的

应该与浏览器的最新版本兼容

只有保证所选择的框架符合上述基本条件,才能够最大程度的确保Web应用程序的构建顺利。

下面我们就来详细分析Ember.js和Vue.js框架之间的异同。

Ember.js

请点击输入图片描述

Ember.js是一个基于MVVM模型的开源框架,该框架主要用于创建复杂的多页面应用程序。它最大的特点是:持续推出最新的特性,并不会丢弃任何旧功能。

与大多数前端开发框架不同,使用Ember.js,您必须遵循一套严格的JS体系结构,也就是说,Ember.js并不具备高度的灵活性。不过,正是得益于这套JS体系结构,Ember.js明显更加完善、稳定,您可以使用其任意版本推出的工具与最新版本集成,却不必过分担忧兼容性问题。

因为Promise无处不在,所以你可以用简单的方式编写代码和模块,通过调用 Ember.js提供的API,以实现高度复杂的功能。

在性能处理方面,Ember.js创建了相似的绑定机制和DOM更新,允许让浏览器一次性处理它们,以提高工作性能(这样做的好处是:避免为重复工作增加算力,浪费大量时间)。

作为一个流行的前端开发框架,学习指南必不可少。Ember.js明确了一般应用程序的组织和结构,确保你不会犯任何错误。

Ember.js的模板基于Handlebar 语法,借助它可以使你轻松阅读和理解模板,同样也能使页面加载速度变得更快。除此之外,你不必每次在页面上添加或删除数据时都更新模板,因为这一切,语言本身已自动为你完成。

最后,Ember.js拥有一个活跃的社区,其定期更新框架并确保向后兼容性。

让我们花几分钟总结一下Ember.js的特点:

Ember.js是适用于复杂结构、多页应用程序的MVVM模型的开源框架

Ember.js持续提供最新功能,且不会丢弃任何旧功能

Ember.js遵循一套非常严格的结构框架,不能提供太高的灵活性

借助Ember.js完善的控制系统可帮助你与新版本完美集成

Ember.js对避免使用过时的API版本有着严格的指导

Ember的API可帮助您以简单的方式使用复杂的功能

Ember.js提供高效的运算机制,以保证运行效率

Promise确保你使用Ember.js的任何API,以达到编写模块化脚本和简洁代码的目的

Ember.js是一个完全加载的前端框架

Ember.js框架稳定,因为所有组件都具有相同的功能和属性

Ember.js具有明确定义的限制,可防止您使应用程序复杂化

Handlebar作为Ember.js的模板语言,可使你可以轻松阅读和理解模板,且有助于更快地加载模板

Ember.js有一个活跃的社区,可以定期更新框架并保证其向后兼容性

Vue.js

请点击输入图片描述

开发人员一直在试图寻找新的框架来构建他们的应用程序,而他们的核心诉求只有一个:速度快、成本低。

基于此,用Vue就够了。

这个框架很容易被开发人员理解并且能够以极低的成本使用。当然,选择它的理由还有很多:简单的编码方式、健全的帮助文档和活跃的生态系统。

在Web应用程序开发中,Vue.js在软件语言方面结合了很多优点。它的体系结构更易使用,并且,使用Vue.js 开发的应用程序很容易与现代化的应用程序集成。

Vue.js使用了服务器端渲染流的方法,这样做有两个好处:1. 使服务器具有较高的响应速度;2. 非常适合SEO(自然搜索)。通过服务器端渲染,视图直接在服务器上呈现,这十分便于搜索引擎直接抓取到这些网页内容。

Vue.JS是一个非常轻量级的框架。正因如此,它也比其他框架快得多。

如果你愿意,甚至还可以进一步减少它的体积——使用Vue.js可以将模板和编译器分离为虚拟DOM,只需部署12 KB的压缩文件,就可以在您的机器中编译模板。

Vue.js的另一个重要特点是:它可以轻松地与使用JavaScript脚本创建的Web应用程序集成,使用此框架可以轻松地对已有应用程序进行更改。

提到集成,就不得不说Vue.js与其他前端库的集成情况。Vue.js可以轻松的集成到其他前端库中,也就是说,您可以在Vue.js中插入另一个库,以弥补此框架的不足,而这项功能也使得Vue.js成为了一个更为通用的工具。

创建组件方法很简单:

ember generate component my-component-name。

一条命令即可,但是需要注意的是组件的名称必须要包含中划线“-”,比如blog-post、test-component、audio-player-controls这种格式的命名是合法,但是post、test这种方式的命名是不合法的!

其一是为了防止用户自定义的组件名与W3C规定的元素标签名重复;其二是为了确保Ember能自动检测到用户自定义的组件。

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页面还是有比较大的差异的。他们通常把数据和逻辑还有展现之类的东西做了分离,可以更方便做出复杂的单页面应用。