国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

【Vuejs】778- 超全 Vuejs 知識點(基礎(chǔ)到進階)

共 12221字,需瀏覽 25分鐘

 ·

2020-11-15 13:10






作者:?阿李卑斯
https://juejin.im/post/5ec358126fb9a0432a3c49e6

聲明:本篇文章純屬筆記性文章,非整體原創(chuàng),是對vue知識的整理,對自己有很大幫助才分享出來,參考文章傳送:1.童歐巴對vue知識的整理 2.我是你的超級英雄對vue知識的整理 3.vue官網(wǎng)

基礎(chǔ)篇

說說你對MVVM的理解

  • Model-View-ViewModel的縮寫,Model代表數(shù)據(jù)模型,View代表UI組件,ViewModel將Model和View關(guān)聯(lián)起來
  • 數(shù)據(jù)會綁定到viewModel層并自動將數(shù)據(jù)渲染到頁面中,視圖變化的時候會通知viewModel層更新數(shù)據(jù)

了解mvc/mvp/mvvm的區(qū)別

Vue2.x響應(yīng)式數(shù)據(jù)/雙向綁定原理

  • Vue 數(shù)據(jù)雙向綁定主要是指:數(shù)據(jù)變化更新視圖,視圖變化更新數(shù)據(jù)。其中,View變化更新Data,可以通過事件監(jiān)聽的方式來實現(xiàn),所以 Vue數(shù)據(jù)雙向綁定的工作主要是如何根據(jù)Data變化更新View。

  • 簡述

    • 當(dāng)你把一個普通的 JavaScript 對象傳入 Vue 實例作為 data 選項,Vue 將遍歷此對象所有的 property,并使用 Object.defineProperty 把這些 property 全部轉(zhuǎn)為 getter/setter。
    • 這些 getter/setter 對用戶來說是不可見的,但是在內(nèi)部它們讓 Vue 能夠追蹤依賴,在 property 被訪問和修改時通知變更。
    • 每個組件實例都對應(yīng)一個 watcher 實例,它會在組件渲染的過程中把“接觸”過的數(shù)據(jù) property 記錄為依賴。之后當(dāng)依賴項的 setter 觸發(fā)時,會通知 watcher,從而使它關(guān)聯(lián)的組件重新渲染。
  • 深入理解:

    • 監(jiān)聽器 Observer:對數(shù)據(jù)對象進行遍歷,包括子屬性對象的屬性,利用 Object.defineProperty() 對屬性都加上 setter 和 getter。這樣的話,給這個對象的某個值賦值,就會觸發(fā) setter,那么就能監(jiān)聽到了數(shù)據(jù)變化。
    • 解析器 Compile:解析 Vue 模板指令,將模板中的變量都替換成數(shù)據(jù),然后初始化渲染頁面視圖,并將每個指令對應(yīng)的節(jié)點綁定更新函數(shù),添加監(jiān)聽數(shù)據(jù)的訂閱者,一旦數(shù)據(jù)有變動,收到通知,調(diào)用更新函數(shù)進行數(shù)據(jù)更新。
    • 訂閱者 Watcher:Watcher 訂閱者是 Observer 和 Compile 之間通信的橋梁 ,主要的任務(wù)是訂閱 Observer 中的屬性值變化的消息,當(dāng)收到屬性值變化的消息時,觸發(fā)解析器 Compile 中對應(yīng)的更新函數(shù)。每個組件實例都有相應(yīng)的 watcher 實例對象,它會在組件渲染的過程中把屬性記錄為依賴,之后當(dāng)依賴項的 setter 被調(diào)用時,會通知 watcher 重新計算,從而致使它關(guān)聯(lián)的組件得以更新——這是一個典型的觀察者模式
    • 訂閱器 Dep:訂閱器采用 發(fā)布-訂閱 設(shè)計模式,用來收集訂閱者 Watcher,對監(jiān)聽器 Observer 和 訂閱者 Watcher 進行統(tǒng)一管理。

你知道Vue3.x響應(yīng)式數(shù)據(jù)原理嗎?

  • Vue3.x改用Proxy替代Object.defineProperty

  • 因為Proxy可以直接監(jiān)聽對象和數(shù)組的變化,并且有多達13種攔截方法。并且作為新標(biāo)準(zhǔn)將受到瀏覽器廠商重點持續(xù)的性能優(yōu)化。

  • Proxy只會代理對象的第一層,Vue3是怎樣處理這個問題的呢?

    • 判斷當(dāng)前Reflect.get的返回值是否為Object,如果是則再通過reactive方法做代理, 這樣就實現(xiàn)了深度觀測。
    • 監(jiān)測數(shù)組的時候可能觸發(fā)多次get/set,那么如何防止觸發(fā)多次呢?我們可以判斷key是否為當(dāng)前被代理對象target自身屬性,也可以判斷舊值與新值是否相等,只有滿足以上兩個條件之一時,才有可能執(zhí)行trigger。

Proxy 與 Object.defineProperty 優(yōu)劣對比

  • Proxy 的優(yōu)勢如下:

    • Proxy 可以直接監(jiān)聽對象而非屬性;
  • Proxy 可以直接監(jiān)聽數(shù)組的變化;

    • Proxy 有多達 13 種攔截方法,不限于 apply、ownKeys、deleteProperty、has 等等是 Object.defineProperty 不具備的;
    • Proxy 返回的是一個新對象,我們可以只操作新的對象達到目的,而 Object.defineProperty 只能遍歷對象屬性直接修改;
    • Proxy 作為新標(biāo)準(zhǔn)將受到瀏覽器廠商重點持續(xù)的性能優(yōu)化,也就是傳說中的新標(biāo)準(zhǔn)的性能紅利;
  • Object.defineProperty 的優(yōu)勢如下:

    • 兼容性好,支持 IE9,而 Proxy 的存在瀏覽器兼容性問題,而且無法用 polyfill 磨平,因此 Vue 的作者才聲明需要等到下個大版本( 3.0 )才能用 Proxy 重寫。

VUEX篇

Vuex 是什么?

運用到了js設(shè)計模式中的單例模式,單例模式想要做到的是,不管我們嘗試去創(chuàng)建多少次,它都只給你返回第一次所創(chuàng)建的那唯一的一個實例。

  • Vuex 是一個專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式。每一個 Vuex 應(yīng)用的核心就是 store(倉庫)?!皊tore” 基本上就是一個容器,它包含著你的應(yīng)用中大部分的狀態(tài) ( state )。

    • Vuex 的狀態(tài)存儲是響應(yīng)式的。當(dāng) Vue 組件從 store 中讀取狀態(tài)的時候,若 store 中的狀態(tài)發(fā)生變化,那么相應(yīng)的組件也會相應(yīng)地得到高效更新。
    • 改變 store 中的狀態(tài)的唯一途徑就是顯式地提交 (commit) mutation。這樣使得我們可以方便地跟蹤每一個狀態(tài)的變化。

Vuex 使用單一狀態(tài)樹,用一個對象就包含了全部的應(yīng)用層級狀態(tài)。至此它便作為一個“唯一數(shù)據(jù)源 (SSOT)”而存在。這也意味著,每個應(yīng)用將僅僅包含一個 store 實例。單一狀態(tài)樹讓我們能夠直接地定位任一特定的狀態(tài)片段,在調(diào)試的過程中也能輕易地取得整個當(dāng)前應(yīng)用狀態(tài)的快照?!猇uex官方文檔

  • 主要包括以下幾個模塊:

    • State:定義了應(yīng)用狀態(tài)的數(shù)據(jù)結(jié)構(gòu),可以在這里設(shè)置默認(rèn)的初始狀態(tài)。
    • Getter:允許組件從 Store 中獲取數(shù)據(jù),mapGetters 輔助函數(shù)僅僅是將 store 中的 getter 映射到局部計算屬性。
    • Mutation:是唯一更改 store 中狀態(tài)的方法,且必須是同步函數(shù)。
    • Action:用于提交 mutation,而不是直接變更狀態(tài),可以包含任意異步操作。
    • Module:允許將單一的 Store 拆分為多個 store 且同時保存在單一的狀態(tài)樹中。

