成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

vuejs和angularjs的區(qū)別是什么

這篇文章主要介紹“vuejs和angularjs的區(qū)別是什么”,在日常操作中,相信很多人在vuejs和angularjs的區(qū)別是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”vuejs和angularjs的區(qū)別是什么”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

站在用戶的角度思考問題,與客戶深入溝通,找到黃岡網(wǎng)站設(shè)計與黃岡網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站制作、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請域名、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋黃岡地區(qū)。

區(qū)別:1、angularjs上手難,而vuejs簡單易學(xué);2、angular的指令是“ng-xxx”,而vue是“v-xxx”;3、angular的所有指令和方法都是綁定在$scope上的,而vue的所有方法和指令都綁定在vue實例上。

vuejs和angularjs的區(qū)別是什么

本教程操作環(huán)境:windows7系統(tǒng)、vue2.9.6版,DELL G3電腦。

使用Angularjs和Vue.js對比

之前項目都是使用Angularjs,(注明此處主要講Angularjs 1)在初步使用Vue.js后做一個簡單的對比筆記。
首先從理論上簡單說一下各自的特點,之后再用幾個小的例子加以說明。

Angular

  • 1,MVVM(Model)(View)(View-model)

  • 2,模塊化(Module)控制器(Contoller)依賴注入:

  • 3,雙向數(shù)據(jù)綁定:界面的操作能實時反映到數(shù)據(jù),數(shù)據(jù)的變更能實時展現(xiàn)到界面。

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

  • 5,服務(wù)Service($compile $filter $interval $timeout $http...)

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

  • 7,Ajax封裝($http)

其中雙向數(shù)據(jù)綁定的實現(xiàn)使用了$scope變量的臟值檢測,使用$scope.$watch(視圖到模型),$scope.$apply(模型到視圖)檢測,內(nèi)部調(diào)用的都是digest,當(dāng)然也可以直接調(diào)用$scope.$digest進(jìn)行臟檢查。值得注意的是當(dāng)數(shù)據(jù)變化十分頻繁時,臟檢測對瀏覽器性能的消耗將會很大,官方注明的最大檢測臟值為2000個數(shù)據(jù)。

Vue

vue.js官網(wǎng):是一套構(gòu)建用戶界面的 漸進(jìn)式框架。與其他重量級框架不同的是,Vue 采用自底向上增量開發(fā)的設(shè)計。Vue 的核心庫只關(guān)注視圖層,并且非常容易學(xué)習(xí),非常容易與其它庫或已有項目整合。另一方面,Vue 完全有能力驅(qū)動采用單文件組件Vue 生態(tài)系統(tǒng)支持的庫開發(fā)的復(fù)雜單頁應(yīng)用。

Vue.js 的目標(biāo)是通過盡可能簡單的 API 實現(xiàn)響應(yīng)的數(shù)據(jù)綁定組合的視圖組件。

  • (1)模塊化,目前最熱的方式是在項目中直接使用ES6的模塊化,結(jié)合Webpack進(jìn)行項目打包

  • (2)組件化,創(chuàng)造單個component后綴為.vue的文件,包含template(html代碼),script(es6代碼),style(css樣式)

  • (3)雙向數(shù)據(jù)綁定:界面的操作能實時反映到數(shù)據(jù),數(shù)據(jù)的變更能實時展現(xiàn)到界面。

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

  • (5)路由(vue-router)

  • (6)vuex 數(shù)據(jù)共享

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

vue非常小巧,壓縮后min源碼為72.9kb,gzip壓縮后只有25.11kb,想比Angular為144kb,可以自駕搭配使用需要的庫插件,類似路由插件(Vue-router),Ajax插件(vue-resource,axios)等

Vue與 Angular 雙向數(shù)據(jù)綁定原理###

angular.js :臟值檢查

angular.js 是通過臟值檢測的方式比對數(shù)據(jù)是否有變更,來決定是否更新視圖,最簡單的方式就是通過 setInterval() 定時輪詢檢測數(shù)據(jù)變動,當(dāng)然Google不會這么low,angular只有在指定的事件觸發(fā)時進(jìn)入臟值檢測,大致如下:

  • DOM事件,譬如用戶輸入文本,點擊按鈕等。( ng-click )

  • XHR響應(yīng)事件 ( $http )

  • 瀏覽器Location變更事件 ( $location )

  • Timer事件( $timeout , $interval )

  • 執(zhí)行 $digest() 或 $apply()

