Angularjs和Vue.js有什么差异?简单对比

Angularjs和Vue.js有什么差异?简单对比

相关教程推荐:《angularjs教程》

选择 Vue 而不选择 Angular,有下面几个原因,当然不是对每个人都适合:  

在 API 与设计两方面上 Vue.js 都比 Angular 简单得多,因此你可以快速地掌握它的全部特性并投入开发。  

Vue.js 是一个更加灵活开放的解决方案。它允许你以希望的方式组织应用程序,而不是任何时候都必须遵循 Angular 制定的规则。它仅仅是一个视图层,所以你可以将它嵌入一个现有页面而不一定要做成一个庞大的单页应用。在配合其他库方面它给了你更大的的空间,但相应,你也需要做更多的架构决策。例如,Vue.js 核心默认不包含路由和 Ajax 功能,并且通常假定你在应用中使用了一个模块构建系统。这可能是最重要的区别。  

立即学习“前端免费学习笔记(深入)”;

Angular 使用双向绑定,Vue 也支持双向绑定,不过默认为单向绑定,数据从父组件单向传给子组件。在大型应用中使用单向绑定让数据流易于理解。  

在 Vue.js 中指令和组件分得更清晰。指令只封装 DOM 操作,而组件代表一个自给自足的独立单元 —— 有自己的视图和数据逻辑。在 Angular 中两者有不少相混的地方。

Vue.js 有更好的性能,并且非常非常容易优化,因为它不使用脏检查。Angular,当 watcher 越来越多时会变得越来越慢,因为作用域内的每一次变化,所有 watcher 都要重新计算。并且,如果一些 watcher 触发另一个更新,脏检查循环(digest cycle)可能要运行多次。 Angular 用户常常要使用深奥的技术,以解决脏检查循环的问题。有时没有简单的办法来优化有大量 watcher 的作用域。

Vue.js 则根本没有这个问题,因为它使用基于依赖追踪的观察系统并且异步列队更新,所有的数据变化都是独立地触发,除非它们之间有明确的依赖关系。唯一需要做的优化是在 v-for 上使用 track-by。

使用Angularjs和Vue.js对比

之前项目都是使用Angularjs,(注明此处主要讲Angularjs 1)在初步使用Vue.js后做一个简答的对比笔记。  
首先从理论上简单说一下各自的特点,之后再用几个小的例子加以说明。

Angular

1,MVVM(Model)(View)(View-model)2,模块化(Module)控制器(Contoller)依赖注入:3,双向数据绑定:界面的操作能实时反映到数据,数据的变更能实时展现到界面。4,指令(ng-click ng-model ng-href ng-src ng-if…)5,服务Service($compile $filter $interval $timeout $http…)

其中双向数据绑定的实现使用了$scope变量的脏值检测,使用$scope.$watch(视图到模型),$scope.$apply(模型到视图)检测,内部调用的都是digest,当然也可以直接调用$scope.$digest进行脏检查。值得注意的是当数据变化十分频繁时,脏检测对浏览器性能的消耗将会很大,官方注明的最大检测脏值为2000个数据。

Vue

vue.js官网:是一套构建用户界面的 渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和 Vue 生态系统支持的库开发的复杂单页应用。

Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

(1)模块化,目前最热的方式是在项目中直接使用ES6的模块化,结合Webpack进行项目打包(2)组件化,创造单个component后缀为.vue的文件,包含template(html代码),script(es6代码),style(css样式)(3)路由,

vue非常小巧,压缩后min源码为72.9kb,gzip压缩后只有25.11kb,想比Angular为144kb,可以自驾搭配使用需要的库插件,类似路由插件(Vue-router),Ajax插件(vue-resource)等

下面直接上代码

首先当然是Hello World了

vue

  {{ message }}
 new Vue({  el: '#app',  data: {    message: 'Hello Vue.js!'  }})

登录后复制

Angular

 {{message}}
 var app = angular.module('myApp', []);app.controller('myCtrl', function($scope) {    $scope.message = "Hello world";});

登录后复制

相比较来看,vue采用了json的数据格式进行dom和data的编写,编写风格更加靠进js的数据编码格式,通俗易懂。

vue的双向数据绑定

  

{{ message }}

  
 new Vue({  el: '#app',  data: {    message: 'Hello Vue.js!'  }})

登录后复制

Angular的双向数据绑定

  

{{message}}

  
 var app = angular.module('myApp', []);app.controller('myCtrl', function($scope) {    $scope.message = "Hello world!";});

登录后复制

vue虽然是一个轻量级的框架,提供的API确非常多,包括一些便捷的指令和属性操作,一般vue是指令使用(v-)操作符,相比angularjs指令使用(ng-)。其中vue.js还支持指令的简写方式:

(1)事件click

简写方式:

(2)属性