什么情況下使用 Vuex?

  • 如果應(yīng)用夠簡單,最好不要使用 Vuex,一個簡單的 store 模式即可
  • 需要構(gòu)建一個中大型單頁應(yīng)用時,使用Vuex能更好地在組件外部管理狀態(tài)

Vuex和單純的全局對象有什么區(qū)別?

  • Vuex 的狀態(tài)存儲是響應(yīng)式的。當(dāng) Vue 組件從 store 中讀取狀態(tài)的時候,若 store 中的狀態(tài)發(fā)生變化,那么相應(yīng)的組件也會相應(yīng)地得到高效更新。
  • 不能直接改變 store 中的狀態(tài)。改變 store 中的狀態(tài)的唯一途徑就是顯式地提交 (commit) mutation。這樣使得我們可以方便地跟蹤每一個狀態(tài)的變化,從而讓我們能夠?qū)崿F(xiàn)一些工具幫助我們更好地了解我們的應(yīng)用。

為什么 Vuex 的 mutation 中不能做異步操作?

  • Vuex中所有的狀態(tài)更新的唯一途徑都是mutation,異步操作通過 Action 來提交 mutation實現(xiàn),這樣使得我們可以方便地跟蹤每一個狀態(tài)的變化,從而讓我們能夠?qū)崿F(xiàn)一些工具幫助我們更好地了解我們的應(yīng)用。
  • 每個mutation執(zhí)行完成后都會對應(yīng)到一個新的狀態(tài)變更,這樣devtools就可以打個快照存下來,然后就可以實現(xiàn) time-travel 了。如果mutation支持異步操作,就沒有辦法知道狀態(tài)是何時更新的,無法很好的進行狀態(tài)的追蹤,給調(diào)試帶來困難。

新增:vuex的action有返回值嗎?返回的是什么?

  • store.dispatch 可以處理被觸發(fā)的 action 的處理函數(shù)返回的 Promise,并且 store.dispatch 仍舊返回 Promise
  • Action 通常是異步的,要知道 action 什么時候結(jié)束或者組合多個 action以處理更加復(fù)雜的異步流程,可以通過定義action時返回一個promise對象,就可以在派發(fā)action的時候就可以通過處理返回的 Promise處理異步流程

一個 store.dispatch 在不同模塊中可以觸發(fā)多個 action 函數(shù)。在這種情況下,只有當(dāng)所有觸發(fā)函數(shù)完成后,返回的 Promise 才會執(zhí)行。

新增:為什么不直接分發(fā)mutation,而要通過分發(fā)action之后提交 mutation變更狀態(tài)

  • mutation 必須同步執(zhí)行,我們可以在 action 內(nèi)部執(zhí)行異步操作
  • 可以進行一系列的異步操作,并且通過提交 mutation 來記錄 action 產(chǎn)生的副作用(即狀態(tài)變更)

常規(guī)篇

computed 和 watch 的區(qū)別和運用的場景?

  • computed:是計算屬性,依賴其它屬性值,并且 computed 的值有緩存,只有它依賴的屬性值發(fā)生改變,下一次獲取 computed 的值時才會重新計算 computed 的值;

  • watch:沒有緩存性,更多的是「觀察」的作用,類似于某些數(shù)據(jù)的監(jiān)聽回調(diào) ,每當(dāng)監(jiān)聽的數(shù)據(jù)變化時都會執(zhí)行回調(diào)進行后續(xù)操作;當(dāng)我們需要深度監(jiān)聽對象中的屬性時,可以打開deep:true選項,這樣便會對對象中的每一項進行監(jiān)聽

  • 運用場景

    • 當(dāng)我們需要進行數(shù)值計算,并且依賴于其它數(shù)據(jù)時,應(yīng)該使用 computed,因為可以利用 computed 的緩存特性,避免每次獲取值時,都要重新計算;
    • 當(dāng)我們需要在數(shù)據(jù)變化時執(zhí)行異步或開銷較大的操作時,應(yīng)該使用 watch,使用watch選項允許我們執(zhí)行異步操作 ( 訪問一個 API ),限制我們執(zhí)行該操作的頻率,并在我們得到最終結(jié)果前,設(shè)置中間狀態(tài)。這些都是計算屬性無法做到的。

Vue2.x組件通信有哪些方式?

  • 父子組件通信

    • 事件機制(**父->子props,子->父 $on、$emit)
    • 獲取父子組件實例 $parent、$children
    • Ref 獲取實例的方式調(diào)用組件的屬性或者方法
    • Provide、inject (不推薦使用,組件庫時很常用)
  • 兄弟組件通信

    Vue.prototype.$bus = new Vue

    • Vuex
    • eventBus 這種方法通過一個空的 Vue實例作為中央事件總線(事件中心),用它來觸發(fā)事件和監(jiān)聽事件,從而實現(xiàn)任何組件間的通信,包括父子、隔代、兄弟組件
  • 跨級組件通信

    • Vuex
    • $attrs、$listeners
    • Provide、inject

說一下v-if和v-show的區(qū)別

  • 當(dāng)條件不成立時,v-if不會渲染DOM元素,v-show操作的是樣式(display),切換當(dāng)前DOM的顯示和隱藏。
  • v-if 適用于在運行時很少改變條件,不需要頻繁切換條件的場景;
  • v-show 則適用于需要非常頻繁切換條件的場景。

為什么 v-for 和 v-if 不建議用在一起

  • 當(dāng) v-for 和 v-if 處于同一個節(jié)點時,v-for 的優(yōu)先級比 v-if 更高,這意味著 v-if 將分別重復(fù)運行于每個 v-for 循環(huán)中。如果要遍歷的數(shù)組很大,而真正要展示的數(shù)據(jù)很少時,這將造成很大的性能浪費
  • 這種場景建議使用 computed,先對數(shù)據(jù)進行過濾

組件中的data為什么是一個函數(shù)?

  • 一個組件被復(fù)用多次的話,也就會創(chuàng)建多個實例。本質(zhì)上,這些實例用的都是同一個構(gòu)造函數(shù)。
  • 如果data是對象的話,對象屬于引用類型,會影響到所有的實例。所以為了保證組件不同的實例之間data不沖突,data必須是一個函數(shù)。

子組件為什么不可以修改父組件傳遞的Prop?/怎么理解vue的單向數(shù)據(jù)流?

  • Vue提倡單向數(shù)據(jù)流,即父級props的更新會流向子組件,但是反過來則不行。
  • 這是為了防止意外的改變父組件狀態(tài),使得應(yīng)用的數(shù)據(jù)流變得難以理解。
  • 如果破壞了單向數(shù)據(jù)流,當(dāng)應(yīng)用復(fù)雜時,debug 的成本會非常高。

v-model是如何實現(xiàn)雙向綁定的?

  • v-model是用來在表單控件或者組件上創(chuàng)建雙向綁定的
  • 他的本質(zhì)是v-bind和v-on的語法糖
  • 在一個組件上使用v-model,默認(rèn)會為組件綁定名為value的prop和名為input的事件

