前言
大家好呀,清明節這兩天有沒有出門踏青掃墓呢!!!
言歸正傳,這是作者面試系列的第二篇文章!!!!!!!
react和vue是什麼?有啥區別嗎?
三大框架之二,大家應該都不會陌生,都有學習過或者開發中使用。
但是他們到底有啥區別呢?這個就是我們這篇文章所需探討並學習的。
開始!
MVC 和 MVVM
首先,來說明下這些字母代表的含義
- M:Model 模型
- V:View 檢視
- C:Controller 控制器
- VM:ViewModel 檢視模型
首先說下MVC,大家肯定也知道三大框架中的另外一個(anuglar)。
如果你寫過angular那就肯定能很清楚的瞭解這個含義,看如下程式碼:
<input ng-model="ball.basketball" />
.contronller('BallController', ($scope) => {
const ball = {
basketball: '我是蔡徐坤'
}
$scope.ball = ball
})
複製程式碼
input標籤很好理解,就是MVC中的V(view)檢視。
controller顧名思義,就是MVC中的C(controller)控制器。
ball的話就是MVC中的M(model)模型。
MVC的概念很簡單,你要展示一個籃球的頁面。
- 設定一個籃球的模型放在那等待使用。
- 寫一個你需要展示籃球的檢視。
- 使用控制器來讓模型和檢視互動。
看起來MVC的概念很舒服,框架的很規範,但是程式碼量多了之後,就會顯得整個專案很臃腫,一點都不靈活。
作者有幸維護過一個稱為“屎山”的angular1.x專案,因為經過上百次(大概有)的需求迭代後,每個controller的程式碼超過2000行,每次修bug和寫新需求,都需要維護很多方方面面的東西。
然後我們來了解下MVVM。
<input v-model="ball.basketball" />
let vm = new Vue({
data: {
ball: {
baskertball: '蔡徐坤就是我'
}
}
})
複製程式碼
- M:Model 模型
- V:View 檢視
- VM: ViewModel 檢視模型
其實看程式碼就理解了,vm其實就是vue物件。它的功能就是繫結到view上,Model裡的籃球不管更新,還是做其他操作,都會通過vm來通知派發至view。
這樣做的好處呢,第一點,一個業務邏輯你就不用寫很多遍。類似一個shopcart的功能,你把它的封裝成一個元件(ViewModel)在很多地方都可以直接引入呼叫。
跑題了
寫著寫著作者就覺得跑題了,其實vue和react都是借鑑了mvvm的概念思想,加上工程師自己的想法而出現的兩個優秀框架。
他們的區別:
- vue的標籤如v-model,比react的方便,其實也是一層封裝好的語法糖,綁一個input也就不用再寫change事件之類的。
- react的jsx功能很強大,擴充套件性極強。
- vue的dom操作很方便,各種方便的for指令 if指令等等。
- react的思想很棒,各種抽象和模式使得程式碼更加美觀等等。
react和vue有什麼區別嗎?你可以這樣說!
- 引出mvc和mvvm的概念。
- 講解react和vue的底層思想。
- 說出他們的優點和缺點。
- 實踐:你在xx專案中,因為xx問題所以選擇xx框架。
- 最後說出結論。
例如作者自己對這個問題的解答如下:
- mvc和mvvm具體是指xxxxxxx,他們的區別是xxxx,各方的優缺點xxxx。
- vue的底層是用xxxx實現的,另外碰到陣列的話因為有xx缺陷,vue的底層是重寫了關於陣列的八個函式等等。
- react的jsx功能強大,靈活性強,但是程式碼必須要規範,每個人都有自己的程式碼風格。 4.因為專案的迭代更新很快,便於多人開發,所以我選擇的是xx框架。
- 其實用任何框架都要根據真實環境下的各種因素結合,並不是哪個框架就是強無敵,拿起來直接黏貼複製一把梭的。
好了這篇需要講的東西已經結束了。
這是第二篇關於框架優勢的一篇文章。
面試系列第一篇: 面試官:你知道Callback Hell(回撥地獄)嗎?