vue筆記整理

一、對于MVVM的理解

MVVM是Model-View -ViewModel的縮寫

Model:數(shù)據(jù)模型,定義數(shù)據(jù)修改
View:代表ui組件,將數(shù)據(jù)模型轉(zhuǎn)化成ui展現(xiàn)出來
ViewModel:監(jiān)聽模型數(shù)據(jù)的改變和控制ui視圖,處理交互,也就是連接Model和View。
在MVVM架構(gòu)下,View和Model之間并沒有直接聯(lián)系,model和viewmodel之間的交互是雙向的,即:view的變化會同步到model中,而model數(shù)據(jù)的變化也會立即反映到view中

二、vue的生命周期
beforeCreate(創(chuàng)建前):在實例初始化還未創(chuàng)建之前: 這里可以訪問$router進行重 定向等操作
Created(創(chuàng)建后):實例創(chuàng)建完成,可以訪問data屬性,數(shù)據(jù)請求等操作,但實例還未掛載(el屬性沒有顯示出來)
beforeMount(載入前):實例掛載之前,DoM是虛擬的,可以執(zhí)行render函數(shù),生成html,但還沒有掛載到頁面上
mounted(載入后):操作DOM
beforeUpdate(更新前):在數(shù)據(jù)更新之前調(diào)用,虛擬DOM重新渲染和打補丁之前
updated(更新后):這時組件DOM已經(jīng)更新,所以可以執(zhí)行依賴DOM的操作
beforeDestroy(銷毀前) 在實例銷毀之前調(diào)用。實例仍然完全可用。
destroyed(銷毀后) 在實例銷毀之后調(diào)用。調(diào)用后,所有的事件監(jiān)聽器會被移除,所有的子實例也會被銷毀。該鉤子在服務(wù)器端渲染期間不被調(diào)用。

1.什么是vue生命周期?
Vue 實例從創(chuàng)建到銷毀的過程,就是生命周期。從開始創(chuàng)建、初始化數(shù)據(jù)、編譯模板、掛載Dom→渲染、更新→渲染、銷毀等一系列過程,稱之為 Vue 的生命周期。
2、vue生命周期的作用:
它的生命周期有8個階段(創(chuàng)建前/后、載入前/后、更新前/后、銷毀前/后),讓我們在vue實例的過程中有更好的邏輯

注:第一次頁面加載會觸發(fā)這4個(創(chuàng)建前/后、載入前/后)鉤子函數(shù),因為DOM渲染在mounted中就會完成

三、vue中實現(xiàn)數(shù)據(jù)的雙向綁定原理:Object.definePropert()
我有寫過關(guān)于數(shù)據(jù)劫持的簡書,想了解的小伙伴請點擊該鏈接 雙向綁定原理

四、父組件與子組件傳值
父組件傳給子組件:子組件通過props方法接受數(shù)據(jù)
父:<Child :father="data.value"/> 子: prop:['father'] 這時候,father就可以使用了;
子組件傳給父組件:
子:this.$emit('定義的名字', 傳的值 ) 父:<Child @自定義一個方法接收="emit里定義的名字"/>
2.非父子組件間的數(shù)據(jù)傳遞,兄弟組件傳值
vuex:在公司的項目是經(jīng)常用到的,存取數(shù)據(jù)很方便,想了解的看右邊,寫的很清楚的 vuex詳解

eventBus,就是創(chuàng)建一個事件中心,相當(dāng)于中轉(zhuǎn)站,可以用它來傳遞事件和接收事件。項目比較小時,用這個比較合適。

五、vuex是什么
狀態(tài)管理系統(tǒng); 改變狀態(tài)的方式是提交mutations,這是個同步的事物; 異步邏輯應(yīng)該封裝在action中。
在main.js引入store,注入。并拋出實例
場景有:單頁應(yīng)用中,組件之間的狀態(tài)、音樂播放、登錄狀態(tài)、加入購物車
state:存放的數(shù)據(jù)狀態(tài)
mutations:動態(tài)修改store中的數(shù)據(jù)
action:異步操作mutations中的數(shù)據(jù)

六、vue自定義指令:
1、創(chuàng)建局部指令:

 var app = new Vue({
    el: '#app',
    data: {    
    },
    // 創(chuàng)建指令(可以多個)
    directives: {
        // 指令名稱
       名稱: {
            inserted(el) {
                el.style.background = '#000';
            }
        }
    }
})
使用:某個組件中的某個想使用該指令的標(biāo)簽上 例:  <div  v-名稱></div>

創(chuàng)建全局指令:

在入口js里寫:
Vue.directive('名稱', {
  inserted(el) {
    el.style.color = 'red';
  }
})
使用: 想使用的哪個標(biāo)簽寫入   例:  <div  v-名稱></div>

七、vue自定義一個過濾器
貼上代碼:

<div id="app">
     <input type="text" v-model="msg" />
     {{msg| capitalize }}
</div>
var vm=new Vue({
    el:"#app",
    data:{
        msg:''
    },
    filters: {
      capitalize: function (value) {
        if (!value) return ''
        value = value.toString()
        return value.charAt(0).toUpperCase();
      }
    }
})

上面代碼就是把msg的內(nèi)容給處理了一下,也就是過濾

2、全局定義過濾器:

Vue.filter('capitalize', function (value) {
  if (!value) return ''
  value = value.toString()
  return value.charAt(0).toUpperCase() + value.slice(1)
})

過濾器接收表達式的值 (msg) 作為第一個參數(shù)。capitalize 過濾器將會收到 msg的值作為第一個參數(shù)。

八、keep-alive
keep-alive是 Vue 內(nèi)置的一個組件,可以使被包含的組件保留狀態(tài),或避免重新渲染。可以理解成緩存的意思

include:被緩存的組件名
exclude:不被緩存的組件名  
注: 當(dāng)使用正則或者是數(shù)組時,要記得使用v-bind 。
<keep-alive include='include_components' exclude='exclude_components'>
  <component>
    <!-- 該組件是否緩存取決于include和exclude屬性 -->
  </component>
</keep-alive>

例:
<!-- 逗號分隔字符串,只有組件a與b被緩存。 -->
<keep-alive include="a,b">
  <component></component>
</keep-alive>

<!-- 正則表達式 (需要使用 v-bind,符合匹配規(guī)則的都會被緩存) -->
<keep-alive :include="/a|b/">
  <component></component>
</keep-alive>

還有很多沒有整理完全的,歡迎大家做補充

最后編輯于
?著作權(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)容