nextTick的實現(xiàn)原理是什么?

  • 在下次 DOM 更新循環(huán)結(jié)束之后執(zhí)行延遲回調(diào),在修改數(shù)據(jù)之后立即使用 nextTick 來獲取更新后的 DOM。
  • nextTick主要使用了宏任務(wù)微任務(wù)
  • 根據(jù)執(zhí)行環(huán)境分別嘗試采用Promise、MutationObserver、setImmediate,如果以上都不行則采用setTimeout定義了一個異步方法,多次調(diào)用nextTick會將方法存入隊列中,通過這個異步方法清空當(dāng)前隊列。

Vue不能檢測數(shù)組的哪些變動?Vue 怎么用 vm.$set() 解決對象新增屬性不能響應(yīng)的問題 ?

  • Vue 不能檢測以下數(shù)組的變動:

    • 第一類問題

      // 法一:Vue.set Vue.set(vm.items, indexOfItem, newValue) // 法二:Array.prototype.splice vm.items.splice(indexOfItem, 1, newValue) 復(fù)制代碼

    • 第二類問題,可使用 splice:

      vm.items.splice(newLength) 復(fù)制代碼

    • 當(dāng)你利用索引直接設(shè)置一個數(shù)組項時,例如:vm.items[indexOfItem] = newValue

    • 當(dāng)你修改數(shù)組的長度時,例如:vm.items.length = newLength

    • 解決辦法:

  • vm.$set 的實現(xiàn)原理是:

    • 如果目標(biāo)是數(shù)組,直接使用數(shù)組的 splice 方法觸發(fā)相應(yīng)式;
    • 如果目標(biāo)是對象,會先判讀屬性是否存在、對象是否是響應(yīng)式,最終如果要對屬性進行響應(yīng)式處理,則是通過調(diào)用 defineReactive 方法進行響應(yīng)式處理( defineReactive 方法就是 Vue 在初始化對象時,給對象屬性采用 Object.defineProperty 動態(tài)添加 getter 和 setter 的功能所調(diào)用的方法)

Vue事件綁定原理是什么?

  • 原生事件綁定是通過addEventListener綁定給真實元素的,組件事件綁定是通過Vue自定義的$on實現(xiàn)的。

說一下虛擬Dom以及key屬性的作用

  • 由于在瀏覽器中操作DOM是很昂貴的。頻繁的操作DOM,會產(chǎn)生一定的性能問題。這就是虛擬Dom的產(chǎn)生原因。

  • Virtual DOM本質(zhì)就是用一個原生的JS對象去描述一個DOM節(jié)點。是對真實DOM的一層抽象。(也就是源碼中的VNode類,它定義在src/core/vdom/vnode.js中。)

  • 虛擬 DOM 的實現(xiàn)原理主要包括以下 3 部分:

    • 用 JavaScript 對象模擬真實 DOM 樹,對真實 DOM 進行抽象;
    • diff 算法 — 比較兩棵虛擬 DOM 樹的差異;
    • pach 算法 — 將兩個虛擬 DOM 對象的差異應(yīng)用到真正的 DOM 樹。
  • key 是為 Vue 中 vnode 的唯一標(biāo)記,通過這個 key,我們的 diff 操作可以更準(zhǔn)確、更快速

    • 更準(zhǔn)確:因為帶 key 就不是就地復(fù)用了,在 sameNode 函數(shù)a.key === b.key對比中可以避免就地復(fù)用的情況。所以會更加準(zhǔn)確。
    • 更快速:利用 key 的唯一性生成 map 對象來獲取對應(yīng)節(jié)點,比遍歷方式更快

為什么不建議用index作為key?

  • 不建議 用index 作為 key,和沒寫基本上沒區(qū)別,因為不管你數(shù)組的順序怎么顛倒,index 都是 0, 1, 2 這樣排列,導(dǎo)致 Vue 會復(fù)用錯誤的舊子節(jié)點,做很多額外的工作

生命周期篇

說一下你對Vue的生命周期的理解

  • 簡單回答

    • beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy、destroyed。
    • keep-alive 有自己獨立的鉤子函數(shù) activated 和 deactivated。
  • 復(fù)雜回答

| 生命周期

發(fā)生了什么
beforeCreate
created
beforeMount
mounted
beforeUpdate
updated
beforeDestroy
destroyed
activited keep-alive 專屬
deactivated keep-alive 專屬

Vue中組件生命周期調(diào)用順序是什么樣的?

  • 組件的調(diào)用順序都是先父后子,渲染完成的順序是先子后父。
  • 組件的銷毀操作是先父后子,銷毀完成的順序是先子后父。

在什么階段才能訪問操作DOM?

在鉤子函數(shù) mounted 被調(diào)用前,Vue 已經(jīng)將編譯好的模板掛載到頁面上,所以在 mounted 中可以訪問操作 DOM。

你的接口請求一般放在哪個生命周期中?

  • 可以在鉤子函數(shù) created、beforeMount、mounted 中進行調(diào)用,因為在這三個鉤子函數(shù)中,data 已經(jīng)創(chuàng)建,可以將服務(wù)端端返回的數(shù)據(jù)進行賦值。

  • 但是推薦在 created 鉤子函數(shù)中調(diào)用異步請求,因為在 created 鉤子函數(shù)中調(diào)用異步請求有以下優(yōu)點:

    • 能更快獲取到服務(wù)端數(shù)據(jù),減少頁面loading 時間;
    • ssr不支持 beforeMount 、mounted 鉤子函數(shù),所以放在 created 中有助于一致性;

路由篇

vue路由hash模式和history模式實現(xiàn)原理分別是什么,他們的區(qū)別是什么?

  • hash 模式:

    • #后面 hash 值的變化,不會導(dǎo)致瀏覽器向服務(wù)器發(fā)出請求,瀏覽器不發(fā)出請求,就不會刷新頁面
    • 通過監(jiān)聽 hashchange 事件可以知道 hash 發(fā)生了哪些變化,然后根據(jù) hash 變化來實現(xiàn)更新頁面部分內(nèi)容的操作。
  • history 模式:

    • history 模式的實現(xiàn),主要是 HTML5 標(biāo)準(zhǔn)發(fā)布的兩個 API,pushStatereplaceState,這兩個 API 可以在改變 url,但是不會發(fā)送請求。這樣就可以監(jiān)聽 url 變化來實現(xiàn)更新頁面部分內(nèi)容的操作
  • 區(qū)別

    • url 展示上,hash 模式有“#”,history 模式?jīng)]有
    • 刷新頁面時,hash 模式可以正常加載到 hash 值對應(yīng)的頁面,而 history 沒有處理的話,會返回 404,一般需要后端將所有頁面都配置重定向到首頁路由
    • 兼容性,hash 可以支持低版本瀏覽器和 IE。

路由懶加載是什么意思?如何實現(xiàn)路由懶加載?

  • 路由懶加載的含義:把不同路由對應(yīng)的組件分割成不同的代碼塊,然后當(dāng)路由被訪問的時候才加載對應(yīng)組件

  • 實現(xiàn):結(jié)合 Vue 的異步組件和 Webpack 的代碼分割功能

  •        1.     可以將異步組件定義為返回一個 Promise 的工廠函數(shù) \(該函數(shù)返回的 Promise 應(yīng)該 resolve 組件本身\)

    const Foo = () => Promise.resolve({ /* 組件定義對象 */ }) 復(fù)制代碼

  •        2.     在 Webpack 2 中,我們可以使用動態(tài) import語法來定義代碼分塊點 \(split point\)

    import('./Foo.vue') // 返回 Promise 復(fù)制代碼

  • 結(jié)合這兩者,這就是如何定義一個能夠被 Webpack 自動代碼分割的異步組件

    const Foo = () => import('./Foo.vue') const router = new VueRouter({ routes: [ { path: '/foo', component: Foo } ]}) 復(fù)制代碼

  • 使用命名 chunk,和webpack中的魔法注釋就可以把某個路由下的所有組件都打包在同個異步塊 (chunk) 中

