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

分享 一些 Vue3 相關(guān)的實用技巧,也許你可能還不知道

共 5455字,需瀏覽 11分鐘

 ·

2021-12-24 20:44

作者:月夕 (已獲轉(zhuǎn)載授權(quán))

鏈接:https://juejin.cn/post/7005880217684148231

演示代碼使用 Vue3 + ts + Vite 編寫,但是也會列出適用于 Vue2 的優(yōu)化技巧,如果某個優(yōu)化只適用于 Vue3 或者 Vue2,我會在標題中標出來。

一、代碼優(yōu)化

v-for 中使用 key

使用?v-for?更新已渲染的元素列表時,默認用就地復(fù)用策略;列表數(shù)據(jù)修改的時候,他會根據(jù)?key?值去判斷某個值是否修改,如果修改,則重新渲染這一項,否則復(fù)用之前的元素;

使用key的注意事項:

  • 不要使用可能重復(fù)的或者可能變化?key?值(控制臺也會給出提醒)
  • 如果數(shù)組中的數(shù)據(jù)有狀態(tài)需要維持時(例如輸入框),不要使用數(shù)組的?index?作為?key?值,因為如果在數(shù)組中插入或者移除一個元素時,其后面的元素 index 將會變化,這回讓vue進行原地復(fù)用時錯誤的綁定狀態(tài)。
  • 如果數(shù)組中沒有唯一的 key值可用,且數(shù)組更新時不是全量更新而是采用類似push,splice來插入或者移除數(shù)據(jù)時,可以考慮對其添加一個 key 字段,值為 Symbol() 即可保證唯一。

何時使用何種key?

這是一個非常有考究的問題,首先你要知道 vue 中的?原地復(fù)用?(大概就是?虛擬dom?變化時,兩個?虛擬dom節(jié)點?的?key如果一樣就不會重新創(chuàng)建節(jié)點,而是修改原來的節(jié)點)

當我們渲染的數(shù)據(jù)不需要保持狀態(tài)時,例如常見的單純的表格分頁渲染(不包含輸入,只是展示)、下拉加載更多等場景,那么使用?index?作為?key?再好不過,因為進入下一頁或者上一頁時就會原地復(fù)用之前的節(jié)點,而不是重新創(chuàng)建,如果使用唯一的?id?作為?key?反而會重新創(chuàng)建dom,性能相對較低。

此外使用?index?作為?key?我還應(yīng)該要盡量避免對數(shù)組的中間進行 增加/刪除 等會影響后面元素key變化的操作。這會讓 vue 認為后面所有元素都發(fā)生了變化,導(dǎo)致多余的對比和原地復(fù)用。

所以使用 index 作為 key 需要滿足:

  1. 數(shù)據(jù)沒有獨立的狀態(tài)
  2. 數(shù)據(jù)不會進行 增加/刪除 等會影響后面元素key變化的操作

哪何時使用 id 作為 key 呢?

對于大多數(shù)數(shù)據(jù)的?id?都是唯一的,這無疑的一個?key?的優(yōu)選答案。對于任何大多數(shù)情況使用?id?作為?key?都不會出現(xiàn)上面?bug。但是如果你需要考慮性能問題,那就就要思考是否應(yīng)該使用原地復(fù)用了。

同樣是上面的分頁數(shù)據(jù)展示,如果使用?id?作為?key?,可想而知每一頁的每一條數(shù)據(jù)?id?都是不一樣的,所以當換頁時兩顆?虛擬DOM樹?的節(jié)點的?key?完全不一致,vue?就會移除原來的節(jié)點然后創(chuàng)建新的節(jié)點??上攵蕰拥拖隆5撬灿兴膬?yōu)點。唯一的?key?可以幫助?diff?更加精確的為我們綁定狀態(tài),這尤其適合數(shù)據(jù)有獨立的狀態(tài)的場景,例如帶輸入框或者單選框的列表數(shù)據(jù)。

所以何時使用?id?作為?key?只有一點:

  1. 無法使用?index?作為?key?的時候

v-if/v-else-if/v-else 中使用 key

可能很多人都會忽略這個點

原因:默認情況下,Vue 會盡可能高效的更新 DOM。這意味著其在相同類型的元素之間切換時,會修補已存在的元素,而不是將舊的元素移除然后在同一位置添加一個新元素。如果本不相同的元素被識別為相同,則會出現(xiàn)意料之外的副作用。

如果只有一個 v-if ,沒有 v-else 或者 v-if-else的話,就沒有必要加 key 了

相對于 v-for 的 key, v-if/v-else-if/v-else 中的 key 相對簡單,我們可以直接寫入固定的字符串或者數(shù)組即可

??<transition>
????<button
??????v-if="isEditing"
??????v-on:click="isEditing?=?false"
????>

??????Save
????button>
????<button
??????v-else
??????v-on:click="isEditing?=?true"
????>

??????Edit
????button>
??transition>
.v-enter-active,?.v-leave-active?{
??transition:?all?1s;
}
.v-enter,?.v-leave-to?{
??opacity:?0;
??transform:?translateY(30px);
}
.v-leave-active?{
??position:?absolute;
}

例如對于上面的代碼, 你會發(fā)現(xiàn)雖然對 button 添加了 過渡效果, 但是如果不添加 key 切換時是無法觸發(fā)過渡的

v-for 和 v-if 不要一起使用(Vue2)

此優(yōu)化技巧僅限于Vue2,Vue3 中對 v-for 和 v-if 的優(yōu)先級做了調(diào)整

這個大家都知道

永遠不要把?v-if?和?v-for?同時用在同一個元素上。?引至?Vue2.x風(fēng)格指南[1]

原因是?v-for?的 優(yōu)先級高于?v-if,所以當它們使用再同一個標簽上是,每一個渲染都會先循環(huán)再進行條件判斷

注意:?Vue3 中?v-if?優(yōu)先級高于?v-for,所以當?v-for?和?v-if?一起使用時效果類似于?Vue2?中把?v-if?上提的效果

例如下面這段代碼在?Vue2?中是不被推薦的,Vue?也會給出對應(yīng)的警告

<ul>
??<li?v-for="user?in?users"?v-if="user.active">
????{{?user.name?}}
??li>
ul>

