Angular.js和Vue.js 深度对比

2018-08-09 admin

本文翻译自:https://dzone.com/articles/co…

转载请注明出自:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。


图片描述

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

那么对于这三种开源框架,开发者该如何选择呢?

下面我们会对 Vue 和 Angular 这两种框架进行介绍和深度对比。

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 层,你可以轻松地将其与第三方库进行整合并与现有项目一起使用。

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 元素,来保存可复用的代码。

AngularJS:动态框架

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

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

以下是 AngularJS 的部分最好的功能:

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

2. 依赖注入 AngularJS 带有内置的依赖注入子系统功能,这使得应用程序易于开发和测试。依赖注入允许开发者通过请求来获得依赖关系,而不是搜索依赖关系。这对开发人员非常有帮助。

3. 测试 在 AngularJS 中,可以单独对控制器和指令进行单元测试。AngularJS 允许开发人员进行端到端和单元测试运行器设置,这意味着也可以从用户角度进行测试。

4. 跨浏览器兼容 AngularJS 的一个有趣功能是,框架中编写的应用程序在多个浏览器都能运行良好。AngularJS 可以自动处理每个浏览器所需的代码。

5. 指令 AngularJS 的指令(用于渲染指令的DOM模板) 可用于创建自定义的 HTML 标记。这些是 DOM 元素上的标记,因为开发者可以扩展指令词汇表并制作自己的指令,或将它们转换为可重用组件。

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

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

Vue.js 与 AngularJS – 哪一个最好?

究竟哪个框架是最好的 - Angular 还是 Vue?下面我们通过以下几点来深入研究:

学习曲线 在学习曲线方面,Vue.js 的学习和理解相对简单,而 AngularJS 则需要时间去习惯。开发人员认为这两个框架对于项目来说都很棒,但开发者中的大多数人更喜欢使用 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 的单文件组件会非常完美。

何时选择 AngularJS?

如果你需要构建大型复杂的应用程序,那么应该选择 AngularJS,因为 AngularJS 为客户端应用程序开发提供了一个完整而全面的解决方案。

对于希望处理客户端和服务器端模式的开发人员来说,AngularJS 是一个不错的选择。开发人员喜欢 AngularJS 的主要原因是 AngularJS 能够使他们专注于任何类型的设计,无论是 jQuery 调用还是 DOM 配置干扰。

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

如果你想在新项目中选择现有组件,也可以选择 Angular,因为你只需复制和粘贴代码即可。

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

希望制作更轻更快的Web应用程序的开发人员可以利用 AngularJS 中的 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 受 AngularJS 启发,也借用了 AngularJS 的模板语法。因此循环,这两个框架的插值和条件的语法都非常相似。

下面给出代码片段:

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 更像是一个库而不是框架,因为它不提供 AngularJS 的所有功能。开发者将不得不依赖 Vue.js 的第三方代码,而 AngularJS 提供了 HTTP 请求服务或路由器等功能。

AngularJS 和 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 应用程序;而 AngularJS 尽管学习曲线较为陡峭,但却是构建完整复杂应用的好选择。

本文是由葡萄城技术开发团队发布,转载请注明出处:葡萄城官网

了解全面支持Angular、React 和 Vue 的纯前端控件集,请前往 WijmoJS,快速构建轻量、零依赖的高性能纯前端应用

了解可嵌入您系统的在线 Excel,请前往 SpreadJS纯前端表格控件

原文链接:https://segmentfault.com/a/1190000015942864

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处。

转载请注明:文章转载自 JavaScript中文网 [https://www.javascriptcn.com]

本文地址:https://www.javascriptcn.com/read-37634.html

文章标题:Angular.js和Vue.js 深度对比

相关文章
Node.js 2014这一年发生了什么
Node.js 的 2014 年充满了不幸和争议. 这一年 Noder 们经历了太多的伤心事, 经历了漫长的等待, 经历了沉重的分裂之痛. 也许 Noder 们不想回忆14年 Node.js land 发生的事情, 但正因为痛才更有铭记的价...
2015-11-12
JavaScript实现PC手机端和嵌入式滑动拼图验证码三种效果
PC和手机端网站滑动拼图验证码效果源码,同时包涵了弹出式Demo,使用ajax形式提交二次验证码所需的验证结果值,嵌入式Demo,使用表单形式提交二次验证所需的验证结果值,移动端手动实现弹出式Demo三种效果 首先要确认前端使用页面,比如...
2017-03-17
Angular2-primeNG文件上传模块FileUpload使用详解
近期在学习使用Angular2做小项目,期间用到很多primeNG的模块。 本系列将结合实战总结angular2-primeNG各个模块的使用经验。 文件上传模块FileUploadModule 首先要在使用该组件的模块内导入文件上传模块 ...
2017-03-09
React.js编程思想
JavaScript框架层出不穷,在很多程序员看来,React.js是创建大型、快速的Web应用的最好方式。这一款由Facebook出品的JS框架,无论是在Facebook还是在Instagram中,它的表现都非常出色。 使用React.j...
2015-11-12
Vue获取DOM元素样式和样式更改示例
在 vue 中用 document 获取 dom 节点进行节点样式更改的时候有可能会出现 ‘style’ is not definde的错误,这时候可以在 mounted 里用 $refs 来获取样式,并进行更改: &lt;template...
2017-03-13
从2014年的发展来展望JS的未来将会如何
&lt;font face=&quot;寰�杞�闆呴粦, Arial, sans-serif &quot;&gt;2014骞达紝杞�浠惰�屼笟鍙戝睍杩呴€燂紝鍚勭�嶈��瑷€灞傚嚭涓嶇┓锛屼互婊¤冻鐢ㄦ埛涓嶆柇鍙樺寲鐨勯渶姹傘€傝繖浜涜��...
2015-11-12
Vue.js组件tab实现选项卡切换
本文实例为大家分享了vue插件tab选项卡的具体代码,供大家参考,具体内容如下 效果图: 代码如下: &lt;!DOCTYPE html&gt; &lt;html lang=&quot;en&quot;&gt; &lt;head&gt; ...
2017-03-13
JavaScript教程:JS中的原型
Keith Peters 几年前发表的一篇博文,关于学习没有“new”的世界,其中解释了使用原型继承代替构造函数。两者都是纯粹的原型编码。 标准方法(The Standard Way) 一直以来,我们学习的在 JavaScript 里创建对...
2015-11-12
three.js实现围绕某物体旋转
话不多说,请看代码: 可以拖动右上角观察变化 &lt;!DOCTYPE html&gt; &lt;html lang=&quot;en&quot; style=&quot;width: 100%; height:100%;&quot;&gt...
2017-02-17
NodeJS参考手册pdf版
下载地址:Nodejs参考手册PDF版下载 ...
2015-11-12
回到顶部