chunkconst Foo = () => import(/* webpackChunkName: "group-foo" */ './Foo.vue') 復(fù)制代碼

Vue-router 導(dǎo)航守衛(wèi)有哪些

  • 全局前置/鉤子:beforeEach、beforeResolve、afterEach
  • 路由獨享的守衛(wèi):beforeEnter
  • 組件內(nèi)的守衛(wèi):beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave

進階篇

說說vue和react的異同

    • 使用 Virtual DOM
    • 提供了響應(yīng)式 (Reactive) 和組件化 (Composable) 的視圖組件。
    • 將注意力集中保持在核心庫,而將其他功能如路由和全局狀態(tài)管理交給相關(guān)的庫。
    • 在 React 應(yīng)用中,當(dāng)某個組件的狀態(tài)發(fā)生變化時,它會以該組件為根,重新渲染整個組件子樹(除非使用PureComponent/shouldComponentUpdate),在 Vue 應(yīng)用中,組件的依賴是在渲染過程中自動追蹤的,所以系統(tǒng)能精確知曉哪個組件確實需要被重渲染
    • 在 React 中,一切都是 JavaScript。不僅僅是 HTML 可以用 JSX 來表達,現(xiàn)在的潮流也越來越多地將 CSS 也納入到 JavaScript 中來處理
    • Vue 的路由庫和狀態(tài)管理庫都是由官方維護支持且與核心庫同步更新的。React 則是選擇把這些問題交給社區(qū)維護,因此創(chuàng)建了一個更分散的生態(tài)系統(tǒng),所以有更豐富的生態(tài)系統(tǒng)
    • Vue 提供了CLI 腳手架,能讓你通過交互式的腳手架引導(dǎo)非常容易地構(gòu)建項目。你甚至可以使用它快速開發(fā)組件的原型。React 在這方面也提供了create-react-app,但是現(xiàn)在還存在一些局限性
    • React Native 能使你用相同的組件模型編寫有本地渲染能力的 APP,Vue 和Weex會進行官方合作,Weex 是阿里巴巴發(fā)起的跨平臺用戶界面開發(fā)框架,同時也正在 Apache 基金會進行項目孵化,另一個選擇是NativeScript-Vue,一個用 Vue.js 構(gòu)建完全原生應(yīng)用的NativeScript插件

什么是 mixin ?

  • Mixin 使我們能夠為 Vue 組件編寫可插拔和可重用的功能。
  • 如果你希望再多個組件之間重用一組組件選項,例如生命周期 hook、 方法等,則可以將其編寫為 mixin,并在組件中簡單的引用它。
  • 然后將 mixin 的內(nèi)容合并到組件中。如果你要在 mixin 中定義生命周期 hook,那么它在執(zhí)行時將優(yōu)化于組件自已的 hook。

在 Vue 實例中編寫生命周期 hook 或其他 option/properties 時,為什么不使用箭頭函數(shù) ?

  • 箭頭函數(shù)自已沒有定義 this 上下文中。
  • 當(dāng)你在 Vue 程序中使用箭頭函數(shù) ( => ) 時,this 關(guān)鍵字病不會綁定到 Vue 實例,因此會引發(fā)錯誤。所以強烈建議改用標(biāo)準(zhǔn)函數(shù)聲明。

Vue模版編譯原理知道嗎,能簡單說一下嗎?

簡單說,Vue的編譯過程就是將template轉(zhuǎn)化為render函數(shù)的過程。會經(jīng)歷以下階段(生成AST樹/優(yōu)化/codegen):

  • 首先解析模版,生成AST語法樹(一種用JavaScript對象的形式來描述整個模板)。使用大量的正則表達式對模板進行解析,遇到標(biāo)簽、文本的時候都會執(zhí)行對應(yīng)的鉤子進行相關(guān)處理。
  • Vue的數(shù)據(jù)是響應(yīng)式的,但其實模板中并不是所有的數(shù)據(jù)都是響應(yīng)式的。有一些數(shù)據(jù)首次渲染后就不會再變化,對應(yīng)的DOM也不會變化。那么優(yōu)化過程就是深度遍歷AST樹,按照相關(guān)條件對樹節(jié)點進行標(biāo)記。這些被標(biāo)記的節(jié)點(靜態(tài)節(jié)點)我們就可以跳過對它們的比對,對運行時的模板起到很大的優(yōu)化作用。
  • 編譯的最后一步是將優(yōu)化后的AST樹轉(zhuǎn)換為可執(zhí)行的代碼。

diff算法說一下

  • 同級比較,再比較子節(jié)點
  • 先判斷一方有子節(jié)點一方?jīng)]有子節(jié)點的情況(如果新的children沒有子節(jié)點,將舊的子節(jié)點移除)
  • 比較都有子節(jié)點的情況(核心diff)
  • 遞歸比較子節(jié)點

說說你對keep-alive組件的了解

  • keep-alive 是 Vue 內(nèi)置的一個組件,可以使被包含的組件保留狀態(tài),避免重新渲染 ,其有以下特性:

    • 一般結(jié)合路由和動態(tài)組件一起使用,用于緩存組件;
    • 提供 include 和 exclude 屬性,兩者都支持字符串或正則表達式, include 表示只有名稱匹配的組件會被緩存,exclude 表示任何名稱匹配的組件都不會被緩存 ,其中 exclude 的優(yōu)先級比 include 高;
    • 對應(yīng)兩個鉤子函數(shù) activated 和 deactivated ,當(dāng)組件被激活時,觸發(fā)鉤子函數(shù) activated,當(dāng)組件被移除時,觸發(fā)鉤子函數(shù) deactivated。

說說你對SSR的了解

  • SSR也就是服務(wù)端渲染,也就是將Vue在客戶端把標(biāo)簽渲染成HTML的工作放在服務(wù)端完成,然后再把html直接返回給客戶端

  • SSR的優(yōu)勢

    • 更好的SEO
    • 首屏加載速度更快
  • SSR的缺點

    • 開發(fā)條件會受到限制,服務(wù)器端渲染只支持beforeCreate和created兩個鉤子
    • 當(dāng)我們需要一些外部擴展庫時需要特殊處理,服務(wù)端渲染應(yīng)用程序也需要處于Node.js的運行環(huán)境
    • 更多的服務(wù)端負(fù)載

你都做過哪些Vue的性能優(yōu)化?

  • 編碼階段

    • 盡量減少data中的數(shù)據(jù),data中的數(shù)據(jù)都會增加getter和setter,會收集對應(yīng)的watcher
    • v-if和v-for不能連用
    • 如果需要使用v-for給每項元素綁定事件時使用事件代理
    • SPA 頁面采用keep-alive緩存組件
    • 在更多的情況下,使用v-if替代v-show
    • key保證唯一
    • 使用路由懶加載、異步組件
    • 防抖、節(jié)流
    • 第三方模塊按需導(dǎo)入
    • 長列表滾動到可視區(qū)域動態(tài)加載
    • 圖片懶加載
  • SEO優(yōu)化

    • 預(yù)渲染
    • 服務(wù)端渲染SSR
  • 打包優(yōu)化

    • 壓縮代碼
    • Tree Shaking/Scope Hoisting
    • 使用cdn加載第三方模塊
    • 多線程打包happypack
    • splitChunks抽離公共文件
    • sourceMap優(yōu)化
  • 用戶體驗

    • 骨架屏
    • PWA
    • 還可以使用緩存(客戶端緩存、服務(wù)端緩存)優(yōu)化、服務(wù)端開啟gzip壓縮等。

