NO.05--谈一谈Angular 和 Vue.js 的对比。

几天的vue以后,给须要的盆友们带来一篇对比,也算是我近期以内业余时间的大工程,如今开始:前端

Vue.js 是开源的 JavaScript 框架,可以帮助开发者构建出美观的 Web 界面。当和其它网络工具配合使用时,Vue.js 的优秀功能会获得大大增强。现在,已有许多开发人员开始使用 Vue.js 来取代 Angular 和 React.js 。vue

那么对于 Angular 和 React.js ,开发者该如何选择呢?编程

下面我会对这两种框架进行简单的介绍和对比。后端

Vue.js 是前 Google 员工 Evan You 的开发的,并于2014年发布,现已得到了超过57,000个 GitHub star。许多开发人员都大力推荐 Vue,由于它很容易学习。若是你有深厚的 HTML、CSS 和 JavaScript 基础,那么学习 Vue.js 只需几个小时。设计模式

Vue 对开发人员最有吸引力的地方是:它的新颖、轻便,并且复杂性不多甚至没有。Vue 不但很是灵活简单,并且还很是强大,同时还提供双向数据绑定功能,就像 Angular 和 React 的虚拟 DOM 功能同样。浏览器

Vue 能够帮助开发人员以任何想要的方式来构建应用程序,这是 Angular 作不到的。服务器

Vue.js – 多样化的 JavaScript 框架

做为一个跨平台的,高度进步的框架,Vue 成为了许多须要建立单页应用程序的开发人员的首选。在用于开发 Web 应用程序的典型 MVC 体系结构中,Vue 充当了 View,这意味着它可让开发者看到数据的显示部分。除了上面提到的基本功能以外,Vue 还有许多其它优秀功能。网络

咱们来看看这些:框架

1. 容易使用

若是你一直在使用其它框架,那么你能够轻松使用 Vue,由于 Vue 的核心库专一于 View 层,你能够轻松地将其与第三方库进行整合并与现有项目一块儿使用。dom

2. 轻便

因为 Vue 主要关注于 ViewModel 或双向数据绑定,所以 Vue 很轻便。Vue 也具备十分基础的文档。Vue 用作 View 层,意味着开发者能够将它用做页面中的亮点功能,比起全面的 SPA,Vue 提供了更好的选择。

3. 学习曲线很低

熟悉 HTML 的开发人员会发现 Vue 的学习曲线很低,同时对于经验较少的开发人员和初学者来讲,也可以快速地学习和理解 Vue。

4. 双向绑定

Vue 提供了 v-model 指令(用于更新用户输入事件的数据),使得在表单输入和结构元素上实现双向绑定变得很容易。它能够选择正确的方式来更新输入类型相关的元素。

5. 虚拟 DOM

因为 Vue 是基于 Snabbdom 的轻量级虚拟 DOM 实现,所以 Vue 的性能有些许的提高。这是虚拟 DOM 的主要新功能之一,开发者能够直接进行更新。当你须要在实际的 DOM 中进行更改时,只需执行一次这样的更新功能。

6. 基于 HTML 模板的语法

Vue 容许开发者直接将渲染的 DOM 绑定到底层的Vue实例数据上。这是一个颇有用的功能,由于它可让开发者扩展基本的 HTML 元素,来保存可复用的代码。

 

Angular:动态框架

Angular 是一个功能齐全的框架,支持 Model-View-Controller 编程结构,很是适合构建动态的单页网络应用程序。

谷歌在2009年开发出了 Angular 并对其提供支持,Angular 包含一个基于标准 JavaScript 和 HTML 的 JS 代码库。Angular 设计的最初目的是做为一个使设计者可以与后端和前端进行交互的工具。

如下是 Angular 的部分最好的功能:

1. Model-View-ViewModel(MVVM)

为了构建客户端Web应用程序,Angular 将原始 MVC 软件设计模式背后的基本原理结合在一块儿。然而,Angular 没有实现传统意义上的 MVC,而是实现了 MVVM 即 Model-View-ViewModel 模式。

2. 依赖注入

Angular 带有内置的依赖注入子系统功能,这使得应用程序易于开发和测试。依赖注入容许开发者经过请求来得到依赖关系,而不是搜索依赖关系。这对开发人员很是有帮助。

