使用Angularjs和Vue.js对比

本篇文章介绍的内容是关于使用Angularjs和Vue.js对比 ,现在分享给大家,有需要的朋友可以参考一下

使用Angularjs和Vue.js对比

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

Angular

1,mvvm(model)(view)(view-model)

2,模块化(Module)控制器(Contoller)依赖注入:

3,双向数据绑定:界面的操作能实时反映到数据,数据的变更能实时展现到界面。

4,指令(ng-click ng-bind ng-model ng-href ng-src ng-if/ng-show…)

5,服务Service($compile $filter $interval $timeout $http…)

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

6,路由(ng-Route原生路由),ui-router(路由组件)

7,Ajax封装($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)双向数据绑定:界面的操作能实时反映到数据,数据的变更能实时展现到界面。

(4)指令(v-html v-bind v-model v-if/v-show…)

(5)路由(vue-router)

(6)vuex 数据共享

(7)Ajax插件(vue-resource,axios)

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

Vue与 Angular 双向数据绑定原理

angular.js :脏值检查

angular.js 是通过脏值检测的方式比对数据是否有变更,来决定是否更新视图,最简单的方式就是通过 setInterval() 定时轮询检测数据变动,当然Google不会这么low,angular只有在指定的事件触发时进入脏值检测,大致如下:

DOM事件,譬如用户输入文本,点击按钮等。( ng-click )

XHR响应事件 ( $http )

浏览器Location变更事件 ( $location )

Timer事件( $timeout , $interval )

执行 $digest() 或 $apply()

vue :数据劫持

vue.js 则是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/definePropertydefineProperty

下面直接上代码

首先当然是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)属性

简写方式:

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的渲染差不多

            使用Angularjs和Vue.js对比         

            

{{news.title}}

            

{{news.createTime}}

        

    

登录后复制

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('')    }});

登录后复制

相关推荐:

AngularJS应用模块化的使用详解

Angular开发实践之服务端渲染_AngularJS

Vue.js的基础知识点总结

以上就是使用Angularjs和Vue.js对比 的详细内容,更多请关注【创想鸟】其它相关文章!

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

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

(0)
上一篇 2025年3月8日 14:04:11
下一篇 2025年3月8日 14:04:20

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

相关推荐

  • RequireJS模块化开发

    本篇文章介绍的内容是RequireJS模块化开发,现在分享给大家,有需要的朋友可以参考一下 模块化开发有很多种方式,如amd,cmd, 使用require进行模块化,只要导入一个js就可, 使用require.js的第一步,是先去官方网站下…

    编程技术 2025年3月8日
    200
  • js 常用的工具方法

    本篇文章介绍的内容是关于js 常用的工具方法,现在分享给大家,有需要的朋友可以参考一下 1、cookie 操作 // setCookie()// @About 设置cookie 默认一个月失效function setCookie(name,…

    2025年3月8日 编程技术
    200
  • JS的数据类型

    本篇文章介绍的内容是js的数据类型,在这里分享给大家,有需要的朋友可以参考一下 基础数据类型 JavaScript数据类型有2大分类:一是“基本数据类型”,二是“特殊数据类型”。 其中,基本数据类型包括以下3种: (1)数字型(Number…

    编程技术 2025年3月8日
    200
  • 移动端适配之rem.js

    下面这篇文章在这里分享给大家的内容是关于移动端适配之rem.js,具有一定的额参考价值,有需要的朋友可以参考一下 移动端网页适配是一个麻烦事, 常见做法有媒体查询, js控制等. 媒体查询个人感觉比较冗余, 可少量使用, 偏爱于js来控制.…

    2025年3月8日
    200
  • JS的数据结构

    本文给大家分享的内容是关于js的数据结构,具有一定的参考价值,有需要的朋友可以参考一下 一、标识符 标识符,说白了,就是一个名字。在JavaScript中,变量和函数等都需要定义一个名字,这个名字就可以称为“标识符”。 JavaScript…

    编程技术 2025年3月8日
    200
  • JS中的判断类型

    本篇文章给大家分享的内容是关于JS中的判断类型,具有一定的参考价值,有需要的朋友可以参考一下 在js里判断类型一般有四种方法 一, typeof:这个方法大家都知道,有很多类型都判断不出来的,不推荐 二, constructor:每个函数都…

    编程技术 2025年3月8日
    200
  • 关于js的规范

    本篇文章给大家分享的内容是关于js的规范 问题,具有一定的参考价值有需要的朋友可以参考一下 目录 嵌入规则 对齐缩进与换行 命名 声明 类型 对象 数组 字符串 函数 属性 变量 条件表达式和等号 块 注释 空白 逗号 分号 类型转换 命名…

    编程技术 2025年3月8日
    200
  • JS的延时器

    本篇文章介绍的内容是js的延时器的代码,现在分享给大家,有需要的朋友可以参考一下 nbsp;html>        Title         #p1{ width: 50px; height: 50px; background: …

    编程技术 2025年3月8日
    200
  • 用JS做时钟

    本篇文章介绍的内容是关于用js做时钟的代码,现在分享给大家,有需要的朋友可以参考一下 nbsp;html>        Title         ul{ height: 100px; width: 600px; margin: 2…

    编程技术 2025年3月8日
    200
  • js-undefined类型判断

    本篇文章给大家分享的内容是关于js-undefined类型判断,有需要的朋友可以参考一下 js判断undefined类型   if (reValue== undefined){    alert(“undefined”);    } 登录后…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论