[](http://www.cnblogs.com/summer7310/p/url))
简写方式:

vue.渲染列表

  
        
  •       {{ name.first }}    
  •   
 new Vue({  el: '#app',  data: {    names: [      { first: 'summer', last: '7310' },      { first: 'David', last:'666' },      { first: 'Json', last:'888' }    ]  }})

登录后复制

Angularjs渲染列表

  
  • {{name.first}}
  •  var app = angular.module('myApp', []);app.controller('myCtrl', function($scope) {    $scope.names = [      { first: 'summer', last: '7310' },      { first: 'David', last:'666' },      { first: 'Json', last:'888' }    ]});

    登录后复制

    vue的循环

    
    

    登录后复制            {{item.title}}    

    angular和vue的渲染差不多

    登录后复制

    vue和Angular处理用户输入

      

    {{ message }}

      
     new Vue({  el: '#app',  data: {    message: 'Hello Vue.js!'  },  methods: {    reverseMessage: function () {      this.message = this.message.split('').reverse().join('')    }  }})

    登录后复制

     

    {{ message }}

     
     var app = angular.module('myApp', []);app.controller('myCtrl', function($scope) {    $scope.message = "Hello world!";    $scope.reverseMessage = function() {        this.message = this.message.split('').reverse().join('')    }});

    登录后复制

    相关教程推荐:《angular教程》、《vue教程》

    以上就是Angularjs和Vue.js有什么差异?简单对比的详细内容,更多请关注【创想鸟】其它相关文章!

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

    发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2725968.html

    (0)
    上一篇 2025年3月7日 23:28:03
    下一篇 2025年3月6日 19:30:17

    AD推荐 黄金广告位招租... 更多推荐

    相关推荐

    • 11 个对Web开发者非常有用的AngularJS工具

      AngularJS 工具对你开发 AngularJS App 项目非常有帮助,下面的这些工具尤其适合用于创建单页面 WEB 应用。今天分享 11 个对WEB开发者非常有帮助的 AngularJS 工具,如果你还有其他很棒的工具,请在评论中留…

      2025年3月7日
      200
    • 25道初级Vue.js面试问题

      1. 为什么Vue被称为“渐进框架”? 使用渐进式框架的代价很小,从而使现有项目(使用其他技术构建的项目)更容易采用并迁移到新框架。 Vue.js 是一个渐进式框架,因为你可以逐步将其引入现有应用,而不必从头开始重写整个程序。 Vue 的最…

      2025年3月7日
      200
    • Vue.js中使用插槽将数据从父组件传递到子组件

      这篇文章给大家介绍一下如何使用vue插槽在vue.js中将数据从父组件传递到子组件。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 这篇文章适合所有阶段的开发人员(包括初学者)。 在你开始之前 您的计算机上将需要以下内容:…

      2025年3月7日
      200
    • 你必须知道的10个Chrome开发工具和技巧

      1. 模拟慢速网络和慢速设备 我们可能习惯了在城市的网速,那是杠杠的,并不意味网速在中国哪个都一样的,在一些偏远地方,网速依然慢的可怜,所以有时候我们所做的产品是需要考虑网速慢的情况的,那怎么模拟呢? 打开谷个浏览器的performance…

      2025年3月7日 编程技术
      200
    • vue.js为什么要用谷歌浏览器

      vue.js要用谷歌浏览器的原因:1、相比各种浏览器,chrome的界面更加简洁;2、扩展性强,谷歌浏览器有很多的扩展插件;3、速度快;4、系统不会崩溃;5、隐身访问。 本教程操作环境:windows7系统、Vue2.9.6版,该方法适用于…

      2025年3月7日
      200
    • vue.js中有多少钩子函数

      vue.js中有八个钩子函数,分别是:1、beforeCreate用于创建前;2、created用于创建后;3、beforeMount用于挂载前;4、mounted用于挂载后;5、beforeDestroy用于销毁前。 本教程操作环境:wi…

      2025年3月7日
      200
    • 使用Node.js+Vue.js来构建文件压缩应用程序

      相关推荐:《node js教程》 Node.js为我们提供了一个模块来协助文件压缩。在本文中,我们将构建一个应用程序,用户可以在该应用程序中上传他们想要压缩的文件,然后使用Node.js Zlib模块下载该文件的压缩版本。 前提 要继续学习…

      2025年3月7日 编程技术
      200
    • vue.js怎么加载js插件

      vue.js加载js插件的方法:首先安装依赖包Bootstrap及jQuery;然后导入相关的js和css,并插入相关的DOM元素;最后保存代码并运行项目即可。 本教程操作环境:windows7系统、Vue2.9.6版,该方法适用于所有品牌…

      2025年3月7日 编程技术
      200
    • 了解Promise.race() 和 Promise.any()的使用方法

      相关推荐:《javascript视频教程》 自1996年发布以来,JS 一直在稳步改进。随着ECMAScript版本的许多改进,最近的版本是ES2020。JS 的一个重要更新是Promise,在2015年,它以 ES6 的名义发布。 什么是…

      2025年3月7日
      200
    • Angularjs自定义一个可输入的下拉框组件(代码示例)

      下面本篇文章给大家介绍一下angularjs自定义一个可输入的下拉框组件的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 相关推荐:《angularjs教程》 在 angularjs 中自定义一个可输入的下拉框组件,…

      2025年3月7日
      200

    发表回复

    登录后才能评论