vue2.x中如何監(jiān)測數(shù)組變化?

  • 使用了函數(shù)劫持的方式,重寫了數(shù)組的方法,Vue將data中的數(shù)組進行了原型鏈重寫,指向了自己定義的數(shù)組原型方法,當(dāng)調(diào)用數(shù)組api時,可以通知依賴更新。
  • 如果數(shù)組中包含著引用類型,會對數(shù)組中的引用類型再次遞歸遍歷進行監(jiān)控。這樣就實現(xiàn)了監(jiān)測數(shù)組變化。

說說你對 SPA 單頁面的理解,它的優(yōu)缺點分別是什么?

  • SPA( single-page application )僅在 Web 頁面初始化時加載相應(yīng)的 HTML、JavaScript 和 CSS。一旦頁面加載完成,SPA 不會因為用戶的操作而進行頁面的重新加載或跳轉(zhuǎn);取而代之的是利用路由機制實現(xiàn) HTML 內(nèi)容的變換,UI 與用戶的交互,避免頁面的重新加載。

  • 優(yōu)點:

    • 用戶體驗好、快,內(nèi)容的改變不需要重新加載整個頁面,避免了不必要的跳轉(zhuǎn)和重復(fù)渲染;
    • 基于上面一點,SPA 相對對服務(wù)器壓力??;
    • 前后端職責(zé)分離,架構(gòu)清晰,前端進行交互邏輯,后端負(fù)責(zé)數(shù)據(jù)處理;
  • 缺點:

    • 初次加載耗時多:為實現(xiàn)單頁 Web 應(yīng)用功能及顯示效果,需要在加載頁面的時候?qū)?JavaScript、CSS 統(tǒng)一加載,部分頁面按需加載;
    • 前進后退路由管理:由于單頁應(yīng)用在一個頁面中顯示所有的內(nèi)容,所以不能使用瀏覽器的前進后退功能,所有的頁面切換需要自己建立堆棧管理;
    • SEO 難度較大:由于所有的內(nèi)容都在一個頁面中動態(tài)替換顯示,所以在 SEO 上其有著天然的弱勢。

對于即將到來的 vue3.0 特性你有什么了解的嗎?

  • 監(jiān)測機制的改變

    • 3.0 將帶來基于代理 Proxy的 observer 實現(xiàn),提供全語言覆蓋的反應(yīng)性跟蹤。
    • 消除了 Vue 2 當(dāng)中基于 Object.defineProperty 的實現(xiàn)所存在的很多限制:
  • 只能監(jiān)測屬性,不能監(jiān)測對象

    • 檢測屬性的添加和刪除;
    • 檢測數(shù)組索引和長度的變更;
    • 支持 Map、Set、WeakMap 和 WeakSet。
  • 模板

    • 模板方面沒有大的變更,只改了作用域插槽,2.x 的機制導(dǎo)致作用域插槽變了,父組件會重新渲染,而 3.0 把作用域插槽改成了函數(shù)的方式,這樣只會影響子組件的重新渲染,提升了渲染的性能。
    • 同時,對于 render 函數(shù)的方面,vue3.0 也會進行一系列更改來方便習(xí)慣直接使用 api 來生成 vdom 。
  • 對象式的組件聲明方式

    • vue2.x 中的組件是通過聲明的方式傳入一系列 option,和 TypeScript 的結(jié)合需要通過一些裝飾器的方式來做,雖然能實現(xiàn)功能,但是比較麻煩。
    • 3.0 修改了組件的聲明方式,改成了類式的寫法,這樣使得和 TypeScript 的結(jié)合變得很容易
  • 其它方面的更改

    • 支持自定義渲染器,從而使得 weex 可以通過自定義渲染器的方式來擴展,而不是直接 fork 源碼來改的方式。

    • 支持 Fragment(多個根節(jié)點)和 Protal(在 dom 其他部分渲染組建內(nèi)容)組件,針對一些特殊的場景做了處理。

    • 基于 tree shaking 優(yōu)化,提供了更多的內(nèi)置功能。




1. JavaScript 重溫系列(22篇全)
2. ECMAScript 重溫系列(10篇全)
3. JavaScript設(shè)計模式 重溫系列(9篇全)
4.?正則 / 框架 / 算法等 重溫系列(16篇全)
5.?Webpack4 入門(上)||?Webpack4 入門(下)
6.?MobX 入門(上)?||??MobX 入門(下)
7. 80+篇原創(chuàng)系列匯總

回復(fù)“加群”與大佬們一起交流學(xué)習(xí)~

點擊“閱讀原文”查看 80+ 篇原創(chuàng)文章



