Vue知識點匯總

Q:什么是mvvm

mvvm是一種設(shè)計思想
m->model 數(shù)據(jù)層
v->view 視圖層
vm->viewmodel 控制層,自動更新,渲染視圖,雙向綁定
優(yōu)點:實現(xiàn)了修改數(shù)據(jù)和模板自動渲染,解放了開發(fā)者,只需要關(guān)注View和Model,不用手動的操作DOM,效率和性能提高,低耦合度,獨立開發(fā),可復(fù)用性高

Q:mvvm和mvc的區(qū)別

mvvm是MVC 演化而來的
其中 用 vm 替換了 c
c也是控制層,是單向循環(huán)的,v-c-m-v 手動渲染,視圖渲染在 model層
mvvm控制層是vm,實現(xiàn)數(shù)據(jù)雙向綁定,同步渲染視圖

Q:vue的優(yōu)點是什么(mvvm的優(yōu)點)
  • 低耦合
    視圖(view)可以獨立于model變化和修改,一個viewmodel 可以綁定到不同的view上,當view變化的時候model可以不變,當model變化的時候,view也可以不變
  • 可重用性
    你可以幫一些視圖邏輯放在viewModel里面,讓很多view共用
  • 獨立開發(fā)
    專注于view 和model 層
Q:Vue生命周期
  • beforeCreate / created
  • beforeMount / mounted
  • beforeUpdate / updated
  • beforeDestroy /destoryed
  • activated
  • deactivated
  • errorcaptrued
Q:組件之間的通信
  • 父組件-> 子組件 props
  • 子組件-> 父組件 emit(event), 父組件on(event)
Q:路由之間的跳轉(zhuǎn)
  • 聲明式
    標簽跳轉(zhuǎn)
    <router-link to=''>
  • 編程式
    js跳轉(zhuǎn)
    this.$router.push/replace

懶加載(按需加載路由)

const app = ()=>import('./app.vue')
之前的版本使用的webpack 中提供的require.ensure()來實現(xiàn)
const home = resolve=>require(['./home'], resolve)

Q:vuex是什么?哪些場景使用它

vuex是vue的狀態(tài)管理器,作為vue的一個插件
當有數(shù)據(jù)需要大量交互,或者大多組件需要共享時

Q:vue-router的導航鉤子
  • 全局的
    router.beforeEach
    router.beforeResolve
    router.afterEach
    -組件中
    beforeRouteLeave
    beforeRouteUpdate
    beforeRouterEnter
    -路由中
    -beforeEnter

Q:vue的雙向綁定原理

采用數(shù)據(jù)劫持結(jié)合發(fā)布者-訂閱者模式,通過Object.defineProperty()來劫持給個屬性的setter和getter,在數(shù)據(jù)變化時,向訂閱者發(fā)布消息,觸發(fā)相應(yīng)的回調(diào)函數(shù)更新

Q:Vuex如何區(qū)分state是外部直接修改,還是通過mutation方法修改的

Vuex 中修改state的唯一方式是 操作 muations,其底層通過執(zhí)行 this._withCommit(fn)設(shè)置—_committing標志變量為true,才能修改state
所有只要查看 _committing的標志變量,就可以知道 state是否是合法的方式改變的

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容