小編給大家分享一下Angularjs和Vue.js的區(qū)別是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

10多年的烏什網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都全網(wǎng)營銷的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整烏什建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“烏什網(wǎng)站設(shè)計”,“烏什網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
選擇 Vue 而不選擇 Angular,有下面幾個原因,當然不是對每個人都適合:
在 API 與設(shè)計兩方面上 Vue.js 都比 Angular 簡單得多,因此你可以快速地掌握它的全部特性并投入開發(fā)。
Vue.js 是一個更加靈活開放的解決方案。它允許你以希望的方式組織應(yīng)用程序,而不是任何時候都必須遵循 Angular 制定的規(guī)則。它僅僅是一個視圖層,所以你可以將它嵌入一個現(xiàn)有頁面而不一定要做成一個龐大的單頁應(yīng)用。在配合其他庫方面它給了你更大的的空間,但相應(yīng),你也需要做更多的架構(gòu)決策。例如,Vue.js 核心默認不包含路由和 Ajax 功能,并且通常假定你在應(yīng)用中使用了一個模塊構(gòu)建系統(tǒng)。這可能是最重要的區(qū)別。
Angular 使用雙向綁定,Vue 也支持雙向綁定,不過默認為單向綁定,數(shù)據(jù)從父組件單向傳給子組件。在大型應(yīng)用中使用單向綁定讓數(shù)據(jù)流易于理解。
在 Vue.js 中指令和組件分得更清晰。指令只封裝 DOM 操作,而組件代表一個自給自足的獨立單元 —— 有自己的視圖和數(shù)據(jù)邏輯。在 Angular 中兩者有不少相混的地方。
Vue.js 有更好的性能,并且非常非常容易優(yōu)化,因為它不使用臟檢查。Angular,當 watcher 越來越多時會變得越來越慢,因為作用域內(nèi)的每一次變化,所有 watcher 都要重新計算。并且,如果一些 watcher 觸發(fā)另一個更新,臟檢查循環(huán)(digest cycle)可能要運行多次。 Angular 用戶常常要使用深奧的技術(shù),以解決臟檢查循環(huán)的問題。有時沒有簡單的辦法來優(yōu)化有大量 watcher 的作用域。
Vue.js 則根本沒有這個問題,因為它使用基于依賴追蹤的觀察系統(tǒng)并且異步列隊更新,所有的數(shù)據(jù)變化都是獨立地觸發(fā),除非它們之間有明確的依賴關(guān)系。唯一需要做的優(yōu)化是在 v-for 上使用 track-by。
之前項目都是使用Angularjs,(注明此處主要講Angularjs 1)在初步使用Vue.js后做一個簡答的對比筆記。
首先從理論上簡單說一下各自的特點,之后再用幾個小的例子加以說明。
Angular
其中雙向數(shù)據(jù)綁定的實現(xiàn)使用了$scope變量的臟值檢測,使用$scope.$watch(視圖到模型),$scope.$apply(模型到視圖)檢測,內(nèi)部調(diào)用的都是digest,當然也可以直接調(diào)用$scope.$digest進行臟檢查。值得注意的是當數(shù)據(jù)變化十分頻繁時,臟檢測對瀏覽器性能的消耗將會很大,官方注明的最大檢測臟值為2000個數(shù)據(jù)。
Vue
vue.js官網(wǎng):是一套構(gòu)建用戶界面的 漸進式框架。與其他重量級框架不同的是,Vue 采用自底向上增量開發(fā)的設(shè)計。Vue 的核心庫只關(guān)注視圖層,并且非常容易學習,非常容易與其它庫或已有項目整合。另一方面,Vue 完全有能力驅(qū)動采用單文件組件和 Vue 生態(tài)系統(tǒng)支持的庫開發(fā)的復(fù)雜單頁應(yīng)用。
Vue.js 的目標是通過盡可能簡單的 API 實現(xiàn)響應(yīng)的數(shù)據(jù)綁定和組合的視圖組件。
vue非常小巧,壓縮后min源碼為72.9kb,gzip壓縮后只有25.11kb,想比Angular為144kb,可以自駕搭配使用需要的庫插件,類似路由插件(Vue-router),Ajax插件(vue-resource)等
下面直接上代碼
首先當然是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ù)格式進行dom和data的編寫,編寫風格更加靠進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還支持指令的簡寫方式:
簡寫方式:
[](http://www.cnblogs.com/summer7310/p/url))
簡寫方式:
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('') }});以上是Angularjs和Vue.js的區(qū)別是什么的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
分享文章:Angularjs和Vue.js的區(qū)別是什么
鏈接地址:http://www.chinadenli.net/article6/pecpig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、響應(yīng)式網(wǎng)站、品牌網(wǎng)站建設(shè)、網(wǎng)站排名、企業(yè)網(wǎng)站制作、網(wǎng)站建設(shè)
聲明:本網(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)