vue數(shù)據(jù)劫持

vue.js 則是采用數(shù)據(jù)劫持結(jié)合發(fā)布者-訂閱者模式的方式,通過Object.defineProperty()來劫持各個屬性的setter,getter,在數(shù)據(jù)變動時發(fā)布消息給訂閱者,觸發(fā)相應(yīng)的監(jiān)聽回調(diào)。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/definePropertydefineProperty

下面直接上代碼

首先當(dāng)然是Hello World了

vue

<div id="app">
  {{ message }}
</div>

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

Angular

<div ng-app="myApp" ng-controller="myCtrl">
 {{message}}
</div>

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

相比較來看,vue采用了json的數(shù)據(jù)格式進(jìn)行dom和data的編寫,編寫風(fēng)格更加靠進(jìn)js的數(shù)據(jù)編碼格式,通俗易懂。

vue的雙向數(shù)據(jù)綁定

<div id="app">
  <p>{{ message }}</p>
  <input v-model="message">
</div>

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

Angular的雙向數(shù)據(jù)綁定

<div ng-app="myApp" ng-controller="myCtrl">
  <p>{{message}}</p>
  <input ng-model="message">
</div>

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

vue雖然是一個輕量級的框架,提供的API確非常多,包括一些便捷的指令和屬性操作,一般vue是指令使用(v-)操作符,相比angularjs指令使用(ng-)。其中vue.js還支持指令的簡寫方式:

  • (1)事件click

    <a v-on: click="fn"></a>

    簡寫方式:
    <a @click="fn"></a>

  • (2)屬性

    <a v-bind: href="url"></a>

    簡寫方式:
    <a :href="url"></a>

vue.渲染列表

<div id="app">
  <ul>
    <li v-for="name in names">
      {{ name.first }}
    </li>
  </ul>
</div>

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

Angularjs渲染列表

<div ng-app="myApp" ng-controller="myCtrl">
  <li ng-repeat="name in names">{{name.first}}</li>
</div>

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的循環(huán)

<ul>
    <li v-for="item in list">
        <a :href="item.url">{{item.title}}</a>
    </li>
</ul>

angular和vue的渲染差不多

<div class="item" ng-repeat="news in  newsList">
    <a ng-href="#/content/{{news.id}}">
        <img ng-src="{{news.img}}" />
        <div class="item-info">
            <h4 class="item-title">{{news.title}}</h4>
            <p class="item-time">{{news.createTime}}</p>
        </div>
    </a>
</div>

vue和Angular處理用戶輸入

<div id="app">
  <p>{{ message }}</p>
  <button v-on:click="reverseMessage">Reverse Message</button>
</div>

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

<div ng-app="myApp" ng-controller="myCtrl">
 <p>{{ message }}</p>
 <button ng-click="reverseMessage()">Reverse Message</button>
</div>

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

總結(jié):angularjs和vuejs的區(qū)別

1、angularJS上手難,而vueJS簡單易學(xué);

2、angularJS的指令都是ng-xxx,而vueJS的指令都是v-xxx;

3、angularJS的所有指令和方法都是綁定在$scope上的,而vueJS是new出來一個實例,所有的方法和指令都在這個實例上,一個頁面上可以有多個vue實例,但是angularJS的對象只能有一個;

4、angularJS是由google開發(fā)和維護(hù)的,vueJS是由個人維護(hù)的;

5、vueJS一般用于移動端的開發(fā),而angularJS一般應(yīng)用于大型的項目。

到此,關(guān)于“vuejs和angularjs的區(qū)別是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

分享文章:vuejs和angularjs的區(qū)別是什么
當(dāng)前地址:http://jinyejixie.com/article0/ggsooo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站App開發(fā)、小程序開發(fā)網(wǎng)站設(shè)計公司、定制開發(fā)、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
大竹县| 三穗县| 白银市| 志丹县| 迭部县| 长治市| 江孜县| 蒙自县| 宁阳县| 彩票| 镇安县| 无极县| 普安县| 南阳市| 景谷| 菏泽市| 海城市| 保康县| 出国| 宜丰县| 龙门县| 牙克石市| 福贡县| 汉沽区| 嘉荫县| 绵竹市| 洛浦县| 乌兰县| 陇西县| 沙湾县| 甘洛县| 垫江县| 顺昌县| 德惠市| 乡宁县| 深泽县| 本溪| 达州市| 东莞市| 含山县| 滨州市|