3. 测试

在 Angular 中,能够单独对控制器和指令进行单元测试。Angular 容许开发人员进行端到端和单元测试运行器设置,这意味着也能够从用户角度进行测试。

4. 跨浏览器兼容

Angular 的一个有趣功能是,框架中编写的应用程序在多个浏览器都能运行良好。Angular 能够自动处理每一个浏览器所需的代码。

5. 指令

Angular 的指令(用于渲染指令的DOM模板) 可用于建立自定义的 HTML 标记。这些是 DOM 元素上的标记,由于开发者能够扩展指令词汇表并制做本身的指令,或将它们转换为可重用组件。

6. Deep Linking

因为 Angular 主要用于制做单页应用程序,所以必须利用 Deep Linking 功能才能在同一页面上加载子模板。Deep Linking 的目的是为了查看位置 URL 并安排它映射到页面的当前状态。

Deep Linking 功能经过查看页面状态并将用户带到特定内容,而不是从主页中遍历应用程序来设置 URL。Deep Linking 容许全部主要搜索引擎,能够轻松的搜索网络应用程序。

Vue.js 与 Angular–哪个最好?

究竟哪一个框架是最好的 – Angular 仍是 Vue?下面咱们经过如下几点来深刻研究:

学习曲线

在学习曲线方面,Vue.js 的学习和理解相对简单,而 Angular 则须要时间去习惯。开发人员认为这两个框架对于项目来讲都很棒,但开发者中的大多数人更喜欢使用 Vue,由于当将 Vuex 添加到项目中时,Vue 更加简单而且能够很好地扩展 。

尽管 Vue 和 Angular 的一些语法相似,好比 API 和设计(这是由于 Vue 其实是从 Angular 的早期开发阶段中得到启发的),但 Vue 一直致力于在一些对于 Angular 来讲很困难的方面提高本身 。开发者能够在几个小时内用 Vue.js 构建一个特别的应用程序,可是这对 Angular 来讲是不可能的。

灵活性

Angular 是独立的,这意味着你的应用程序应该有必定的构造方式。Vue 则更加宽泛,Vue 为建立应用程序提供了模块化,灵活的解决方案。

不少时候,Vue 被认为是一个库而不是框架。默认状况下,Vue 不包含路由器,HTTP 请求服务等。开发者必须安装所需的“插件”。Vue 很是灵活而且能够与大多数开发者想要使用的库兼容。

不过,也有开发人员更喜欢 Angular,由于 Angular 为其应用程序的总体结构提供了支持。这有助于节省编码时间。

文档对象模型(DOM)

Vue 经过最少许的组件从新渲染,能够将模板预编译为纯 JavaScript。这个虚拟 DOM 容许进行大量的优化,这是 Vue 和 Angular 之间的主要区别。Vue 容许使用更简单的编程模型,而 Angular 则以跨浏览器兼容的方式操做 DOM。

速度/性能

虽然 Angular 和 Vue 都提供了很高的性能,但因为 Vue 的虚拟 DOM 实现的重量较轻,因此能够说 Vue 的速度/性能略微领先。

更简单的编程模型使 Vue 可以提供更好的性能。Vue 能够在没有构建系统的状况下使用,由于开发者能够将其包含在 HTML 文件中。这使得 Vue 易于使用,从而提升了性能。

Angular 可能会很慢的缘由是它使用脏数据检查,这意味着 Angularmonitors 会持续查看变量是否有变化。

双向数据绑定

这两个框架均支持双向数据绑定,但与 Vue.js 相比,Angular 的双向绑定更加复杂。Vue 中的双向数据绑定很是简单,而在 Angular 中,数据绑定更加简单。

什么时候选择 Vue.js?

若是你但愿经过以最简单的方式来制做 Web 应用程序,那么你应该选择 Vue。若是你的 Javascript 基础不是太强大,或者有严格的开发截止日期,Vue 将是一个很好的选择。

若是你的前端是 Laravel,那么请选择 Vue。Laravel 社区的开发者认为 Vue 是他们最喜欢的框架。Vue 将总处理时间缩短了50%,并释放了服务器上的空间。

