vue常用知識點總結


1,生命周期

 

從創建到渲染的過程,不僅僅問8個函數四個階段

組件創建時:creating 模板渲染時:mounting 數據更新時:updating  組件卸載時:destroying

1.1 圖示

 

 

 

 

 

 

 

1.2 生命周期鈎子函數

 

beforeCreate:創建前,在數據觀測和初始化事件還未開始

created:創建后,完成數據觀測,屬性和方法的運算,初始化事件,el屬性還沒有顯示出來

beforeMount:載入前,在掛載開始之前被調用,相關的render函數首次被調用。實例已完成以下的配置:編譯模  板,把data里面的數據和模板生成html。注意此時還沒有掛載html到頁面上。

mounted:載入后,在el 被新創建的 vm.$el 替換,並掛載到實例上去之后調用。實例已完成以下的配置:用上面編譯好的html內容替換el屬性指向的DOM對象。完成模板中的html渲染到html頁面中。此過程中進行ajax交互。

 

beforeUpdate:更新前,在數據更新之前調用,發生在虛擬DOM重新渲染和打補丁之前。可以在該鈎子中進一步地更改狀態,不會觸發附加的重渲染過程。

updated:更新后,在由於數據更改導致的虛擬DOM重新渲染和打補丁之后調用。調用時,組件DOM已經更新,所以可以執行依賴於DOM的操作。然而在大多數情況下,應該避免在此期間更改狀態,因為這可能會導致更新無限循環。該鈎子在服務器端渲染期間不被調用。

beforeDestroy:銷毀前,在實例銷毀之前調用。實例仍然完全可用。

destroyed:銷毀后,在實例銷毀之后調用。調用后,所有的事件監聽器會被移除,所有的子實例也會被銷毀。該鈎子在服務器端渲染期間不被調用。

 

1.3 回答的相關問題

  1. 什么是vue生命周期?

答: Vue 實例從創建到銷毀的過程,就是生命周期。從開始創建、初始化數據、編譯模板、掛載Dom→渲染、更新→渲染、銷毀等一系列過程,稱之為 Vue 的生命周期。

  1. vue生命周期的作用是什么?

答:它的生命周期中有多個事件鈎子,讓我們在控制整個Vue 實例的過程時更容易形成好的邏輯。

  1. vue生命周期總共有幾個階段?

答:它可以總共分為8個階段:創建前/后, 載入前/后,更新前/ 后,銷毀前/銷毀后。

 

  1. 第一次頁面加載會觸發哪幾個鈎子?

答:會觸發 下面這幾個beforeCreate, created, beforeMount, mounted 。

  1. DOM 渲染在 哪個周期中就已經完成?

答:DOM 渲染在 mounted 中就已經完成了。

 
   

 

  1. created階段的ajax請求與mounted請求的區別:前者頁  面視圖未出現,如果請求信息過多,頁面會長時間處於白屏狀態
  2. mounted 不會承諾所有的子組件也都一起被掛載。如果你希望等到整個視圖都渲染

 

 

 

 

2,組件封裝

 

封裝組件:主要是為了解耦,具備高性能、低耦合,在通用組件的時候要留一個插槽

 
   

 

 

 

 

為什么data必須是一個函數:主要是防止組件與組件之前 聲明的變量相互影響

3axios

 

3.1 axios是什么?

 

axios是基於promise的用於瀏覽器和node.js的http客戶   端,主要作用就是向后退發送請求。

支持promise

提供並發方法:同時請求兩個接口提供了攔截器

提供支持CSRF(跨站請求偽造)

 

4vuex

 

4.1 vuex是什么?

 

vuex為vue構建一個狀態集管理,主要是為了解決組件狀態共享的問題,強調的是集中式管理,便於便於維護,便於解耦,適用於大型項目

 

 
   

 

 

 

 

state

Vuex 使用單一狀態樹,即每個應用將僅僅包含一個store 實例,但單一狀態樹和模塊化並不沖突。存放的數據狀態, 不可以直接修改里面的數據。

mutations

mutations定義的方法動態修改Vuex  store 中的狀態或數據。

 

getters

類似vue的計算屬性,主要用來過濾一些數據。

action

actions可以理解為通過將mutations里面處里數據的方 法變成可異步的處理數據的方法,簡單的說就是異步操作數據。view 層通過 store.dispath 來分發 action。

 
   

 

 

modules

項目特別復雜的時候,可以讓每一個模塊擁有自己的state、mutation、action、getters,使得結構非常清晰,方   便管理。

 
   

 

 

 

 

 

 

4.2 怎么使用?

 