我們應(yīng)該盡量將?v-if?移動到上級 或者 使用 計算屬性來處理數(shù)據(jù)

<ul?v-if="active">
??<li?v-for="user?in?users">
????{{?user.name?}}
??li>
ul>

如果你不想讓循環(huán)的內(nèi)容多出一個無需有的上級容器,那么你可以選擇使用?template?來作為其父元素,template?不會被瀏覽器渲染為?DOM?節(jié)點

如果我想要判斷遍歷對象里面每一項的內(nèi)容來選擇渲染的數(shù)據(jù)的話,可以使用?computed?來對遍歷對象進行過濾

//?js
let?usersActive?=?computed(()=>users.filter(user?=>?user.active))

//?template
<ul>
????<li?v-for="user?in?usersActive">
??????{{?user.name?}}
????li>
ul>

合理的選擇 v-if 和 v-show

v-if?和?v-show?的區(qū)別相比大家都非常熟悉了;v-if?通過直接操作 DOM 的刪除和添加來控制元素的顯示和隱藏;v-show?是通過控制 DOM 的?display?CSS熟悉來控制元素的顯示和隱藏

由于對 DOM 的 添加/刪除 操作性能遠遠低于操作 DOM 的 CSS 屬性

所以當元素需要頻繁的 顯示/隱藏 變化時,我們使用?v-show?來提高性能。

當元素不需要頻繁的 顯示/隱藏 變化時,我們通過?v-if?來移除 DOM 可以節(jié)約掉瀏覽器渲染這個的一部分DOM需要的資源

使用簡單的 計算屬性

應(yīng)該把復(fù)雜計算屬性分割為盡可能多的更簡單的 property。

  • 易于測試

    當每個計算屬性都包含一個非常簡單且很少依賴的表達式時,撰寫測試以確保其正確工作就會更加容易。

  • 易于閱讀

    簡化計算屬性要求你為每一個值都起一個描述性的名稱,即便它不可復(fù)用。這使得其他開發(fā)者 (以及未來的你) 更容易專注在他們關(guān)心的代碼上并搞清楚發(fā)生了什么。

  • 更好的“擁抱變化”

    任何能夠命名的值都可能用在視圖上。舉個例子,我們可能打算展示一個信息,告訴用戶他們存了多少錢;也可能打算計算稅費,但是可能會分開展現(xiàn),而不是作為總價的一部分。

    小的、專注的計算屬性減少了信息使用時的假設(shè)性限制,所以需求變更時也用不著那么多重構(gòu)了。

引至?Vue2風(fēng)格指南[2]

computed 大家后很熟悉, 它會在其表達式中依賴的響應(yīng)式數(shù)據(jù)發(fā)送變化時重新計算。如果我們在一個計算屬性中書寫了比較復(fù)雜的表達式,那么其依賴的響應(yīng)式數(shù)據(jù)也任意變得更多。當其中任何一個依賴項變化時整個表達式都需要重新計算

let?price?=?computed(()=>{
??let?basePrice?=?manufactureCost?/?(1?-?profitMargin)
??return?(
??????basePrice?-
??????basePrice?*?(discountPercent?||?0)
??)
})

當 manufactureCost、profitMargin、discountPercent 中任何一個變化時都會重新計算整個 price。

但是如果我們改成下面這樣

let?basePrice?=?computed(()?=>?manufactureCost?/?(1?-?profitMargin))
let?discount?=?computed(()?=>?basePrice?*?(discountPercent?||?0))
let?finalPrice?=?computed(()?=>?basePrice?-?discount)

如果當 discountPercent 變化時,只會 重新計算 discount 和 finalPrice,由于?computed?的緩存特性,不會重新計算 basePrice

functional 函數(shù)式組件(Vue2)

注意,這僅僅在 Vue2 中被作為一種優(yōu)化手段,在 3.x 中,有狀態(tài)組件和函數(shù)式組件之間的性能差異已經(jīng)大大減少,并且在大多數(shù)用例中是微不足道的。因此,在 SFCs 上使用?functional?的開發(fā)人員的遷移路徑是刪除該 attribute,并將?props?的所有引用重命名為?$props,將?attrs?重命名為?$attrs。

優(yōu)化前

<template>
????<div?class="cell">
????????<div?v-if="value"?class="on">div>
????????<section?v-else?class="off">section>
????div>
template>

<script>
export?default?{
????props:?['value'],
}
script>

優(yōu)化后

<template?functional>
????<div?class="cell">
????????<div?v-if="props.value"?class="on">div>
????????<section?v-else?class="off">section>
????div>
template>

<script>
export?default?{
????props:?['value'],
}
script>
  • 沒有this(沒有實例)
  • 沒有響應(yīng)式數(shù)據(jù)

拆分組件

什么?你寫的一個vue文件有一千多行代碼???

合理的拆分組件不僅僅可以優(yōu)化性能,還能夠讓代碼更清晰可讀。單一功能原則嘛

源自?slides.com/akryum/vuec…[3]

優(yōu)化前

<template>
??<div?:style="{?opacity:?number?/?300?}">
????<div>{{?heavy()?}}div>
??div>
template>

<script>
export?default?{
??props:?['number'],
??methods:?{
????heavy?()?{?/*?HEAVY?TASK?*/?}
??}
}
script>

優(yōu)化后

<template>
??<div?:style="{?opacity:?number?/?300?}">
????<ChildComp/>
??div>
template>

<script>
export?default?{
??props:?['number'],
??components:?{
????ChildComp:?{
??????methods:?{
????????heavy?()?{?/*?HEAVY?TASK?*/?}
??????},
??????render?(h)?{
????????return?h('div',?this.heavy())
??????}
????}
??}
}
script>

由于 Vue 的更新是組件粒度的,雖然每一幀都通過數(shù)據(jù)修改導(dǎo)致了父組件的重新渲染,但是?ChildComp?卻不會重新渲染,因為它的內(nèi)部也沒有任何響應(yīng)式數(shù)據(jù)的變化。所以優(yōu)化后的組件不會在每次渲染都執(zhí)行耗時任務(wù)

使用局部變量

優(yōu)化前

<template>
??<div?:style="{?opacity:?start?/?300?}">{{?result?}}div>
template>

<script>
import?{?heavy?}?from?'@/utils'

export?default?{
??props:?['start'],
??computed:?{
????base?()?{?return?42?},
????result?()?{
??????let?result?=?this.start
??????for?(let?i?=?0;?i?1000
;?i++)?{
????????result?+=?heavy(this.base)
??????}
??????return?result
????}
??}
}
script>

優(yōu)化后

<template>
??<div?:style="{?opacity:?start?/?300?}">
????{{?result?}}div>
template>

<script>
import?{?heavy?}?from?'@/utils'

export?default?{
??props:?['start'],
??computed:?{
????base?()?{?return?42?},
????result?()?{
??????const?base?=?this.base
??????let?result?=?this.start
??????for?(let?i?=?0;?i?1000
;?i++)?{
????????result?+=?heavy(base)
??????}
??????return?result
????}
??}
}
script>

這里主要是優(yōu)化前后的組件的計算屬性?result?的實現(xiàn)差異,優(yōu)化前的組件多次在計算過程中訪問?this.base,而優(yōu)化后的組件會在計算前先用局部變量?base,緩存?this.base,后面直接訪問?base。

那么為啥這個差異會造成性能上的差異呢,原因是你每次訪問?this.base?的時候,由于?this.base?是一個響應(yīng)式對象,所以會觸發(fā)它的?getter,進而會執(zhí)行依賴收集相關(guān)邏輯代碼。類似的邏輯執(zhí)行多了,像示例這樣,幾百次循環(huán)更新幾百個組件,每個組件觸發(fā)?computed?重新計算,然后又多次執(zhí)行依賴收集相關(guān)邏輯,性能自然就下降了。

從需求上來說,this.base?執(zhí)行一次依賴收集就夠了,把它的?getter?求值結(jié)果返回給局部變量?base,后續(xù)再次訪問?base?的時候就不會觸發(fā)?getter,也不會走依賴收集的邏輯了,性能自然就得到了提升。

引至?揭秘 Vue.js 九個性能優(yōu)化技巧[4]

使用 KeepAlive

在一些渲染成本比較高的組件需要被經(jīng)常切換時,可以使用?keep-alive?來緩存這個組件

而在使用?keep-alive?后,被?keep-alive?包裹的組件在經(jīng)過第一次渲染后,的?vnode?以及 DOM 都會被緩存起來,然后再下一次再次渲染該組件的時候,直接從緩存中拿到對應(yīng)的?vnode?和 DOM,然后渲染,并不需要再走一次組件初始化,render?和?patch?等一系列流程,減少了?script?的執(zhí)行時間,性能更好。

注意:?濫用 keep-alive 只會讓你的應(yīng)用變得更加卡頓,因為他會長期占用較大的內(nèi)存

事件的銷毀

當一個組件被銷毀時,我們應(yīng)該清除組件中添加的 全局事件 和 定時器 等來防止內(nèi)存泄漏

Vue3 的 HOOK 可以讓我們將事件的聲明和銷毀寫在一起,更加可讀

function?scrollFun(){?/*?...?*/}
document.addEventListener("scroll",?scrollFun)

onBeforeUnmount(()=>{
??document.removeEventListener("scroll",?scrollFun)
})

Vue2 依然可以通過?$once?來做到這樣的效果,當然你也可以在?optionsAPI?beforeDestroy 中銷毀事件,但是我更加推薦前者的寫法,因為后者會讓相同功能的代碼更分散

function?scrollFun(){?/*?...?*/}
document.addEventListener("scroll",?scrollFun)

this.$once('hook:beforeDestroy',?()=>{
??document.removeEventListener("scroll",?scrollFun)
})
function?scrollFun(){?/*?...?*/}

export?default?{
??created()?{
????document.addEventListener("scroll",?scrollFun)
??},
??beforeDestroy(){
????document.removeEventListener("scroll",?scrollFun)
??}
}

圖片加載

圖片懶加載:適用于頁面上有較多圖片且并不是所有圖片都在一屏中展示的情況,vue-lazyload 插件給我們提供了一個很方便的圖片懶加載指令 v-lazy

但是并不是所有圖片都適合使用懶加載,例如 banner、相冊等 更加推薦使用圖片預(yù)加載技術(shù),將當前展示圖片的前一張和后一張優(yōu)先下載。

采用合理的數(shù)據(jù)處理算法

這個相對比較考驗 數(shù)據(jù)結(jié)構(gòu)和算法 的功底

例如一個將數(shù)組轉(zhuǎn)化為多級結(jié)構(gòu)的方法

/**
?*?數(shù)組轉(zhuǎn)樹形結(jié)構(gòu),時間復(fù)雜度O(n)
?*?@param?list?數(shù)組
?*?@param?idKey?元素id鍵
?*?@param?parIdKey?元素父id鍵
?*?@param?parId?第一級根節(jié)點的父id值
?*?@return?{[]}
?*/

function?listToTree?(list,idKey,parIdKey,parId)?{
????let?map?=?{};
????let?result?=?[];
????let?len?=?list.length;

????//?構(gòu)建map
????for?(let?i?=?0;?i?????????//將數(shù)組中數(shù)據(jù)轉(zhuǎn)為鍵值對結(jié)構(gòu)?(這里的數(shù)組和obj會相互引用,這是算法實現(xiàn)的重點)
????????map[list[i][idKey]]?=?list[i];
????}

????//?構(gòu)建樹形數(shù)組
????for(let?i=0;?i?????????let?itemParId?=?list[i][parIdKey];
????????//?頂級節(jié)點
????????if(itemParId?===?parId)?{
????????????result.push(list[i]);
????????????continue;
????????}
????????//?孤兒節(jié)點,舍棄(不存在其父節(jié)點)
????????if(!map[itemParId]){
????????????continue;
????????}
????????//?將當前節(jié)點插入到父節(jié)點的children中(由于是引用數(shù)據(jù)類型,obj中對于節(jié)點變化,result中對應(yīng)節(jié)點會跟著變化)
????????if(map[itemParId].children)?{
????????????map[itemParId].children.push(list[i]);
????????}?else?{
????????????map[itemParId].children?=?[list[i]];
????????}
????}
????return?result;
}

其他

除了上面說的方法以外還有很多優(yōu)化技巧,只是我在項目并不是太常用??

  • 凍結(jié)對象(避免不需要響應(yīng)式的數(shù)據(jù)變成響應(yīng)式)
  • 長列表渲染-分批渲染
  • 長列表渲染-動態(tài)渲染(vue-virtual-scroller[5]
  • ...

二、 首屏/體積優(yōu)化

我在項目中關(guān)于首屏優(yōu)化主要有以下幾個優(yōu)化方向

  • 體積
  • 代碼分割
  • 網(wǎng)絡(luò)

體積優(yōu)化

  • 壓縮打包代碼:?webpack?和?vite?的生產(chǎn)環(huán)境打包默認就會壓縮你的代碼,這個一般不需要特殊處理,webpack?也可以通過對應(yīng)的壓縮插件手動實現(xiàn)

  • 取消?source-map:?可以查看你的打包產(chǎn)物中是否有 .map 文件,如果有你可以將?source-map?的值設(shè)置為false或者空來關(guān)閉代碼映射(這個占用的體積是真的大)

  • 打包啟用?gizp?壓縮:?這個需要服務(wù)器也開啟允許?gizp?傳輸,不然啟用了也沒啥用(?webpack?有對應(yīng)的?gzip?壓縮插件,不太版本的?webpack?壓縮插件可能不同,建議先到官網(wǎng)查詢)

代碼分割

代碼分割的作用的將打包產(chǎn)物分割為一個一個的小產(chǎn)物,其依賴?esModule。所以當你使用?import()?函數(shù)來導(dǎo)入一個文件或者依賴,那么這個文件或者依賴就會被單獨打包為一個小產(chǎn)物。路由懶加載?和?異步組件?都是使用這個原理。

  • 路由懶加載
  • 異步組件

對于 UI庫 我一般不會使用按需加載組件,而是比較喜歡 CDN 引入的方式來優(yōu)化。

網(wǎng)絡(luò)

CDN:?首先就是上面的說的 CDN 引入把,開發(fā)階段使用本地庫,通過配置?外部擴展(Externals)?打包時來排除這些依賴。然后在 html 文件中通過 CDN 的方式來引入它們

Server Push:?HTTP2已經(jīng)相對成熟了;經(jīng)過上面的 CDN 引入,我們可以對網(wǎng)站使用 HTTP2 的 Server Push 功能來讓瀏覽器提前加載 這些 CDN 和 其他文件。

開啟 gzip:?這個上面已經(jīng)說過了,其原理就是當客戶端和服務(wù)端都支持 gzip 傳輸時,服務(wù)端會優(yōu)先發(fā)送經(jīng)過 gzip 壓縮過的文件,然后客戶端接收到在進行解壓。

開啟緩存:?一般我使用的是協(xié)商緩存,但是這并不適用于所有情況,例如對于使用了 Server Push 的文件,就不能隨意的修改其文件名。所以我一般還會將生產(chǎn)的主要文件固定文件名

參考資料

[1]

https://cn.vuejs.org/v2/style-guide/#%E9%81%BF%E5%85%8D-v-if-%E5%92%8C-v-for-%E7%94%A8%E5%9C%A8%E4%B8%80%E8%B5%B7%E5%BF%85%E8%A6%81:?https://link.juejin.cn?target=https%3A%2F%2Fcn.vuejs.org%2Fv2%2Fstyle-guide%2F%23%25E9%2581%25BF%25E5%2585%258D-v-if-%25E5%2592%258C-v-for-%25E7%2594%25A8%25E5%259C%25A8%25E4%25B8%2580%25E8%25B5%25B7%25E5%25BF%2585%25E8%25A6%2581

[2]

https://cn.vuejs.org/v2/style-guide/#%E7%AE%80%E5%8D%95%E7%9A%84%E8%AE%A1%E7%AE%97%E5%B1%9E%E6%80%A7%E5%BC%BA%E7%83%88%E6%8E%A8%E8%8D%90:?https://link.juejin.cn?target=https%3A%2F%2Fcn.vuejs.org%2Fv2%2Fstyle-guide%2F%23%25E7%25AE%2580%25E5%258D%2595%25E7%259A%2584%25E8%25AE%25A1%25E7%25AE%2597%25E5%25B1%259E%25E6%2580%25A7%25E5%25BC%25BA%25E7%2583%2588%25E6%258E%25A8%25E8%258D%2590

[3]

https://slides.com/akryum/vueconfus-2019#/4/0/3:?https://link.juejin.cn?target=https%3A%2F%2Fslides.com%2Fakryum%2Fvueconfus-2019%23%2F4%2F0%2F3

[4]

https://juejin.cn/post/6922641008106668045:?https://juejin.cn/post/6922641008106668045

[5]

https://github.com/Akryum/vue-virtual-scroller:?https://link.juejin.cn?target=https%3A%2F%2Fgithub.com%2FAkryum%2Fvue-virtual-scroller

瀏覽 63
點贊
評論
收藏
分享

手機掃一掃分享

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

手機掃一掃分享

分享
舉報

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

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 国产精品无码在线观看| 91久久久久久久久久久| 亚洲精品电影| 黄色片A片| 日日拍夜夜拍| 欧美一区二区在线视频| 午夜性爱剧场| 亚洲午夜福利一区二区三区| 超碰人人爽| 日日日日日干| 中文无码一区二区三区四区| 特级黄色A片| 91re| 激情五月天婷婷| 插吧插吧网| 91久久久久久| 久久精品亚洲无码| 成人黄色视频网站在线观看 | 成人h在线| 日韩无码A片| 五月婷婷色综合| 免费十无码| 综合精品7799| 久久久91人妻无码精品蜜桃ID| 男人的天堂视频在线观看| 啪啪成人网| 亚洲天堂影院| 操逼逼网| 国产色av| 毛片毛片毛片毛片| 99热99精品| 麻豆视频一区| 人人爱天天做| 精品www| 99热日本| 91九色蝌蚪91POR成人| 亚洲AV无码成人精品区www| 亚洲性爱一区二区三区| 操美女一区二区| gogogo视频在线观看黑人| 日韩综合在线| 亚洲一区视频| 国产一区无码| 中文字幕日韩在线观看| 青青青草视频| 人人色在线| 欧美精产国品一区二区区别| 国产综合网站| 精品无码三级在线观看视频| 国产精品国产三级国产专区53| 色欲av网站| 91无码人妻东京热精品一区| 天天干天天操天天拍| 操B视频在线免费观看| 色五月国产| VA电影| 操逼91小视频| 亚洲三级视频| 亚洲成人在线| 99热在线播放| 国产三级自拍| 日韩一级在线观看| 91视频在线观看| 国产无码免费| 大香蕉一区| 一级无码毛片| 色婷婷精品国产一区二区三区 | 黄色片基地| 西西4444WWW无视频| 中韩一区二区| 4080yy午夜理论片成人| 国产精品毛片A√一区| 天堂成人在线视频| 亚洲无码高清在线观看视频| 久久婷视频| 日本三级片在线动| 神马午夜av| 四虎影院人妻| 最美孕交vivoestv另类| 国产熟女一区二区三区五月婷| 奶大丰满一乱一视频一区二区三区在 | 日日爱网| 国产又粗又大又爽| 欧美成人综合色| 亚洲熟妇在线观看| 久久久永久免费视频| 免费国产黄色视频网站| 青青草91在线| 五月婷在线视频| 中文字幕无码观看| jlzzzjlzzz国产免费观看| 人与禽一级A片一区二区三区| 五月激情丁香婷婷| 91黑人丨人妻丨国产丨| 一级在线播放| 一区二区三区四区五区无码| 欧美婷婷综合| 青草视频在线免费观看| 欧美高潮喷水| 国产成人大片| 嫩草在线观看| 国产精品久久久久毛片SUV| 香蕉综合网| 成人无码精品| 在线观看欧美日韩视频| 五月六月丁香激情视频| 亚洲国精产品| 青青草在线观看免费| 大香蕉综合闲人| 俺也去网av| 成人免费视频一区二区三区| 日韩一级毛| 黄色视频电影| 亚洲精品久久久久avwww潮水| 成人激情综合| 91在线看片| 婷婷视频在线| 嫩草在线精品| 超碰在线免费| 四虎影院中文字幕| 国产精品51麻豆cm传媒| 亚洲国产高清国产精品| 婷婷情色| 无码人妻精品一区二区蜜桃漫画| 国产三级小视频| av岛国免费| 欧美第一区| 超碰91在线观看| 久久蜜桃| 蜜挑视频一区二区三区| 色av网| 亚洲激情综合视频| 男女啪啪啪网站| 色图15p| 超碰人人操在线| 一本一道伊人99久久综| 韩国高清无码视频| 成人做爰A片一区二区| 国产香蕉视频| 一级无码A片| 丁香五月激情啪啪| 色777网站| 天天干无码| 婷婷五月综合在线| 4438成人网| 久久精品在线视频| 色图在线观看| 国产无码乱伦内射| 亚洲中文字幕日韩精品| 成人自拍在线| 中文字幕永久在线观看| 亚洲精品午夜精品| 无码一区二区三区四区五区| 日本三级片免费观看| 中文字幕免费中文| 美女黄视频网站| 99久久影院| 欧美人妻精品| 污网址| 国产一区二区三区18| 欧美熟女性爱视频| 久操网在线视频| 日韩人妻无码电影| 色汉综合| 香蕉伊人在线| 日韩中文字幕在线观看| 久草视频免费在线播放| 亚洲高清无码视频在线播放| 色欲五月天| 欧美精品区| 高清无码免费在线| 777免费观看成人电影视频| 黄色片视频日本| 久久97人妻AⅤ无码一区| 一级a一级a爰片免费| 小黄片免费在线观看| 久久思思热| 婷婷草逼| 91官网在线观看| 精品国产A片| 日本a在线观看| 久久国内视频| 黑人又粗又大XXXXOO| 影音先锋婷婷| 国产一级a一片成人AV| 牛牛影视av老牛影视av| 日批视频网站| 日韩无码砖区| 中文字幕日韩有码| 欧美一级特黄AAAAAA片| 精品人妻一区二区免费蜜桃视频| 亚洲天天干| 天天爽天天爽夜夜爽| 久久人体视频| 成年人视频在线免费观看| 亚洲视频免费看| 日本少妇午夜福利| 亚洲福利网| 亚洲欧美不卡| 亚洲AV资源| 日无码| 99久99| 久久夜夜操| 欧美性爱视频在线观看| 欧美一区二区在线观看| 日操操| 操婷婷逼| 国产精品乱子伦视频一区二区 | 亚洲影院第一页| 3p视频网站| 日韩一二三四区| 91av电影| 吴梦梦一区二区在线观看| 欧美高潮| 亚洲AV无码乱码精| 久热精品视频| 黄色网页免费观看| 在线观看成人18| 激情AV| AV日逼网| 黑人毛片91久久久久久| 淫色淫香综合网| 日韩无码中文字幕| 国产欧美在线观看不卡| 中文字幕巨肉乱码中文乱码| 少妇一级| 日韩美在线视频| 在线视频内射| 无码人妻精品一区二区三区蜜桃91| 成人做爰A片AAA毛真人| 91精品人妻人人爽| 免费欧美黄色| 国产成人免费观看| 成人性生活A级毛片网站| 激情五月天在线视频| 高清无码操逼视频| 国内精品久久久久久久久久变脸 | 可以免费观看的AV| 亚洲色777| 亚洲高清无码视频大全| 日韩亚洲视频| av免费网站| 亚洲AV永久无码精品国产精| 国产免费性爱视频| 可以免费看av的网站| 日韩欧美成人视频| 国产情侣在线视频| 成人无码www在线看免费| 色大香蕉伊人| 青娱乐91视频| 国产中文字幕视频| 四色五月婷婷| AV在线一区二区三区| 国产精品内射婷婷一级二| av免费观看网站| 神马午夜福利影院| 玖玖资源在线| 色五月天导航| 欧美口爆视频| 黄色大片免费看| 三级乱伦视频| 国产视频福利在线| 欧美激情网站| 九久热| 日本黄在线观看| 天天躁狠狠躁夜躁2024| 羽月希奶水饱胀在线播放| 国产AⅤ爽aV久久久久成人| 欧美综合亚洲图片综合区| 日韩久久婷婷| 正在播放国产精品| 成人无码小电影| 男女黄网站| 一级片A片| 精品国产免费无码久久噜噜噜AV| 影音先锋色先锋| 亚洲日韩精品秘在线观看| www.jiujiujiu| 91在线无码精品秘国产| 亚洲丝袜不卡| 亚洲精品18禁| 久久丝袜| 欧美一级性爱在线观看| 最新色站| 最新国产激情视频| 成人精品秘免费波多野结衣| 亚洲欧美国产精品专区久久| 国产乱码一区二区三区| 亚洲特级毛片| 欧美国产日韩欧美亚洲国产| 99久久久无码国产精品性波多| 成人小视频在线观看| 欧美一级片免费看| 超碰免费人妻| 在线观看一区| 午夜乱轮| 日韩欧美中文字幕在线观看| 国产精品伊人| 手机看片1204| 五月天激情网址| 欧美性爱怡红院| 超碰人人操| 囯产精品一区二区三区AV做线| 婷婷五月天综合网| 婷婷五月天成人社区| 操屄视频在线| 国产欧美精品在线观看| 国产老女人操逼| 久操大香蕉| 特写毛茸茸BBwBBwBBw | 天天日夜夜艹| 欧美综合视频在线观看| 777视频在线观看| 欧洲天堂在线视频网站| 久久免费视频6| 天堂视频在线| 免费尻屄视频| 高清无码人妻| 99re这里只有精品6| 日皮视频免费看| 婷婷丁香五月花| 欧美日韩一区二区在线观看| 肏逼网站在线观看| 欧美成人毛片一级A片| 内射午夜福利在线免费观看视频 | 日韩不卡视频在线| 操老女人视频| 成人免费在线网站| 婷婷天堂| 制服丝袜在线视频| 男人的天堂在线视频| 北京熟妇搡BBBB搡BBBB电影| 一区二区三区无码在线观看| 欧美色图1| 无码免费视频在线观看| av天堂电影网| 国产高清无码一区二区三区| 亚洲无码一区二区在线| 影音先锋在线视频| 国产一级电影网站| 91色在线| 欧美在线观看一区二区| 91成人在线免费视频| TokyoKot大交乱无码| 亚人精品中文字幕在线观看| 99精品视频北条麻妃国产版 | 国产美女高潮视频| 999高清无码| 日韩一级片在线播放| 日韩免费福利视频| 水蜜桃视频在线| 一区二区在线不卡| 丁香五月婷婷五月天| 懂色在线精品分类视频| 欧美婷婷综合| 国产粉嫩小泬白浆18p| 特级西西人体WWWWW| 五月天婷婷国产| 青娱乐国产视频| 国产亚洲99久久精品| 黄色成人网站在线播放| 亲子乱AV一区二区| 蜜桃BBwBBWBBwBBw| 国产精品久久7777777精品无码 | 亚洲都市激情| 8x8x黄色| 中字幕视频在线永久在线观看免费| 日韩欧美午夜成人无码| 免费看A片视频| 天干天干天夜夜爽| 亚洲国产精品VA在线看黑人| 很很撸| 99re在线观看观看这里只有精品| 日韩AV在线免费观看| 日韩中文字幕精品| 中文字幕三级片在线观看| 永久免费无码中文字幕| 永久免费不卡在线观看黄网站| 无码成人AV| 在线看一区二区三区| 久久国产劲爆∧v内射| 91人人妻人人澡人人爽人人精品 | 爱搞搞就要搞| 97色色婷婷| 日本一区二区三| 日韩日日日| 东京热网站在线观看| 亚洲丁香五月| 日韩一区二区无码视频| 日韩欧美激情| 精品人伦一区二区三区| 九色九一| 美女天天肏| 成人一级黄色电影| 久久激情网| 伊人综合影院| 亚洲精品中文字幕在线| 大香蕉久久久久久| 宅男噜| 欧美综合国产| 久久H| 特黄AAAAAAAA片视频| 日本在线视频一区二区| 成年人免费黄色视频| 亚洲无码成人网站| 91人妻人人澡人人添人人爽| 91丝袜一区二区| 美女操逼网站| 成人精品亚洲人成在线| 亚洲www.| 亚洲在线无码| 亚洲激情性爱| 中文字幕精品亚洲熟女| 黄色片视频日韩| 国产色情性黄片Av网站| www.黄色电影| 国产黄色a片| 日韩一级黄色| 91人人妻人人操| 神马午夜av| 亚洲AV无码成人精品区| 51妺妺嘿嘿午夜成人| 欧美综合网| 91视频在线免费看| 夜夜天天人人| 在线中文字幕网站| 99久久久精品| 色五月婷婷视频| 秋霞A片| 综合激情网站| 亚洲美女视频在线| 亚洲资源网| 色哟哟在线观看| 4080yy午夜理论片成人| 日本一级黄色电影| 国产精品你懂得| 男女网站在线观看| 丁香成人五月天| 2025无码视频| 蝌蚪九色啦403| 春色av| 风流老熟女一区二区三区| 黃色A片一級二級三級免費久久久 亚洲AV无码第一区二区三区蜜桃 亚洲综合免费观看高清完整版在线 | 亚洲成人高清| 日韩成人精品在线| 亚洲天堂久久久| 欧美成人视频在线观看| 日本A片免费观看| 中文字幕亚洲人妻| 超碰超碰| 怮交小拗女小嫩苞视频| 欧美成人A片AAA片在线播放| 国产精品大香蕉| 日韩国产一区二区| 五月天婷婷无码| 天堂网址激情网址| 在线免费观看黄色片| 日韩高清欧美| 国产久久免费视频| 日本黄色视频在线播放| 天天夜夜操| 黄色激情av| 玩弄小怮女在线观看| 亚洲无码观看视频| 国产又爽又黄网站免费观看| 一纹A片免费观看| 一级在线| 精品日逼| 在线观看亚州| 波多野结衣AV无码| 三级免费| 天天草av| 日韩成人黄色视频| 久久人妻熟女中文字幕av蜜芽| 狠狠插狠狠操| 国产高清AV在线| 日韩综合色视频导航| 免费精品视频| 五月婷婷网| 亚洲香蕉国产| 亚洲有码中文字幕| 天天综合天天做天天综合| 亚洲1234区| 国产三级片网址| 亚洲高清无码视频在线| 丁香久久婷婷| 日韩A片免费| 国产十八岁在线观看| 亚洲性爱视频| 成人网站中文字幕| 久久人搡人人玩人妻精AV香蕉| 亚洲精品视频在线播放| 另类欧美色图| 天天逼网| 六月丁香五月天| 嫩草亚洲小泬久久夂| 你懂的网站在线观看| 在线成人自拍| 一级操逼视频免费观看| 夜夜操免费视频| 黄色大片免费在线观看| 欧美激情国产精品| 日本肏逼视频| 怡春院免费视频| 精品乱子伦一区二区三区免费播放 | 成人国产片女人爽到高潮| 国产黄色A片| 成人动漫一区二区| 国产精品秘ThePorn| 亚洲无码在线高清| 黄色视频免费在线观看| 无码乱伦视频| 自拍偷拍15p| ww成人| 日韩黄色A级片| 国产免费无码一区二区| 中文字幕人成人乱码亚洲电影| 久久婷婷成人综合色怡春院| 蜜臀久久99精品久久久久久宅男 | 婷婷成人视频| 91精品国产乱码久久久| 在线观看欧美日韩视频| 国产特级毛片| 欧美黄色免费网站| 一区二区在线免费观看| 精品操逼视频| 神马午夜av| 国产精品97| 一级无码高清| 欧洲精品视频在线观看| 久久激情av| 日韩黄色A片| 亚洲无码视频在线| 色哟哟av| 亚洲午夜在线观看| 国产又爽又黄免费| 免费无码国产| 西西人体大胆ww4444图片| 青春草在线视频| 欧美一级婬片A片免费软件| 操人视频在线观看| 日本韩国欧美18| 日韩AV成人无码久久电影| 人妻丝袜中出北条麻妃| 亚洲国产精品视频| 成人黄网免费观看视频| 91国产在线播放| 国产欧美成人在线| 在线观看不卡av| 欧亚精品视频| 污网站在线观看| www.911国产| 91蜜桃网| 另类欧美色图| 翔田千里无码AV在线观看| 好逼天天操| 欧美特级AAA| 99偷拍| 久久精品视频在线| www.亚洲精品| 欧美成人黄色小说| 日韩亚洲在线观看| 亚洲AV无码乱码国产精品| 中文字幕无码A片久久| 黑人vs亚洲人在线播放| 国产69精品久久久久久久久久久久 | 亚洲欧美日本在线观看| 亚洲区中文字幕| 午夜人妻AV| 西西人体444www| 欧美一区电影| 精品久久国产| 五月丁香在线视频| A一级黄色片| 国产美女免费视频| 超碰在线日韩| 久久91久久久久麻豆精品| 亚洲无码不卡| 大香蕉操逼网| 黄色视频免费播放| 香蕉视频毛片| 九色91PORNY国产| 国产又粗又猛又黄又爽无遮挡| 无码不卡视频在线观看| 六月伊人| 人人妻人人澡人人爽人人DVD| 久久成人小电影| 中文在线字幕免费观| 激情五月婷婷综合| 亚洲一区亚洲二区| 一区二区三区小视频| 日韩精品一区二区三区四区| h片在线播放| 国精产品一区二区三区黑人和中国 | jiujiuav| 无码免费一区| 免费看黃色AAAAAA片| 麻豆视频在线观看| 波多野结衣无码在线| 黄色在线免费| 一级a片免费看| 国产成人久久777777黄蓉| 成人精品在线| 五月婷婷成人| 日韩一区二区AV| 永井玛丽亚av无码中出流出| 91在线网站| 日本黄色视频在线播放| 东京热av在线| 午夜天堂精品久久| 天天躁日日躁狠狠| 久久无码在线观看| www黄色片| 波多野结衣视频无码| 强开小嫩苞毛片一二三区| 六月婷婷五月丁香| 无码在线免费观看视频| 国产AV一区二区三区四区| 99九九久久| 欧美色色网站| 国产乱子伦精品免费,| 人人免费操| 无码在线免费播放| 精品久久大香蕉| 免费无码国产| 羞羞涩漫无码免费网站入口| 五月天激情视频| 午夜国产在线观看| 伊人成色| AV天堂亚洲| 操逼网站免费看| 在线视频亚洲| 久久女人视频| 欧美日韩在线免费| 亚洲成人视频免费观看| 欧美一级黃色A片免费看小优视频 无码人妻精品一区二区三千菊电影 | 国产精品色综合| 白天操夜夜操| 69av网站| 国产成人777777精品综合| 大鸡吧操视频| 亚洲第一成人久久网站| 伊人久久五月| 成av人片一区二区三区久久| 91香蕉视频免费| 亚洲AV无码乱码国产精品黑人| 日韩欧美人妻无码精品| 黄色免费视频| 国产真实乱婬A片久久久老牛| 国产又爽又黄视频在线看| 国产A级毛片久久久久久| 亚洲丝袜av| 高清视频一区| 欧美成人一级片| 日日干AV| 久久免费视频6| 日韩无码精品一区二区三区| 自拍偷拍网址| 亚洲中文字幕观看| 特级婬片A片AAA毛片AA做头| 乱子伦国产精品一区二区| 蜜桃视频一区二区三区四区使用方法 | 天天干天天色天天射| 色色网站视频| 中文字幕在线无码观看| 免费在线无码视频| 69乱伦视频| 亚洲阿v天堂| 欧美综合自拍| 日本黄色视频免费| 乱子伦毛片国产| 91色秘乱码一区二区| 国产女人18水真多18精品一级做 | 一级a片免费看| 西西4444WWW大胆无视频| 在线观看高清无码| 欧美猛男的大鷄巴| 韩国日本美国免费毛片| 败火老熟女ThePorn视频| 欧美黄色a片| 蜜臀av一区| 91视频首页| 香蕉视频成人在线观看| 国产乱子伦精品久久| 国产成人午夜高潮毛片| 亚洲AV无码专区在线播放中文| 黄色一级视频网站| 九色PORN视频成人蝌蚪自拍| 亚洲无码不卡视频| 91麻豆影院| 国产欧美日韩在线观看| 国产成人秘免费观看一区二区三区| 中文字幕在线观看免费视频| 操逼视频免费看| 国产一级精品视频| 午夜AV在线播放| 国产一区二区三区四区五区六区七区 | 大肉大捧一进一出免费阅读| 亚洲一线视频| 天天躁夜夜躁av| 大香蕉这里只有精品| 成人中文字幕在线观看| 黄片免费看网站| 中文字幕不卡无码| 日韩欧美一区在线| 人妻av无码| 日皮在线观看| 国产成人精品免高潮在线人与禽一 | 影音先锋男人天堂| 性免费网站| 超碰天堂| 天天干无码| 伊人成年网| 丰满人妻一区二区三区不卡二| 色婷婷狠狠| 青娱乐亚洲精品| 精品国产污污免费网站入口| 91日逼视频| 国产性爱AV| 99精品久久久久久无码| 国产91精品看黄网站在线观看| 五月丁香伊人| 成年人毛片| 加勒比日日综合| 国产欧美一区二区三区国产幕精品 | 亚洲色欲色欲www在线成人网| 成人一级电影| 亚洲午夜福利视频| 好吊视频一区二区三区红桃视频you | 99热综合在线| 91视频国产精品| 天天操b| 亚州成熟少妇视频在线观看| 国产婷婷久久Av免费高清| 波多野结衣高清av久久直播免| 黃色毛片A片AAAA级20| 久久在线| 影音av资源| 夜夜嗨AV一区二区三区| 亚洲欧洲免费视频| 午夜乱伦| 骚视频网站| 琪琪久久| 欧美A在线观看| 欧美久久精品| www.插插插| 亚洲无码免费| 亚洲无码免费视频在线观看| 亚洲AV一级| 久久精品在线播放| 91视频免费播放| 国产一区二区AV| 黄色片免费看| 人人摸人人操人人爽| 婷婷网五月天| 日韩av高清| 日本精品无码a62v在线| 91在线无码| 欧美洲成人网站| 欧美日韩大屌| 国产成人午夜高潮毛片| 国产在线视频一区二区三区| 久久久久综合| 中文字幕免费| 欧美一级电影| 欧美午夜性爱视频| 五月丁香狠狠爱| 午夜无码AV| 操逼网123| 爱爱欧美| 国产无码AV成在线| 国产女主播在线观看| 果冻传媒一区二区三区| 四虎永久在线精品无码| 国产一级免费观看| 亚洲中文第一页| 国产9熟妇视频网站| 尻屄视频在线观看| 三级乱伦86丝袜无码| 亚洲成人在线一区| 在线观看免费一区| 国产精品乱子伦视频一区二区 | 日韩黄色视频在线观看| 97视频精品| 黄色视频免费播放| 久久亚洲天堂| 2025毛片| 肏屄在线观看| 91久热| 国产一区二区三区免费播放| 国产视频一区二区三区四区| www.777熟女人妻| AV乱伦网站| 国产乱妇乱子伦视频免费观看让女人 | 91在线无码精品秘入口国战| 91久久国产| 麻豆91网站| 变态另类av| 欧美一区二区三区成人片在线| 亚洲无码在线播放| 中文字幕在线观看1| 日韩黄色免费网站| 上海熟妇搡BBBB搡BBBB| 青青青草视频| 成人在线观看AV| 中文字幕一区二区三区人妻电影| 大香蕉尹人在线观看| 亚洲无码一二三区| 99在线免费视频| 91艹艹| 精品白浆| 国产三级电影在线观看| 欧美日韩狠狠操在线观看视频| 成人高清在线| 一道本无码在线观看| 人成在线免费视频| 黃色A片一級二級三級免費久久久| 亚洲女同在线| 青青国产在线| 欧美A片在线观看| 成人久久AV| 日韩AV无码成人精品| 高清无码操逼| 人妻精品一卡二卡| 亚洲加勒比久久88色综合| 俺来也俺去也www色官网| 日韩在线毛片| 日韩欧美日本| 综合色色婷婷| 日韩小视频在线观看| 中文字幕无码视频| 婷婷久久久久久| 特级婬片AAAAAAA级| 大香伊人| 中文字幕www一区| 黄色视频网站在线看| 中文字幕在线亚洲| 成人黄色网址| 自拍偷拍亚洲无码| 五月开心激情网| 天堂A片电影网站在线观看| 91在线视频免费播放| 亚洲欧美成人电影| v天堂在线| 丁香花免费高清视频小说完整| 人人爱人人摸人人操| 成人AAA| 操15p| 偷拍视频第一页| 亚洲免费视频在线播放| 国内自拍青青| 人人看人人摸人人草| 国产成人毛片| 另类色| 亚洲色欲av| 成人A片免费| 91香蕉国产成人App| 免费三级毛片| 青娱乐超碰在线| 国产精品无码成人AV电影| 潮喷在线观看| 黄片视频免费在线观看| 欧洲精品在线视频| 丰满人妻一区二区三区免费| 天堂在线| 大香蕉伊人免费| 五月天婷婷久久| 99精品丰满人妻无码一区二区| 三级无码视频在线观看| 一级性爽A√毛片| 另类一区| 中文字幕东京热| 四季AV一区二区夜夜嗨| 免费射精一二三区| 亚洲国产成人无码a在线播放 | 亚洲性爱在线| 51妺妺嘿嘿午夜成人| 2018天天干天天操| 97男人的天堂| 国产精品每日更新| 国产在线小电影| 欧美大胆视频| 色三区| 99热在线免费观看| 日韩加勒比在线| 精品国产一区二区三区久久久蜜月| 久久中文字幕免费| 91九色TS另类国产人妖| 超碰国产在线| 成人亚洲精品一区二区三区| 黄色电影a片| caoporen| 中文字幕无码影院| 操老女人的逼| 少妇二区| 黄色免费观看网站| 国产AV大全| 欧美成a| 亚洲高清AV| 猫咪亚洲AV成人无码电影|