若是是开发小规模应用或者开发时不喜欢受约束,请选择Vue。

若是你很熟悉 ES5 Javascript 和 HTML,那么请使用 Vue 完成你的项目。

若是你想要在浏览器中编译模板而且使用其简单性,使用独立版本的Vue会很好。

若是你打算构建性能关键型SPA或须要功能范围的 CSS,Vue 的单文件组件会很是完美。

什么时候选择 Angular?

若是你须要构建大型复杂的应用程序,那么应该选择 Angular,由于 Angular 为客户端应用程序开发提供了一个完整而全面的解决方案。

对于但愿处理客户端和服务器端模式的开发人员来讲,Angular 是一个不错的选择。开发人员喜欢 Angular 的主要缘由是 Angular 可以使他们专一于任何类型的设计,不管是 jQuery 调用仍是 DOM 配置干扰。

对于开发人员建立具备多个组件和复杂需求的 Web 应用程序,Angular 也一样适用。当你选择Angular 时,本地开发人员会发现更容易理解应用程序功能和编码结构。

若是你想在新项目中选择现有组件,也能够选择 Angular,由于你只需复制和粘贴代码便可。

Angular 可使用双向数据绑定功能来管理 DOM 和模型之间的同步。这使 Angular 成为了 Web 应用程序开发的强有力的工具。

但愿制做更轻更快的Web应用程序的开发人员能够利用 Angular 中的 MVC 结构和独立的逻辑和数据组件,这有助于加速开发过程。

代码比较

分析 Vue 和 Angular 的代码颇有趣。包含标记,样式和行为的代码能够帮助开发者构建高效且可重用的接口。在 Angular 中,控制器和指令等实体包含在模块中,而 Vue 的模块中包含组件逻辑。

Vue 组件

Vue.extend({

    data: function(){ return {...} },

    created: function() {...},

    ready: function() {...},

    components: {...},

    methods: {...},

    watch: {...}

    //(other props excluded)

});

 

Angular 模块

 

angular.module(‘myModule’, […]);

 

Angular 中的 Directive 更增强大。

 

Vue 指令

 

Vue.directive('my-directive', {

       bind: function () {...},

      update: function (newValue, oldValue) {...},

      unbind: function () {...}

  });

 

Angular 指令

 

myModule.directive('directiveName', function (injectables) {

      return {

            restrict: 'A',

            template: '<div></div>',

            controller: function() { ... },

             compile: function() {...},

             link: function() { ... }

            //(other props excluded) };

            });

 

因为 Vue.js 受 Angular 启发,也借用了 Angular 的模板语法。所以循环,这两个框架的插值和条件的语法都很是类似。

 

下面给出代码片断:

 

Vue 插值

 

{{myVariable}}

 

角插值

 

{{myVariable}}

 

Vue 循环

 

<li v-repeat="items" class="item-{{$index}}">

{{myProperty}}

</li>

 

Angular 循环

 

<li ng-repeat="item in items" class="item-{{$index}}">

{{item.myProperty}}

</li>

 

Vue 条件

 

<div v-if="myVar"></div>

<div v-show="myVar"></div>

 

角度条件

 

<div ng-if="myVar"></div>

<div ng-show="myVar"></div>

 

Vue.js 的编码使得页面渲染变得很是简单。事实上,Vue.js 更像是一个库而不是框架,由于它不提供 Angular 的全部功能。开发者将不得不依赖 Vue.js 的第三方代码,而 Angular 提供了 HTTP 请求服务或路由器等功能。

 

Angular 和 Vue.js 的版本发布

 

2017年6月8日发布了 Vue.js v2.3.4的最新稳定版本 。在此版本以前,还有13个版本。

 

Angular 4 于2017年3月发布。早期版本为 Angular 1和2,没有 Angular 3。Angular 的第5版于2017年11月发布。第6版预计将于2018年3月发布,第7版预计将于2018年9月/ 10月发布。

 

结论

 

Vue.js 是轻量级的开发框架,很适合开发小规模灵活的 Web 应用程序;而 Angular 尽管学习曲线较为陡峭,但倒是构建完整复杂应用的好选择。

相关文章
相关标签/搜索