瀏覽 60
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 亚洲免费观看高清完整版在va线观| 东京热综合影院| 久久久久亚洲AV成人网人人软件| 中文字幕在线观看二区| 精品无码不卡| 青草五月天| 亚洲高清免费视频| 91女人18片女毛片60分钟| 人人操国产| 一区二区免费在线观看| 亚洲高清视频一区| 国产精品久久久久久久久久乐趣播| 大香蕉在线伊| 欧美在线色| 18禁看网站| 中文字幕无码毛片| 日本A片| 高清无码电影| 东北老女人操逼视频| 免费一级AAAAA片在线播放| 四川少妇搡BBw搡BBBB搡| 特黄视频| 一区二区三区视频在线观看| a在线观看视频| 久久99国产乱子伦...| 亚洲免费小电影| 操碰人人操| 日皮做爱视频网站| 亚洲国产成人精品女人| 中文日韩欧美| 国产伦精一品二品三品app| 一区二区成人视频| 亚洲国产成人视频| 国产成人内射| 亚洲AV无码成人精品区东京热| 内射在线播放| 三级片在线看| 波多野结衣视频在线| 成人国产在线无码AV免费| 三级黄片网站| 操屄视频免费观看| 福利视频导航自拍| 麻豆videos| 澳门黄片| 国产高潮视频| 日逼免费网站| 欧美性爱视频在线观看| 豆花视频免费观看| 男女av免费| 91无码一区二区三区| 亚洲免费观看A∨中文| 苍井空无码一区二区三区| 欧美91| 911亚洲精品| 成人做爰69片免费观看| 91久久精品一区二区三| 国产成人免费视频在线| 黄色视频免费在线观看网站| 江苏妇搡BBBB搡BBBB-百度| 大香蕉啪啪啪啪| 激情亚洲五月天| 久久婷婷五月天| 国产高清无码在线| A片视频在线观看| 67194熟女| 人妻体内射精一区二区三区 | 天天日毛片| 中文字幕视频一区| 欧美日屄| 91av在线看| 成人在线中文字幕| 人妻少妇一区二区三区| 婷婷丁香五月综合| 亚洲欧洲av| 亚洲A片V一区二区三区| 九九自拍视频| 俺去俺来也在线www色情网| 久久激情av| 亚洲国产中文字幕在线播放| 激情五月天色色| 在线观看亚州| 国产精品欧美综合亚洲| 欧美一区二区丁香五月天激情| 国产无码av| 亚洲无码免费看| 欧美黄色影院| 精品人妻一区二区三区浪潮在线| 国产91无码精品秘入口新欢| 青青草综合网| 久久久国产91桃色一区二区三区 | 亚洲无码三级片| 二区无码| 日韩成人无码毛片| 国产黄色免费看| 影音先锋亚洲无码| 中文无码在线播放| 97精品| 在线中文字幕网站| 国产十八岁在线观看免费| 网站你懂得| 在线观看黄色av| 色哟哟一区二区三区| 人妖毛片| 岛国av在线播放| 波多野结衣无码电影| 插菊花综合网3| 高清AV在线| 亚洲高清无码在线免费观看| 天堂а√在线中文在线新版| 一级一级一级做a免费一级做a| 青榴社区| 亚洲狼人天堂| 伊人天天操| 九色PORNY蝌蚪视频| 国产精品93333333| 国产成人精品免高潮在线人与禽一| 国产日本在线| 久久精品视频99| 欧美成人激情视频| 口爆吞精在线观看| 色婷婷亚洲综合| 久久午夜无码鲁丝片午夜精| 高清无码电影| 91蝌蚪丨人妻丨丝袜| 久久久三级| 中文字幕不卡+婷婷五月| 777在线视频| 无码不卡视频| 麻豆传媒嫂子| 日韩大片免费观看| 人妻无码蜜桃视频| 亲子乱AV一区二区| 久久久无码AV| 日韩毛片一区二区| 密桃视频网站| 午夜黄色视频在线观看| 精品伊人| 国产精品77777| 永久免费av| 日韩另类视频| av免费在线播放| 91色色色| 国产中文| 亚洲日韩欧美性爱| 亚洲成年人网| 九月婷婷综合| 无码人妻AⅤ一区二区三区| 天天干,夜夜爽| 性爱小说视频| 亚洲一级视频在线观看| 97人妻天天摸天天爽天天| 波多野结衣高清无码视频| 天天综合精品| 久久婷婷国产| 国产乱子伦-区二区三区| 婷婷久久综合| 日本无码久久嗯啊流水| AA片免费| AV在线资源观看| 亚洲A∨无码无在线观看| 91亚洲精品国偷拍自产在线观看| 九九综合伊人7777777| 少妇搡BBBB搡BBB搡造水多| 欧美日韩有码视频网址大全| 女侠吕四娘第二部| 国产天堂视频| 一区二区三区国产精品| 亚洲无码中| 中文字幕高清| 日韩在线一级| 人人妻人人爽人人精品| 特级西西444WWW大精品视频 | 九九九无码| 四虎在线观看一区网址| 自拍偷拍成人视频| 97干干| 日韩黄色电影| 国产传媒AV| 婷婷五月六月| 1区2区视频| 色天使AV| 欧美熟妇精品黑人巨大一二三区| 国产黄片在线免费观看| 日韩三级| 色老板在线精品免费观看| 丁香五月激情啪啪| 久操超碰| 亚洲视频a| 欧美日批| 亚洲成人AV| 国产一精品| 亚洲视频观看| 色色色热| 无码囯无精品毛片大码| 亚洲无码高清视频在线观看| 日韩在线观看免费| 黄色片视频日本| 最近中文字幕在线观看| 新版欧美内射大全| 精品A区| 国产毛片视频| 翔田千里被躁120分钟| 日韩一级在线视频| 日韩免费视频一区| 色婷婷一区二区三区久久午夜 | 深爱激情五月天| 亚洲国产成人精品午夜| 黄色生活片| 亚洲乱码中文字幕| 亚洲熟女一区| 在线看片a| 国产理论视频在线观看| 亚洲色图欧美在线| 欧美操BB| 性爱视频网站| 无码中文字幕高清| 高清毛片AAAAAAAAA郊外| 日本成人电影一区二区三区| 四虎av在线| 精品国产91乱码一区二区三区| 狠狠爱av| 东北A片| 亚洲免费观看高清完整版在线观| 亚洲AV无码精品| 成人三级片在线观看| 日韩大屌操| 国产日韩二区| 日韩高清在线播放| 成人性爱网站| 农村新婚夜一级A片| 极品久久久久| 波多无码在线| 久久久久久| 欧美色图视频网站| 一级a片在线播放| 欧美性爱天天操| 东北嫖老熟女一区二区视频网站 | 黄色片亚洲| 一级午夜| 岛国免费av| 高清无码1区| 亚洲综合一区二区三区| 黄色视频在线观| 亚洲精品国产AV| 日韩ava| 日韩欧美人妻无码精品| 91在线无码精品秘入口国战| 小骚逼操死你| 亚洲无码一区二区在线| 成人美女视频| 特级毛片片A片AAAAAA| 亚洲无码精品视频| 少妇高潮一区二区三区99| 色五月在线视频| 91人妻人人操人人爽| 波多野吉衣视频| 欧美一级黃色A片免费看蜜桃熟了| 国产精品视频免费在线观看| 男人的天堂在线视频| 亚洲午夜精品久久久久久APP| 男人视频网| www.亚洲精品| 日本欧美在线观看高清| 91嫖妓站街埯店老熟女| 五月天婷婷丁香综合视频| 中文字幕日本| 黄色一级片免费在线观看| 国产黄色小视频在线观看| 欧美三级欧美一级| 日韩在线中文字幕亚洲| 日本精品在线播放| 在线免费看AV| 成人AV免费观看| 欧美精品A片| 99热最新在线| 国产嫩草久久久一二三久久免费观看 | 夜夜撸天天日| 日韩色在线| 亚洲激情网| 国产搡BBB爽爽爽视频| 中文字幕无码网站| 中文字幕网站| 国产在线观看一区| 国产视频1区| 天堂中文在线观看| 国产一级做a爱免费视频| 午夜蜜桃| 水蜜桃在线视频| 北条麻妃九九九在线视频| 中文字幕亚洲高清| 麻豆一级片| 一本之道DVD不卡视频| 中文字幕在线网址| 北条麻妃无码在线| www.啪啪啪| 不卡视频在线观看| www.爆操| 五月天一区二区三区| 日韩免费视频一区二区| 黄一级| 成人无码日韩精品| 123操逼| 日韩综合精品| 91网站免费观看| 影音先锋av在线资源站| 最近最经典中文MV字幕| 九九色影院| 日韩无码破解| 日日操日日| 久久伊人大香蕉| 天天干,夜夜爽| 成人在线小视频| 日本视频爱爱| 亚洲欧美成人在线观看| 亚洲第一黄色| 加勒比无码视频| 日本爱爱免费视频| 成人黄色导航| 亚洲AV偷拍| 亚洲字幕在线播放| 色色色色综合| 国产三级片网址| AV国产在线观看| AV网站免费看| 国产成人片色情AAAA片| 中文字幕黄色片| 黃色A片一级一级一级久别的草原| 日韩在线免费看| 成人AA片| 日韩啪啪片| 91成人无码视频| 欧美黄色站| 日本电影一区二区| 欧美中文字幕在线观看| 国产精品人妻无码久久久郑州天气网| 超碰99在线观看| 特级西西444www高清大胆免费看| 怡红院综合网| 亚洲国产一区二区在线| 自拍偷拍一区二区| 亚洲中文字幕在线播放| 韩国免费一级a一片在线播放| 国产成人精品免费视频| 国产精品香蕉国产| 日本A∨| 麻豆蜜桃91无码| 国产成人视频免费观看| 亚洲一二期视频| 日韩在线播放视频| 欧美自拍性爱视频| 久热在线精品视频| 亚洲视频一区| ww毛片| 黄片视频在线观看| 亚洲黄色电影在线| 国产精品秘久久久久久免费播放| 亚洲第一黄色视频| 熟妇一区| 黑人乱伦| 国产黄色网| 欧美成人精品三级网站| 二区视频| 综合伊人大香蕉| 日本黄色视频在线| 欧美国产在线观看| 国产高清无码免费| 国产激情无码免费| 香蕉久草| 啊啊啊啊啊靠逼| 精品二区| 99免费在线视频| 少妇大战28厘米黑人| 韩日av| 天天做天天爱天天高潮| 日无码视频| 国产第二页| 成人网站在线看。| 超碰99在线| 一级免费黄色视频| 精品无码产区一区二| 骚逼综合网| 最新中文字幕一区| 亚洲在线网站| 天天狠天天干| 女人18片毛片60分钟黃菲菲| 无码电影视频| 日韩欧美高清第一期| 成人一区二区电影| 大香蕉伊人av| 翔田千里无码免费播放| 久久av一区二区三区| 免费看毛片的网站| 中文字幕成人电影| 人妻天天爽夜夜爽| 详情:绿帽夫妻多人运动开淫啪-91n| 亚洲精品成人无码AV在线| av福利电影在线| 中文字幕久热| 欧美肏屄网| 2018天天干天天操| 91麻豆电影| 九九视频免费在线观看| 日韩一区二区三区免费视频| 日本在线免费观看| 在线观看视频亚洲| 奶头和荫蒂添的好舒服囗交漫画 | 久草免费在线| 中文字幕第23页| 久久一级片| 欧美久久久久久| 精品AV无码一区二区三区| 欧美精品日韩在线观看| 欧美日韩一区二区三区四区五区六区 | 亚洲在线| 亚洲免费黄片| 影音先锋乱伦电影| 午夜无码AV| 亚洲av网站在线观看| 天天操夜夜爽| 在线播放内射| 中文字幕在线播放AV| 夜色福利视频| 51妺妺嘿嘿午夜成人| 日韩一区二区三区四区| 丁香五月激情啪啪啪| 国产精品视频瘾无码| 中文在线字幕高清电视剧| 久草视频2| 插插视频| 欧美老妇操逼视频| 五月播播| 人人操在线观看| 人人综合网| 蜜桃传媒一区二区| 中国黄色A片| 欧美大胆a| www香蕉成人片com| 精品国产va久久久久久久| 美女网站黄a| 国产成人无码区免费AV片在线| 五月天综合久久| 91AV电影| 国产小视频在线播放| 国产99久久久精品| 亚洲国产高清视频| 在线观看黄视频| 一区二线视频| 小明看台湾成人永久免费视频网站 | 91啦丨露脸丨熟女色啦| 国产精品免费一区二区三区四区视频 | 亚洲理论片| 18精品爽国产冫绿帽社| 欧美成人aaa| 麻豆mdapp03.tⅴ| 国产熟睡乱子伦午夜视频_第1集| 欧美footjob高跟脚交| 黄色三级在线| a片在线观看免费| 久久精彩偷拍视频| 中文字幕2018第一页| 无码人妻久久一区二区三区蜜桃 | 麻豆一区二区三区| 一级黄色片免费| 樱桃Av| 久久毛片| 西西人体444rt高清大胆模特 | 国产少妇| 国产精品第二页| AV口爆| 综合久久久| www.97超碰| 性性性性性XXXXX| 国产免费无码一区二区| 欧美亚洲日韩成人| 91亚洲精品国产成人| 91亚洲视频| 久久久亚洲无码精品| 中文字幕无码播放| 日韩免费高清在线视频| 午夜成人小电影| 久久久久久久网| 日本三级AAA三级AAAA97| 97操碰| 欧美日韩精品一区二区三区视频播放| 91中文| 亚洲无码在线播放| 六月婷婷中文字幕| 99视频+国产日韩欧美| 麻豆三级| 超碰啪啪| 毛茸茸BBBBBB毛茸茸| 摸BBB槡BBBB搡BBB,,,,,| 亚洲欧美国产精品专区久久| 日韩视频――中文字幕| 蜜桃无码在线| 久久精品99久久久久久久久| 在线午夜福利| 成年人黄色视频网站| 黄色的视频网站| 精品视频在线免费观看| 欧美偷拍精品| 色欲成人网| 国产免费观看av| 超碰成人在线观看| 综合婷婷久久| 欧美一级三级| 国产人国产视频成人免费观看… | 亚洲精品中文字幕无码| 久久成人国产| 国产精品久久7777777精品无码| 人人摸人人| 视色网| 人人天天操| 男女一区| 国产激情欧洲在线观看一区二区三区 | 欧美色小说| 日韩精品一二三| 在线观看免费视频黄| 丰满的人妻一区二区10| 国产一区二区三区在线| AV资源在线播放| Av黄色| 欧美日韩一级二级三级| 极品小仙女69| 婷婷精品视频| 欧美激情爱爱| 亚洲精品国产精品国自产| www黄片视频| 大香蕉伊人在线视频| 中文字幕久久人妻无码精品蜜桃| 久久久免费观看视频| 国产美女激情视频| 懂色av| 成人在线视频播放| 亚洲欧美成人电影| 四川少妇搡bbw搡bbbb| 啪啪A片| 天天肏| 午夜福利亚洲| 91视频网站在线| 91影音先锋| 亚洲黄片免费| 国产操逼大片| 天堂视频在线观看亚洲美女| 精品人妻无码一区二区三区四川人 | 高清无码色播| 久久久久大香蕉| 青青草手机在线观看| 啪啪啪网站| 不卡成人| 91综合在线观看| 亚洲Japanese办公室制服| 日皮免费视频| 精品视频免费| 久久成人无码| 翔田千里无码免费播放| 韩国午夜福利视频| 午夜无码视频| 欧美中文字幕在线视频| 久久综合五月天| 黄色一级视频在线观看| 午夜福利免费在线观看| 色色色色色欧美| 电影91久久久| 99在线视频精品| 五月丁香激情综合| 九九九视频在线观看| 欧美日韩一区二区三区四区五区六区 | 日本三级片免费| 人妻日韩精品中文字幕| 欧美在线综合| 国产精品乱子伦视频一区二区| 影音先锋亚洲AV| 五月婷婷视频在线观看| 蜜芽人妻在线| 蜜桃秘一二三区最新| 91视频一区二区| 日皮视频免费在线观看| 这里只有精品在线观看| 日韩一区二区三区精品| 玖玖婷婷| 色五月婷婷五月天激情| 四虎影院人妻| 91午夜福利| 日韩无码一二三| 国产福利一区二区| 欧美亚洲自拍偷拍| 久久婷婷在线| 国精自拍| 成人做爱黄片| 就去色色五月天| 天堂A片电影网站在线观看| 国产性色| 婷婷五月天在线播放| 成人亚洲A片V一区二区三区蜜月 | 中文字幕在线网站| 五月天久久婷婷| 色综合中文字幕| 欧一美一婬一伦一区二区三区黑人-亚| 最近最火中文字幕mv歌词| 国产AV一卡| 在线免费小黄片| 伊人久久福利视频| 亚洲骚妇| 亚洲久久视频| 91绿帽人妻-ThePorn| 久久精品视频99| 日本天天操| av东方在线| 久操视频免费看| 天天日天天干美女| 操逼去| 嫩BBB搡BBBB搡BBBB| 熟女少妇网站| 欧美激情色色| 精品九九| 国精产品一区二区三区| 日韩在线视频播放| 日韩av免费在线观看| 操bbbb| 欧美亚洲一区二区三区| 天天干天天色| 久久永久免费视频| 操逼网五月天| 天堂A片| 中国精品77777777| 亚洲午夜福利视频在线观看| 日本精品视频在线| 丝袜天堂| 天天干网址| 亚洲欧美激情视频| 青草成人在线视频| 中文字幕福利电影| 在线一区| 成人视频免费观看18| 亚洲精品影院| 黄色片免费在线观看| 特级444WWW大胆高清| 免费看一级一级人妻片| 亚洲爱爱视频| 久久草在线| 97国产精品视频| 无码AⅤ一区二区三区| 91成人导航| 中文字幕在线观看不卡| 日批视频在线观看| 日本一区二区三区免费观看| 黄片小视频在线观看| 国产中文在线视频| 无码欧美成人| 在线无码免费视频| 久久一二三四| 国产肏屄| 黄网在线播放| 天堂资源在线观看| 色吧| 97超级碰| 自拍偷拍精品视频| 国产毛片毛片毛片毛片毛片| 国产探花| 久久草在线播放| 日韩在线视频中文字幕码无| 欧美日韩高清一区二区三区| 日韩精品人妻中文字幕有| 亚洲成人无码网站| 蜜桃视频网址| 久久久久无码国产精品不卡| 91久久免费视频| 日皮视频在线| 白嫩在线| 久久99久久99久久99| 青草视频在线免费观看| 91精品国产综合久久久蜜臀主演| 女人18片毛片60分钟黃菲菲| 91蜜桃网| 国产一a毛一a毛A免费| 日韩精品成人在线| 无码91| 91av免费观看| 影音先锋亚洲资源| 日本一区二区在线| 特级西西444WWW大精品视频 | 国产伦精品一区二区三区视频女| 99精品免费在线观看| 成人中文字幕在线观看| 久草手机视频在线观看| 懂色av蜜臀av粉嫩av分享| 久久噜| 亚洲精品国产成人综合久久久久久久久 | 天天操夜夜骑| 肏亚洲美女| 国产18欠欠欠一区二区| 精产国品一区二区| 51一区二区三区| 超碰日日夜夜| 九色蝌蚪9l视频蝌蚪9l视频成人熟妇| 丁香久久婷婷| 成人A片网| 久久精品免费电影| 小明看台湾成人永久免费视频网站| 欧美日韩高清一区二区三区| 久热精品免费| 中文字幕在线观看不卡| 国产精品无码AV| 波多野成人无码精品69| 操日本老女人| 91视频在线免费观看| 亚洲一区二区三区在线++中国 | 性爱一区| 99美女精品视频| 中文字幕成人av| 亚洲AV久久无码| 精品成人在线观看| 日韩性爱av| h亚洲| 国产一级二级在线观看| 久操免费在线视频| 日韩视频免费| 蜜桃AV| 久久国产大奶| 操逼91视频| 翔田千里53歳在线播放| 先锋AV资源网| 免费视频99| 久久无码一区二区| 91精品国产aⅴ一区二区| 另类毛片| 成人无码一区二区| 欧美一卡二卡| 91大神免费在线观看| 囯产伦精一区二区三区四区| 成人毛片视频网站| 91九色蝌蚪91POR成人| 熟女人妻ThePorn| 激情丁香婷婷| 中文字幕无码高清| 在线观看91| 大香蕉综合网| 77q视频| 亚洲视频偷拍| 国内视频一区| 操逼逼综合网| 一区二区三区四区高清无码| 中文AV在线播放| 天堂中文在线观看| 日本性爱中文字幕| 久草大香蕉在线视频| 久久久久久久久久久久高清毛片一级| 奇米无码| 色婷婷一区二区三区久久| 亚洲最大无码| 丁香五月av| 四川美女网久草| 国产婷婷内射| 成人精品一区二区无码| 国产成人精品一区| 永久免费av| 狠狠狠狠操| 三级无码视频| 成人久久AV| 精品人妻一区二区三区蜜桃| 人人看人人摸人人草| 日批视频在线观看| 亚洲第一色网站| A片在线免费观看| 久久g热| 蜜桃影院| 天码人妻一区二区三区在线看| 狠操在线| 在线观看污视频| 国产无毛| 亚洲免费av在线| 国产乱伦AV网站| 毛片h| 国内自拍第一页| 炮友露脸青楼传媒刘颖儿| 香蕉av在线| 大香蕉综合在线观看| 日韩乱伦av| 久久男人网| 激情无码视频| 青娱亚洲| 天天操夜夜干| 亚洲人妻系列| 91蝌蚪| 日韩人妻无码一区二区三区七区| 亚洲色成人网站www永久四虎 | 一级黄片免费视频| 围内精品久久久久久久久久‘变脸| 色婷婷Av| 91AV在线播放| 久久成人18免费网站波多野结衣| 撸一撸av| 精品国产成人a在线观看| 日韩精品久久久久久久| 波多野结衣网站| 精品国产免费无码久久噜噜噜AV | av官网| 欧美一级视频在线观看| 豆花AV| 柠檬福利第一导航| 天天干狠狠| 12——13女人毛片毛片| 黄片免费在线播放| 97色色网| 中文字幕免费一区| 成人免费黄色视频网站| 日韩毛片中文字幕| 国产视频久久久| 免费操逼网址| 91久久婷婷亚洲精品成人| 超碰97在线免费观看| 成人黄片网站| 五月丁香激情六月| 中文字幕在线永久| 男人在线天堂| 操逼操逼操逼| 青青精品视频| 成功精品影院| 一区二区三区精品视频| 日韩中文在线观看| 国产91黄色| 五月丁香视频在线观看| 日本黄在线观看| 中文字幕在线免费看| 午夜激情操一操| 日韩一级片免费看| av黄色在线观看| 国产一级婬片A片免费妖精视频| 超碰人人搞| 五月天AV在线| 精品中文字幕在线观看| 四川搡BBBBB搡BBB| 国内自拍视频网站| 中文字幕av久久爽Av| 一区二区高清无码| 2018天天操天天干| 欧美老女人性爱视频| 日韩成人在线播放| 久久人操| 91美女在线视频| 丝袜足交在线| 91sese| 亚洲成人动漫免费| www.97超碰| 久久免费精品视频| 91精品国际| 玖玖爱在线精品视频| 亚洲欧美一区二区三区在线| 欧美成人精品无| 在线观看免费黄网站| 亚洲日韩视频在线| 国产一级黄片| 996精品视频| 久久久无码视频| 成人视频网站在线观看| 青青久久91| 国产99久久九九精品无码免费| 热无码| 福利视频中文字幕| 久久精品视频网站| 好叼操| 蜜芽成人在线视频| 91社成人影院| 亚洲免费高清| 欧美日韩在线观看一区二区三区| 日韩在线视频中文字幕码无| 亚洲精品一区二区三区| 国产美女被| 综合天天| 欧美黄片在线| 99在线小视频| 亚洲一区二区三区视频| 97福利视频| 亚洲AV国产| Chinese搡老女人| 上海熟搡BBB搡BBBB| 亚洲色图15| 午夜性爱网站| 日本操逼在线播放| 波多野结衣天堂| 嫩小槡BBBB槡BBBB槡漫画| 蝌蚪AV| 91人人妻人人操| 九九偷拍| 怕怕怕视频| 日韩在线视频中文字幕码无| 人人草人人爱| 97精品人妻一区二区三区香蕉农| 99精品在线观看视频| 国产乱伦网站| 无码熟妇人妻无码AV在线天堂 | 久久久一区二区| 精品久久免费一区二区三区| AV一区二区三区四区| 丝袜美女足交| 一本色道久久无码人妻精品69 | 日韩人妻无码一区二区三区七区 | 97人妻精品黄网站| 日本国产视频|