vuex包含5個模塊:

state:存放數據的位置mutations:變更狀態getters:動態變更數據

actions:actions從動作層調用mutations去更改狀態modules:拆分倉庫

4.3 哪種場景使用它?

大型應用

vue指令

 

 

4個vue中的指令和它的用法

v-if:條件渲染指令,代表存在消耗v-bind:用來綁定屬性,簡寫(:)

v-on:監聽指令,簡寫(@ v-for:循環指令

 

 

導航鈎子

 

vue-router 提供的導航守衛主要用來通過跳轉或取消的方式守衛導航。

6.1 導航鈎子有哪些?

 

導航鈎子就是路由的生命周期函數,主要包括全局和局部。

6.1.1 全局鈎子函數

beforeEach:路由切換開始調用,類似路由守衛

 
   

 

 

對於登錄的設置案例:

 

 

 

afterEach:路由切換離開時調用

6.1.2 局部的鈎子函數

局部到單個路由:

beforeEnter

組件的鈎子函數:

beforeRouterEnter beforeRouterUpdate beforeRouterLeave

 
   

v-model是什么?Vue中標簽怎么綁定事件?

Vue利用v-model進行表單數據雙向綁定,做了兩個操作v-bind綁定一個value的屬性

v-on幫當前的元素綁定到一個事件上

 
   

 

 

 

 

如何使用Vue構建項目

 

 
   

 

 

1,使用Vue-cli腳手架構建項目

2,直接引用vue.js進行項目的構建

swiper插件

 

swiper插件從后台獲取數據沒有問題,css代碼也沒有問題,但是圖片沒有動,怎么解決?

swiper提前初始化,這個時候數據還沒有完全出來。

 

解決方法,主要有兩個方向,一個從swiper,一個從

vue方面

9.1 vue方面

 

vue方面:vue中專門提供了一個nextTick(),用於解決dom

的先后執行問題

當數據加載完畢后,才執行swiper

 
   

 

 

9.1 swiper方面

 

 
   

 

 

10,路由懶加載

 

延遲加載、當需要的時候再加載,有效的分擔首頁的加載時間

 
   

 

 

11 Vue-loader

 
   

 

vue-loader就是一個加載器,把Vue編譯javaScript的模塊,  方便瀏覽器讀文件。

 

11.1 為什么要轉譯vue組件

 

 

動態的渲染一些數據

對三個標簽(template、script、style)都做了優化script中可以直接使用es6  style   也默認使用sass 提供作用域的選擇

開發階段提供熱加載

 

 

12 插槽

 

 
   

vue插槽:slot是一個占位about.vue

 

 

 

 

12.1 具名插槽

 

 
   

 

 

 

 

12.2 默認插槽

 

 

默認插槽就是匿名插槽

 
   

 

 

 

 

12.3 作用域插槽

 

 
   

 

 

13 vue虛擬DOM的理解

(重點)

 

13.1 什么是虛擬dom

 

使用js對象形式去添加dom元素,本質上是優化了diff算法,先在js上面批量更改,然后批量在真實節點上面修改。采用了新舊節點的對比,獲取差異的dom,一次性更新到真實的dom上,從而

13.2 缺陷?

 

一般是同級或者兄弟層級的修改,盡量不要跨層級修改

dom,設置key,可以最大的理由節點

14 MVVM模式

 

 

14.1 mvc

 
   

 

 

控制器:Controller 視圖:View

模型:Model

14.2 MVVM(重看)

 

 

Model:代表數據模型,也可以在Model中定義數據修改和操作的業務邏輯。

View:代表UI 組件,它負責將數據模型轉化成UI 展現出來                                                           ViewModel:監聽模型數據的改變和控制視圖行為、處理用戶交互,簡單理解就是一個同步View  Model的對

象,連接Model和View。

【模型】指的是后端傳遞的數據。【視圖】指的是所看到的頁面。【視圖模型】mvvm模式的核心,它是連接view和model的橋梁。它有兩個方向:一是將【模型】轉化成【視 圖】,即將后端傳遞的數據轉化成所看到的頁面。實現的方式是:數據綁定。二是將【視圖】轉化成【模型】,即將所看到的頁面轉化成后端的數據。實現的方式是:DOM 事件監聽。這兩個方向都實現的,我們稱之為數據的雙向綁定。

 

在MVVM的框架下視圖和模型是不能直接通信的。它們通過ViewModel來通信,ViewModel通常要實現一個  observer觀察者,當數據發生變化,ViewModel能夠監聽到 數據的這種變化,然后通知到對應的視圖做自動更新,而當用戶操作視圖,ViewModel也能監聽到視圖的變化,然后通

 

知數據做改動,這實際上就實現了數據的雙向綁定。並且

MVVM中的View ViewModel可以互相通信。

15 keep-alive

 
   

 

15.1 什么是keep-alive

 

它能讓不活動的組件“活着”,從A頁面跳轉到B頁面,一般從B頁面返回A頁面,A頁面會重新加載,但是keep-alive會保存到內存里面。

它提供了include與exclude兩個屬性,允許組件有條件的緩存

15.2 實現的原理

 

在created時候,將需要緩存的vnode節點放到cache中,在

render的時候根據name取出

15.3 使用

 

 
   

 

 

 

 

App.vue

 
   

 

 

16 Vue組件間的參數傳遞

 

16.1 父組件與子組件傳值

 

父組件傳給子組件:子組件通過props方法接受數據; 子組件傳給父組件:$emit方法傳遞參數

16.2 

 
   

非父子組件間的數據傳遞,兄弟組件傳值

 

eventBus,就是創建一個事件中心,相當於中轉站,可以用它來傳遞事件和接收事件。項目比較小時,用這個比較合

適。

 
   

17vue-cli如何新增自定義指令

17.1 創建局部指令

 

 
   

 

 

17.2 全局指令

 

 
   

 

 

18 自定義過濾器

 

html代碼:

 
   

 

 

JS代碼:

 

 

 

全局定義過濾器

 
   

 

 

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

 

19 

 
   

css只在當前組件起作

答:在style標簽中寫入scoped即可 例如:

 

20 v-if  v-show 區別

 

答:v-if按照條件是否渲染,v-show是display的block或

none;

21 router的區別

 

答:是路由信息對象,包括,,,,,,等路由信息參數。而router是“路由實例”對象包括了路由的跳轉方法,鈎子函數等。

 

22 

 
   

vue.js的兩個核心是什么?

兩個核心分別是數據驅動和組件系統

22.1 數據驅動

 

當數據發生變化的時候,用戶界面發生相應的變化,開發者不需要手動的去修改dom。

22.2 組件系統

 

vue中的組件分為兩種,全局組件和局部組件。

23 vue幾種常用的指令

 

 

答:v-for v-if 、v-bind、v-on、v-show、v-else

24 vue常用的修飾符?

 

答:.prevent: 提交事件不再重載頁面;.stop: 阻止單擊事件冒泡;.self: 當事件發生在該元素本身而不是子元素的時候會觸發;.capture: 事件偵聽,事件發生的時候會調用

 

25 

 
   

v-on 可以綁定多個方法嗎?

答:可以

26 vue key 值的作用?

 

答:當 Vue.js v-for 正在更新已渲染過的元素列表時,它默認用“就地復用”策略。如果數據項的順序被改變,Vue 將不會移動 DOM 元素來匹配數據項的順序, 而是簡單復用此處每個元素,並且確保它在特定索引下顯示已被渲染過的每個元素。key的作用主要是為了高效的更新虛擬DOM。

 

27 

 
   

什么是vue的計算屬性?

 

答:在模板中放入太多的邏輯會讓模板過重且難以維護,在需要對數據進行復雜處理,且可能多次使用的情況下,盡量采取計算屬性的方式。好處:①使得數據處理結構清晰;② 依賴於數據,數據更新,處理結果自動更新;③計算屬性內部this指向vm實例;④在template調用時,直接寫計算屬性名即可;⑤常用的是getter方法,獲取數據,也可以使用set 方法改變數據;⑥相較於methods,不管依賴的數據變不   變,methods都會重新計算,但是依賴數據不變的時候computed從緩存中獲取,不會重新計算。

 

28 

 
   

vue等單頁面應用及其優缺點

答:優點:Vue 的目標是通過盡可能簡單的 API 實現響應的數據綁定和組合的視圖組件,核心是一個響應的數據綁定系統。MVVM、數據驅動、組件化、輕量、簡潔、高效、快 速、模塊友好。

缺點:不支持低版本的瀏覽器,最低只支持到IE9;不利於SEO的優化(如果要支持SEO,建議通過服務端來進行渲染組件);第一次加載首頁耗時相對長一些;不可以使用瀏覽器的導航按鈕需要自行實現前進、后退。

 

29 

 
   

怎么定義 vue-router 的動態路由? 怎么獲取傳過來的值

 

答:在 router 目錄下的 index.js 文件中,對 path 屬性加上

/:id,使用 router 對象的 params.id 獲取。

30 vue的雙向綁定原理

 

 

j


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM