午夜勾魂曲-午夜福利自怕-午夜福利在线观看6080-午夜福利院电影-国产精品毛片AV久久97-国产精品麻豆高潮刺激A片

Vue中使用裝飾器,我是認(rèn)真的

2020-7-7    seo達(dá)人

作為一個(gè)曾經(jīng)的Java coder, 當(dāng)我第一次看到j(luò)s里面的裝飾器(Decorator)的時(shí)候,就馬上想到了Java中的注解,當(dāng)然在實(shí)際原理和功能上面,Java的注解和js的裝飾器還是有很大差別的。本文題目是Vue中使用裝飾器,我是認(rèn)真的,但本文將從裝飾器的概念開(kāi)發(fā)聊起,一起來(lái)看看吧。


通過(guò)本文內(nèi)容,你將學(xué)到以下內(nèi)容:


了解什么是裝飾器

在方法使用裝飾器

在class中使用裝飾器

在Vue中使用裝飾器

本文首發(fā)于公眾號(hào)【前端有的玩】,不想當(dāng)咸魚(yú),想要換工作,關(guān)注公眾號(hào),帶你每日一起刷大廠面試題,關(guān)注 === 大廠offer。

什么是裝飾器

裝飾器是ES2016提出來(lái)的一個(gè)提案,當(dāng)前處于Stage 2階段,關(guān)于裝飾器的體驗(yàn),可以點(diǎn)擊 https://github.com/tc39/proposal-decorators查看詳情。裝飾器是一種與類(lèi)相關(guān)的語(yǔ)法糖,用來(lái)包裝或者修改類(lèi)或者類(lèi)的方法的行為,其實(shí)裝飾器就是設(shè)計(jì)模式中裝飾者模式的一種實(shí)現(xiàn)方式。不過(guò)前面說(shuō)的這些概念太干了,我們用人話來(lái)翻譯一下,舉一個(gè)例子。


在日常開(kāi)發(fā)寫(xiě)bug過(guò)程中,我們經(jīng)常會(huì)用到防抖和節(jié)流,比如像下面這樣


class MyClass {

 follow = debounce(function() {

   console.log('我是子君,關(guān)注我哦')

 }, 100)

}


const myClass = new MyClass()

// 多次調(diào)用只會(huì)輸出一次

myClass.follow()

myClass.follow()

上面是一個(gè)防抖的例子,我們通過(guò)debounce函數(shù)將另一個(gè)函數(shù)包起來(lái),實(shí)現(xiàn)了防抖的功能,這時(shí)候再有另一個(gè)需求,比如希望在調(diào)用follow函數(shù)前后各打印一段日志,這時(shí)候我們還可以再開(kāi)發(fā)一個(gè)log函數(shù),然后繼續(xù)將follow包裝起來(lái)


/**

* 最外層是防抖,否則log會(huì)被調(diào)用多次

*/

class MyClass {

 follow = debounce(

   log(function() {

     console.log('我是子君,關(guān)注我哦')

   }),

   100

 )

}

上面代碼中的debounce和log兩個(gè)函數(shù),本質(zhì)上是兩個(gè)包裝函數(shù),通過(guò)這兩個(gè)函數(shù)對(duì)原函數(shù)的包裝,使原函數(shù)的行為發(fā)生了變化,而js中的裝飾器的原理就是這樣的,我們使用裝飾器對(duì)上面的代碼進(jìn)行改造


class MyClass {

 @debounce(100)

 @log

 follow() {

   console.log('我是子君,關(guān)注我哦')

 }

}

裝飾器的形式就是 @ + 函數(shù)名,如果有參數(shù)的話,后面的括號(hào)里面可以傳參


在方法上使用裝飾器

裝飾器可以應(yīng)用到class上或者class里面的屬性上面,但一般情況下,應(yīng)用到class屬性上面的場(chǎng)景會(huì)比較多一些,比如像上面我們說(shuō)的log,debounce等等,都一般會(huì)應(yīng)用到類(lèi)屬性上面,接下來(lái)我們一起來(lái)具體看一下如何實(shí)現(xiàn)一個(gè)裝飾器,并應(yīng)用到類(lèi)上面。在實(shí)現(xiàn)裝飾器之前,我們需要先了解一下屬性描述符


了解一下屬性描述符

在我們定義一個(gè)對(duì)象里面的屬性的時(shí)候,其實(shí)這個(gè)屬性上面是有許多屬性描述符的,這些描述符標(biāo)明了這個(gè)屬性能不能修改,能不能枚舉,能不能刪除等等,同時(shí)ECMAScript將這些屬性描述符分為兩類(lèi),分別是數(shù)據(jù)屬性和訪問(wèn)器屬性,并且數(shù)據(jù)屬性與訪問(wèn)器屬性是不能共存的。


數(shù)據(jù)屬性

數(shù)據(jù)屬性包含一個(gè)數(shù)據(jù)值的位置,在這個(gè)位置可以讀取和寫(xiě)入值。數(shù)據(jù)屬性包含了四個(gè)描述符,分別是


configurable

表示能不能通過(guò)delete刪除屬性,能否修改屬性的其他描述符特性,或者能否將數(shù)據(jù)屬性修改為訪問(wèn)器屬性。當(dāng)我們通過(guò)let obj = {name: ''}聲明一個(gè)對(duì)象的時(shí)候,這個(gè)對(duì)象里面所有的屬性的configurable描述符的值都是true


enumerable

表示能不能通過(guò)for in或者Object.keys等方式獲取到屬性,我們一般聲明的對(duì)象里面這個(gè)描述符的值是true,但是對(duì)于class類(lèi)里面的屬性來(lái)說(shuō),這個(gè)值是false


writable

表示能否修改屬性的數(shù)據(jù)值,通過(guò)將這個(gè)修改為false,可以實(shí)現(xiàn)屬性只讀的效果。


value

表示當(dāng)前屬性的數(shù)據(jù)值,讀取屬性值的時(shí)候,從這里讀取;寫(xiě)入屬性值的時(shí)候,會(huì)寫(xiě)到這個(gè)位置。


訪問(wèn)器屬性

訪問(wèn)器屬性不包含數(shù)據(jù)值,他們包含了getter與setter兩個(gè)函數(shù),同時(shí)configurable與enumerable是數(shù)據(jù)屬性與訪問(wèn)器屬性共有的兩個(gè)描述符。


getter

在讀取屬性的時(shí)候調(diào)用這個(gè)函數(shù),默認(rèn)這個(gè)函數(shù)為undefined


setter

在寫(xiě)入屬性值的時(shí)候調(diào)用這個(gè)函數(shù),默認(rèn)這個(gè)函數(shù)為undefined


了解了這六個(gè)描述符之后,你可能會(huì)有幾個(gè)疑問(wèn): 我如何去定義修改這些屬性描述符?這些屬性描述符與今天的文章主題有什么關(guān)系?接下來(lái)是揭曉答案的時(shí)候了。


使用Object.defineProperty

了解過(guò)vue2.0雙向綁定原理的同學(xué)一定知道,Vue的雙向綁定就是通過(guò)使用Object.defineProperty去定義數(shù)據(jù)屬性的getter與setter方法來(lái)實(shí)現(xiàn)的,比如下面有一個(gè)對(duì)象


let obj = {

 name: '子君',

 officialAccounts: '前端有的玩'

}

我希望這個(gè)對(duì)象里面的用戶名是不能被修改的,用Object.defineProperty該如何定義呢?


Object.defineProperty(obj,'name', {

 // 設(shè)置writable 是 false, 這個(gè)屬性將不能被修改

 writable: false

})

// 修改obj.name

obj.name = "君子"

// 打印依然是子君

console.log(obj.name)

通過(guò)Object.defineProperty可以去定義或者修改對(duì)象屬性的屬性描述符,但是因?yàn)閿?shù)據(jù)屬性與訪問(wèn)器屬性是互斥的,所以一次只能修改其中的一類(lèi),這一點(diǎn)需要注意。


定義一個(gè)防抖裝飾器

裝飾器本質(zhì)上依然是一個(gè)函數(shù),不過(guò)這個(gè)函數(shù)的參數(shù)是固定的,如下是防抖裝飾器的代碼


/**

*@param wait 延遲時(shí)長(zhǎng)

*/

function debounce(wait) {

 return function(target, name, descriptor) {

   descriptor.value = debounce(descriptor.value, wait)

 }

}

// 使用方式

class MyClass {

 @debounce(100)

 follow() {

   console.log('我是子君,我的公眾號(hào)是 【前端有的玩】,關(guān)注有驚喜哦')

 }

}

我們逐行去分析一下代碼


首先我們定義了一個(gè) debounce函數(shù),同時(shí)有一個(gè)參數(shù)wait,這個(gè)函數(shù)對(duì)應(yīng)的就是在下面調(diào)用裝飾器時(shí)使用的@debounce(100)

debounce函數(shù)返回了一個(gè)新的函數(shù),這個(gè)函數(shù)即裝飾器的核心,這個(gè)函數(shù)有三個(gè)參數(shù),下面逐一分析


target: 這個(gè)類(lèi)屬性函數(shù)是在誰(shuí)上面掛載的,如上例對(duì)應(yīng)的是MyClass類(lèi)

name: 這個(gè)類(lèi)屬性函數(shù)的名稱(chēng),對(duì)應(yīng)上面的follow

descriptor: 這個(gè)就是我們前面說(shuō)的屬性描述符,通過(guò)直接descriptor上面的屬性,即可實(shí)現(xiàn)屬性只讀,數(shù)據(jù)重寫(xiě)等功能

然后第三行 descriptor.value = debounce(descriptor.value, wait), 前面我們已經(jīng)了解到,屬性描述符上面的value對(duì)應(yīng)的是這個(gè)屬性的值,所以我們通過(guò)重寫(xiě)這個(gè)屬性,將其用debounce函數(shù)包裝起來(lái),這樣在函數(shù)調(diào)用follow時(shí)實(shí)際調(diào)用的是包裝后的函數(shù)

通過(guò)上面的三步,我們就實(shí)現(xiàn)了類(lèi)屬性上面可使用的裝飾器,同時(shí)將其應(yīng)用到了類(lèi)屬性上面


在class上使用裝飾器

裝飾器不僅可以應(yīng)用到類(lèi)屬性上面,還可以直接應(yīng)用到類(lèi)上面,比如我希望可以實(shí)現(xiàn)一個(gè)類(lèi)似Vue混入那樣的功能,給一個(gè)類(lèi)混入一些方法屬性,應(yīng)該如何去做呢?


// 這個(gè)是要混入的對(duì)象

const methods = {

 logger() {

   console.log('記錄日志')

 }

}


// 這個(gè)是一個(gè)登陸登出類(lèi)

class Login{

 login() {}

 logout() {}

}

如何將上面的methods混入到Login中,首先我們先實(shí)現(xiàn)一個(gè)類(lèi)裝飾器


function mixins(obj) {

 return function (target) {

   Object.assign(target.prototype, obj)  

 }

}


// 然后通過(guò)裝飾器混入

@mixins(methods)

class Login{

 login() {}

 logout() {}

}

這樣就實(shí)現(xiàn)了類(lèi)裝飾器。對(duì)于類(lèi)裝飾器,只有一個(gè)參數(shù),即target,對(duì)應(yīng)的就是這個(gè)類(lèi)本身。


了解完裝飾器,我們接下來(lái)看一下如何在Vue中使用裝飾器。


在Vue中使用裝飾器

使用ts開(kāi)發(fā)Vue的同學(xué)一定對(duì)vue-property-decorator不會(huì)感到陌生,這個(gè)插件提供了許多裝飾器,方便大家開(kāi)發(fā)的時(shí)候使用,當(dāng)然本文的中點(diǎn)不是這個(gè)插件。其實(shí)如果我們的項(xiàng)目沒(méi)有使用ts,也是可以使用裝飾器的,怎么用呢?


配置基礎(chǔ)環(huán)境

除了一些老的項(xiàng)目,我們現(xiàn)在一般新建Vue項(xiàng)目的時(shí)候,都會(huì)選擇使用腳手架vue-cli3/4來(lái)新建,這時(shí)候新建的項(xiàng)目已經(jīng)默認(rèn)支持了裝飾器,不需要再配置太多額外的東西,如果你的項(xiàng)目使用了eslint,那么需要給eslint配置以下內(nèi)容。


 parserOptions: {

   ecmaFeatures:{

     // 支持裝飾器

     legacyDecorators: true

   }

 }

使用裝飾器

雖然Vue的組件,我們一般書(shū)寫(xiě)的時(shí)候export出去的是一個(gè)對(duì)象,但是這個(gè)并不影響我們直接在組件中使用裝飾器,比如就拿上例中的log舉例。


function log() {

 /**

  * @param target 對(duì)應(yīng) methods 這個(gè)對(duì)象

  * @param name 對(duì)應(yīng)屬性方法的名稱(chēng)

  * @param descriptor 對(duì)應(yīng)屬性方法的修飾符

  */

 return function(target, name, descriptor) {

   console.log(target, name, descriptor)

   const fn = descriptor.value

   descriptor.value = function(...rest) {

     console.log(`這是調(diào)用方法【${name}】前打印的日志`)

     fn.call(this, ...rest)

     console.log(`這是調(diào)用方法【${name}】后打印的日志`)

   }

 }

}


export default {

 created() {

   this.getData()

 },

 methods: {

   @log()

   getData() {

     console.log('獲取數(shù)據(jù)')

   }

 }

}

看了上面的代碼,是不是發(fā)現(xiàn)在Vue中使用裝飾器還是很簡(jiǎn)單的,和在class的屬性上面使用的方式一模一樣,但有一點(diǎn)需要注意,在methods里面的方法上面使用裝飾器,這時(shí)候裝飾器的target對(duì)應(yīng)的是methods。


除了在methods上面可以使用裝飾器之外,你也可以在生命周期鉤子函數(shù)上面使用裝飾器,這時(shí)候target對(duì)應(yīng)的是整個(gè)組件對(duì)象。


一些常用的裝飾器

下面小編羅列了幾個(gè)小編在項(xiàng)目中常用的幾個(gè)裝飾器,方便大家使用


1. 函數(shù)節(jié)流與防抖

函數(shù)節(jié)流與防抖應(yīng)用場(chǎng)景是比較廣的,一般使用時(shí)候會(huì)通過(guò)throttle或debounce方法對(duì)要調(diào)用的函數(shù)進(jìn)行包裝,現(xiàn)在就可以使用上文說(shuō)的內(nèi)容將這兩個(gè)函數(shù)封裝成裝飾器, 防抖節(jié)流使用的是lodash提供的方法,大家也可以自行實(shí)現(xiàn)節(jié)流防抖函數(shù)哦


import { throttle, debounce } from 'lodash'

/**

* 函數(shù)節(jié)流裝飾器

* @param {number} wait 節(jié)流的毫秒

* @param {Object} options 節(jié)流選項(xiàng)對(duì)象

* [options.leading=true] (boolean): 指定調(diào)用在節(jié)流開(kāi)始前。

* [options.trailing=true] (boolean): 指定調(diào)用在節(jié)流結(jié)束后。

*/

export const throttle =  function(wait, options = {}) {

 return function(target, name, descriptor) {

   descriptor.value = throttle(descriptor.value, wait, options)

 }

}


/**

* 函數(shù)防抖裝飾器

* @param {number} wait 需要延遲的毫秒數(shù)。

* @param {Object} options 選項(xiàng)對(duì)象

* [options.leading=false] (boolean): 指定在延遲開(kāi)始前調(diào)用。

* [options.maxWait] (number): 設(shè)置 func 允許被延遲的最大值。

* [options.trailing=true] (boolean): 指定在延遲結(jié)束后調(diào)用。

*/

export const debounce = function(wait, options = {}) {

 return function(target, name, descriptor) {

   descriptor.value = debounce(descriptor.value, wait, options)

 }

}

封裝完之后,在組件中使用


import {debounce} from '@/decorator'


export default {

 methods:{

   @debounce(100)

   resize(){}

 }

}

2. loading

在加載數(shù)據(jù)的時(shí)候,為了個(gè)用戶一個(gè)友好的提示,同時(shí)防止用戶繼續(xù)操作,一般會(huì)在請(qǐng)求前顯示一個(gè)loading,然后在請(qǐng)求結(jié)束之后關(guān)掉loading,一般寫(xiě)法如下


export default {

 methods:{

   async getData() {

     const loading = Toast.loading()

     try{

       const data = await loadData()

       // 其他操作

     }catch(error){

       // 異常處理

       Toast.fail('加載失敗');

     }finally{

       loading.clear()

     }  

   }

 }

}

我們可以把上面的loading的邏輯使用裝飾器重新封裝,如下代碼


import { Toast } from 'vant'


/**

* loading 裝飾器

* @param {*} message 提示信息

* @param {function} errorFn 異常處理邏輯

*/

export const loading =  function(message = '加載中...', errorFn = function() {}) {

 return function(target, name, descriptor) {

   const fn = descriptor.value

   descriptor.value = async function(...rest) {

     const loading = Toast.loading({

       message: message,

       forbidClick: true

     })

     try {

       return await fn.call(this, ...rest)

     } catch (error) {

       // 在調(diào)用失敗,且用戶自定義失敗的回調(diào)函數(shù)時(shí),則執(zhí)行

       errorFn && errorFn.call(this, error, ...rest)

       console.error(error)

     } finally {

       loading.clear()

     }

   }

 }

}

然后改造上面的組件代碼


export default {

 methods:{

   @loading('加載中')

   async getData() {

     try{

       const data = await loadData()

       // 其他操作

     }catch(error){

       // 異常處理

       Toast.fail('加載失敗');

     }  

   }

 }

}

3. 確認(rèn)框

當(dāng)你點(diǎn)擊刪除按鈕的時(shí)候,一般都需要彈出一個(gè)提示框讓用戶確認(rèn)是否刪除,這時(shí)候常規(guī)寫(xiě)法可能是這樣的


import { Dialog } from 'vant'


export default {

 methods: {

   deleteData() {

     Dialog.confirm({

       title: '提示',

       message: '確定要?jiǎng)h除數(shù)據(jù),此操作不可回退。'

     }).then(() => {

       console.log('在這里做刪除操作')

     })

   }

 }

}

我們可以把上面確認(rèn)的過(guò)程提出來(lái)做成裝飾器,如下代碼


import { Dialog } from 'vant'


/**

* 確認(rèn)提示框裝飾器

* @param {*} message 提示信息

* @param {*} title 標(biāo)題

* @param {*} cancelFn 取消回調(diào)函數(shù)

*/

export function confirm(

 message = '確定要?jiǎng)h除數(shù)據(jù),此操作不可回退。',

 title = '提示',

 cancelFn = function() {}

) {

 return function(target, name, descriptor) {

   const originFn = descriptor.value

   descriptor.value = async function(...rest) {

     try {

       await Dialog.confirm({

         message,

         title: title

       })

       originFn.apply(this, rest)

     } catch (error) {

       cancelFn && cancelFn(error)

     }

   }

 }

}

然后再使用確認(rèn)框的時(shí)候,就可以這樣使用了


export default {

 methods: {

   // 可以不傳參,使用默認(rèn)參數(shù)

   @confirm()

   deleteData() {

     console.log('在這里做刪除操作')

   }

 }

}

是不是瞬間簡(jiǎn)單多了,當(dāng)然還可以繼續(xù)封裝很多很多的裝飾器,因?yàn)槲恼聝?nèi)容有限,暫時(shí)提供這三個(gè)。


裝飾器組合使用

在上面我們將類(lèi)屬性上面使用裝飾器的時(shí)候,說(shuō)道裝飾器可以組合使用,在Vue組件上面使用也是一樣的,比如我們希望在確認(rèn)刪除之后,調(diào)用接口時(shí)候出現(xiàn)loading,就可以這樣寫(xiě)(一定要注意順序)


export default {

 methods: {

   @confirm()

   @loading()

   async deleteData() {

     await delete()

   }

 }

}

本節(jié)定義的裝飾器,均已應(yīng)用到這個(gè)項(xiàng)目中 https://github.com/snowzijun/vue-vant-base, 這是一個(gè)基于Vant開(kāi)發(fā)的開(kāi)箱即用移動(dòng)端框架,你只需要fork下來(lái),無(wú)需做任何配置就可以直接進(jìn)行業(yè)務(wù)開(kāi)發(fā),歡迎使用,喜歡麻煩給一個(gè)star。

藍(lán)藍(lán)設(shè)計(jì)www.gerard.com.cn )是一家專(zhuān)注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 平面設(shè)計(jì)服務(wù)




日歷

鏈接

個(gè)人資料

存檔

主站蜘蛛池模板: 五月天小说网 | 午夜激情福利视频 | 亚洲视频一区 | 黄色高清无遮挡 | 中文字幕第一页av | 天堂网传媒| 国产人成看黄久久久久久久久 | 国产卡一卡二 | 国产精品美女www爽爽爽视频 | 国产精品久久久久久妇女 | 亚洲精选在线观看 | 熟女人妻水多爽中文字幕 | 国产在线观看禁18 | 欧美一级片网站 | 久久99综合 | 日本高清视频在线播放 | 天天精品综合 | 欧美日韩一卡二卡三卡 | 欧美a视频在线观看 | 真实的国产乱ⅹxxx66小说 | 久久国产精品精品国产色婷婷 | 亚洲第一偷拍 | 少妇av射精精品蜜桃专区 | 在线国产91| 成人免费观看男女羞羞视频 | 欧美中文字幕一区二区三区 | 日本中文字幕网 | 又色又爽无遮挡免费视频男男 | 色8久久人人97超碰香蕉987 | 蜜桃视频一区二区在线观看 | 日韩亚洲欧美一区 | 亚洲综合视频在线 | 99久久亚洲精品无码毛片 | 黄色片网站视频 | 国内自拍在线观看 | www波多野结衣com | 国产欧美日韩中文久久 | 亚洲av毛片| 真人作爱免费视频 | 欧美三级午夜理伦三级小说 | 欧美99久久精品乱码影视 | 成人精品视频网站 | 国内精品美女a∨在线播放 精品人妻一区二区三区浪潮在线 | 大肉大捧一进一出好爽视频动漫 | 神马午夜888 | 国模大尺度自拍 | 欧美激情首页 | 成人在线观看免费网站 | 欧美交换配乱吟粗大 | 国产白丝精品91爽爽久久 | 亚洲伊人成综合网 | 国产免费一区二区三区免费视频 | 在线97| 久久黄色免费视频 | 81精品国产乱码久久久久久 | 日本一级淫片1000部 | 噼里啪啦高清在线观看 | 99国语露脸久久精品国产ktv | 亚洲国产视频一区二区三区 | 久久五 | 国产aⅴ夜夜欢一区二区三区 | 91蜜桃视频 | 国产香蕉9 | 伊人55yiren综合开心 | 麻豆av网站| 日产精品入口 | 欧美激情肉欲高潮视频 | 亚洲18色成人网站www | 一区二区三区精 | 国产高清av在线播放 | 亚洲第一a | 欧美性猛交xxxⅹ乱大交小说一 | 国产乱淫视频免费 | 十八禁视频网站在线观看 | 天堂无码人妻精品一区二区三区 | 爱爱网站视频 | 日韩黄大片 | 亚洲一区二区三区写真 | 黄色国产在线观看 | jizz日韩| 国产精品视频永久免费播放 | 久久欧美亚洲另类专区91大神 | 尹人香蕉网 | 天天做天天爽 | 国产夜色精品一区二区av | 中文字幕一区二区三区不卡 | 欧美黑人最猛性bbbbb | 手机永久免费av在线播放 | 成人三及片| 一区二区三区视频免费看 | 91精品国自产拍在线观看不卡 | 乱人伦中文视频在线 | 少妇视频在线观看 | 饥渴的熟妇张开腿呻吟视频 | 亚洲国产精品久久久久 | 欧美成人精品三级在线观看播放 | 国产一级二级三级 | 国产肉体xxx裸体312大胆 | 国产情侣自拍av | 欧美一区二区在线 | 天天色天天干天天色 | 天天做天天爽 | 欧美亚洲精品一区二区三区 | 手机在线观看毛片 | 亚洲精品美女久久久久99 | 国产免费福利 | 国产精品久久久久久久久岛 | 蜜臀av首页 | 一级黄片一级毛片 | 天天看片夜夜爽 | 久久成人一区二区 | 亚洲人成人一区二区在线观看 | 91高清无打码 | 精品久久久久久久久午夜福利 | 午夜视频入口 | 久久久精品国产99久久精品麻追 | 久久久久无码精品亚洲日韩 | 国产成人无码aa精品一区 | 国产免费又爽又色又粗视频 | 永久免费看成品人影视 | 我要看黄色a级片 | 中国壮男强迫野外china | 亚洲色www永久网站 少妇人妻综合久久中文字幕 | 久久久久久伊人 | 182tv国产免费观看软件 | 免费无码一区二区三区a片 亚洲欧美日韩国产成人 | 亚洲精品在线一区二区 | 激情欧美一区二区免费视频 | 欧美激情视频一区 | 我想看一级黄色毛片 | www天天操 | 亚洲精品视频网 | 国模妙妙超大尺度啪啪人体 | 无码中文av有码中文a | 亚洲精品无码午夜福利中文字幕 | 18视频在线观看男男 | 96精品高清视频在线观看软件 | 无毛av | 黄色av高清 | 日韩视频在线观看 | 一区二区三区高清在线观看 | 波多野结衣视频一区 | yes4444视频在线观看 | 天堂中文资源在线 | 亚洲综合伊人久久大杳蕉 | 日韩av无码社区一区二区三区 | 国产男女性潮高清免费网站 | 国产 麻豆 日韩 欧美 久久 | 国产成人无码av一区二区 | 国产精品久久久久婷婷二区次 | 久久久久久毛片精品免费不卡 | 国产黄视频网站 | 一级黄色的毛片 | 催眠淫辱の教室3在线观看 村上凉子在线播放av88 | 在线观看av免费 | 亚洲 欧美 国产 日韩 精品 | 日日干夜夜干 | 波多野结衣中文字幕一区二区三区 | 国产日韩欧美视频在线 | 国产精品永久 | 小蝌蚪av| 亚洲一区二区无码影院 | 香蕉视频网站在线观看 | 男女一进一出粗大楱视频 | 99视频在线观看免费 | 精品久久久久久亚洲 | 亚洲成人福利在线 | 娇小xxxx性开放国产精 | 九色视频网址 | 成人免费网站入口www | 亚 洲 视 频 高 清 无 码 | 天堂新版8中文在线8 | 欧美一区二区三区国产 | 99re6这里只有精品视频在线观看 | 久久久久久高潮国产精品视 | 天堂av日韩 | 人妻激情偷乱一区二区三区 | 91精品国产乱码久久久久久张柏芝 | 在线一级片 | 老湿机香蕉久久久久久 | 久久密桃 | 午夜免费视频 | 九九热精 | 色天堂影院 | 亚洲免费看黄 | 成人高清在线观看 | 91精品国产91久久久久福利 | 韩国美女主播娇喘乳奶摇 | 全国探花| 亚洲欧美国产高清va在线播放 | 一本色道久久爱88av | 夜夜嗨一区二区 | 国产av人人夜夜澡人人爽 | 91视频在线| 日韩中文字幕在线看 | 欧美激情第1页 | 日韩欧美视频免费在线观看 | 在线观看免费日韩av | 精品免费国产一区二区三区四区 | 成人在线视频你懂的 | 国产日产精品一区二区 | 日韩影视一区 | 丰满少妇作爱视频免费观看 | 国产91精品看黄网站在线观看 | 91大奶 | 欧美在线视频一区 | 黑人狂躁日本妞一区二区三区 | 伊人影院中文字幕 | 176精品免费 | 三级在线看中文字幕完整版 | 国产视频一| 一个人在线免费观看www | 亚洲天堂婷婷 | 天天澡天天狠天天天做 | 最近免费中文字幕mv在线视频3 | 午夜精品久久久久久久99黑人 | 这里只有精品999 | 亚洲6080yy久久无码产自国产 | 特黄一级大片 | 91久久精品日日躁夜夜欧美 | 国产性自拍| 欧美丰满老熟妇xxxxx性 | 黄色片网站国产 | 国产高潮流白浆喷水视频 | 亚洲污在线观看 | 国产无遮挡吃胸膜奶免费看 | 女女百合av大片一区二区三区九县 | 五月婷婷在线观看视频 | 久久这里只有 | 无码熟妇αⅴ人妻又粗又大 | www午夜视频| 国产好大好紧好爽好湿视频唱戏 | 欧美情侣性视频 | 成人理论影院 | 欧美交性又色又爽又黄 | 久久精品噜噜噜成人av农村 | 激情久久一区 | 久久最新精品 | 国产成人性色生活片 | 日韩精品区 | av成人亚洲 | 激情久久五月 | 午夜无码大尺度福利视频 | 亚洲一区二区三区小说 | 日日夜夜操操 | 国产亚洲精久久久久久无码77777 | 久久99精品久久久久久9 | 欧美三级一区二区三区 | 真实亲伦对白清晰在线播放 | 久久人人爽人人爽人人片av高清 | 国产一线二线三线wwww | 97国产超薄黑色肉色丝袜 | 国产在线2 | 新片速递丨最新合集bt伙计 | 99精品一区二区 | 色呦呦麻豆 | 丁香午夜婷婷 | 国产成人精品a视频一区 | 久久91精品| 国产夜色视频 | 久久大 | 国产一区二区精品在线 | 国产精品久草 | 91久久国产露脸精品国产闺蜜 | 国产资源精品 | 欧美激情欧美激情在线五月 | 日本免费人成视频在线观看 | 欧美大片在线免费观看 | 日韩欧美亚洲 | 久久综合一本 | 亚洲国产97色在线张津瑜 | 成人精品毛片 | 九九午夜视频 | 国产又粗又猛又大爽又黄老大爷 | 黄色精品一区二区三区 | 久久蜜桃av一区二区天堂 | 超碰97在线免费观看 | 翔田千里x88aⅴ| 日本边添边摸边做边爱喷水 | 国产欧美精品一区二区三区四区 | 亚洲综合欧美综合 | 国产系列第一页 | 国产a级黄色毛片 | 黄色网址你懂的 | 黑人极品videos精品欧美裸 | 男人午夜影院 | 一二三四精品 | 国产成人一区二区三区视频 | 国产午夜毛片 | 可以在线观看的av | 麻豆视频在线免费看 | 性猛交xxxxx按摩中国 | 国产精品国产精品国产专区不卡 | 日韩少妇 | 成人午夜短视频 | 欧美激情综合五月色丁香 | 国偷自产视频一区二区久 | 国产精品久久久久不卡 | 国产精品久久久久久免费播放 | 国产日产欧产美 | 亚洲www啪成人一区二区麻豆 | 尤物视频在线观看免费 | 国产福利精品在线 | 国产亚洲精品成人av在线 | 久久久久国色av免费观看性色 | 国产精品久久久久久52avav | 国产精品成人3p一区二区三区 | 亚洲三级黄色片 | 日本少妇丰满大bbb的小乳沟 | 日本一区二区三区在线播放 | jzzjzzjzz亚洲成熟少妇 | 欧美日韩国产图片 | 中文字幕无码乱码人妻系列蜜桃 | 免费的毛片 | 爆乳熟妇一区二区三区霸乳 | 亚洲男人天堂久久 | 亚洲精品一品区二品区三品区 | 狠狠网 | 国产人妖在线视频 | 五月天综合婷婷 | 99爱在线视频这里只有精品 | xxxx性xx另类ⅹ亚洲hd | 国产精品永久免费视频 | 国产传媒一区二区三区 | 极品销魂美女少妇尤物 | 床戏一区| www免费黄色 | 成人午夜免费无码区 | 久久国产色| 成人四色| 国产久色在线拍揄自揄拍 | 亚洲国产制服丝袜先锋 | 久久久久久久久久久久久久久久久久久久 | 麻豆传传媒久久久爱 | 影音先锋成人网 | 久久综合给久久狠狠97色 | 99中文字幕在线观看 | 国产精品区一区二区三区 | 蜜桃色一区二区三区 | 一区二区三区四区亚洲 | 亚洲xxxxx高清| 人妻少妇偷人精品视频 | 少妇媚药按摩中文字幕 | 久久麻豆视频 | 国产精品美女久久久网av | 久久久国产片 | av免费看网址| 91一区二区三区 | 人妻av一区二区三区精品 | 国产成人av在线影院 | 欧美日韩中文一区 | 91久久北条麻妃一区二区三区 | 欧美交换配乱吟粗大在线观看 | 日本中文字幕在线 | 在线免费av播放 | 两男一女3p揉着她的奶视频 | 人人爽人人爽人人片av免费 | 国产真实乱免费高清视频 | 久久精品一区二区三区不卡牛牛 | 狠狠色综合7777久夜色撩人 | 高清无码视频直接看 | 在线免费av观看 | 黑人巨大猛交丰满少妇 | 亚洲va在线va天堂xx xx | av在线影片| 中文日本在线 | 在线观看精品视频 | 99久久精品国产亚洲 | 妖精视频一区二区三区 | 欧美日韩视频在线观看一区 | 成年人黄色大片 | 久久99精品国产麻豆婷婷 | 免费毛片一区二区三区 | 澳门免费av | 丰满饥渴老女人hd69av | 亚洲一区二区三区影视 | 少妇被爽到高潮动态图 | 国产在线视频你懂的 | 综合黄色 | 精品国产乱码久久久久久天狼 | 四虎影库永久地址 | www视频在线 | 国产调教夫妻奴av | 亚洲乱色伦图片区小说 | 四虎国产精品免费久久 | 91狠狠狠狠狠狠狠狠 | 欧亚一级片 | 折磨小男生性器羞耻的故事 | 91九色丨porny丨肉丝 | 久久久久有精品国产麻豆 | 麻豆免费看片 | 国产午夜精品福利视频 | 人妻 色综合网站 | 在线观看的av网址 | 中文字幕丰满乱子伦无码专区 | 521a人成v香蕉网站 | 欧美性jizz18性欧美 | 国产性xxxx18免费观看视频 | 日本中文亲子偷伦 | xxxx在线观看视频 | 成年人黄色大片大全 | 亚洲伊人成综合网 | 国产午夜福利久久精品 | 日本精品久久久久中文字幕 | 久久丫精品系列 | 国产精品久久久久影院色老大 | 久久无码人妻影院 | 800av凹凸视频在线观看 | 波多野结衣亚洲天堂 | 国产三级在线播放 | 国产欧精精久久久久久久 | 超碰影院在线观看 | 99久久国产露脸国语对白 | 免费a级大片 | 成人区人妻精品一区二区不卡网站 | 扒开双腿吃奶呻吟做受视频 | 大象传媒成人在线观看 | 国产精品17p | 日韩视频一区二区在线观看 | 日本熟妇色一本在线观看 | 日本jizz在线观看 | 一二三区国产 | 巴西少妇xxb大毛又多 | 成人三级a做爰视频哪里看 成人三级k8经典网 成人三级黄色 | 中文字幕在线色 | 日日碰日日摸 | 福利一区二区视频 | 日韩精品人妻系列无码专区免费 | 桥本有菜免费av一区二区三区 | 亚洲成av人片不卡无码 | 爱插美女网| 综合色伊人 | 毛茸茸熟妇丰满张开腿呻吟性视频 | 久久国产精品久久精品国产 | 久久人人爽人人爽人人片ⅴ | 中国凸偷窥xxxx自由视频妇科 | 成人香蕉网 | 亚洲巨乳自拍 | 精品一区二区免费 | 欧美一区二区三区粗大 | 全黄h全肉1v1各种姿势动漫 | 91精产品一区一区三区40p | 免费观看国产精品 | 精品国产日韩亚洲一区 | 国产性受xxxx黑人xyx性爽 | 成人av网站在线 | 18禁裸男晨勃露j毛免费观看 | 日韩av无码一区二区三区 | 欧美日韩国产在线 | 草草影院在线免费观看 | www.天堂av.com | 色优久久 | 九九综合网 | 日本女人一级片 | 日本午夜免费福利视频 | 香蕉视频在线观看视频 | 夜夜高潮夜夜爽夜夜爱 | 中文字幕老妇偷乱视频在线小说 | 在线观看三级视频 | 日本理论片中文字幕 | 久久伊人网视频 | 久久鲁鲁| 无码里番纯肉h在线网站 | 精久久久 | 美女av片| 一道本一区 | 好吊视频一区二区三区 | 国产午夜精品久久久久久免费视 | 日本三级全黄三级a | 一 级 黄 色蝶 片 | 精品久久久久久亚洲精品 | 日日躁你夜夜躁你av蜜 | 国产对白不带套毛片av | 精品久久久久久久免费人妻 | 欧美日韩国产免费一区二区三区 | 国产911 | 人禽l交视频在线播放 视频 | 一道本在线观看视频 | 妺妺窝人体色www聚色窝仙踪 | 一本色道婷婷久久欧美 | 性欧美长视频免费观看不卡 | 超碰日韩在线 | 91九色在线视频 | 日韩一级二级视频 | 成人午夜视频精品一区 | 国产精品毛片一区二区三区 | 久久国产精品无码网站 | 无码尹人久久相蕉无码 | 黄色.com| 欧美成人在线视频 | 欧美视频第一页 | 爱情岛论坛亚洲品质自拍 | 国产亚洲精品久久久久久久软件 | 99久久免费国产精精品 | 精品国产偷窥一区二区 | 男ji大巴进入女人的视频小说 | 国产人成 | 日韩视频一区二区在线观看 | www.99日本精品片com | 刘亦菲乱码一区二区三区 | 国产精品久久久久aaaa | 成人调教视频 | 国产精品无码久久久久久久久久 | 中国免费黄色片 | 亚洲精品国产精品乱码不99 | 国产综合内射日韩久 | 中文人妻熟女乱又乱精品 | 久久久无码人妻精品一区 | 久久久社区 | 二区三区偷拍浴室洗澡视频 | 精品国精品国产自在久国产应用 | 成人免费视频一区二区三区 | 久久九九网站 | ww又激又色又爽又免费视频 | 亚洲精品毛片一级91精品 | 放荡闺蜜高h苏桃情事h | 欧美多p视频 | 日日干夜夜爽 | 97手机看片 | 日躁夜躁狠狠躁2020 | 夜夜高潮夜夜爽高清完整版1 | 国产熟女一区二区三区五月婷 | 亚洲精品国产一区二区的区别 | 怡红院av亚洲一区二区三区h | 久久久亚洲色 | 性史性农村dvd毛片 永久黄网站色视频免费直播 | 国产网友自拍 | 性色av无码一区二区三区人妻 | 亚洲精品沙发午睡系列 | 中国xxxxx性按摩店 | 公侵犯一区二区三区四区中文字幕 | 午夜男女很黄的视频 | 中文字幕在线视频观看 | 亚洲乱码国产乱码精品精不卡 | 午夜性刺激免费看视频 | 爱爱视频免费网址 | 亚洲成人av一区二区三区 | 神马午夜91 | 日韩在线激情视频 | 精品爆乳一区二区三区无码av | 欧美天天干 | 青草青在线视频 | 少妇露脸大战黑人视频 | av污在线观看 | 玩弄人妻少妇500系列 | 521av在线 | 91精彩视频在线观看 | 波多野结衣在线观看视频 | 国内精品伊人久久久久777 | 色中文字幕在线观看 | 99热欧美| 免费毛片全部不收费的 | 一本大道无码日韩精品影视_ | 欧美肥老妇视频 | 国产成人精品视频一区二区不卡 | 精品视频区 | 日韩欧美一区二区三区四区 | 欧美精品videos性欧美 | 北条麻妃一区二区三区av高清 | 5个黑人躁我一个视频 | 在线观看免费人成视频 | 国产91入口 | 性开放网站 | 成人免费区一区二区三区 | 国产色综合久久无码有码 | 国产成人a在线观看网站站 又大又粗又爽免费视频a片 | 午夜国产免费 | 农民人伦一区二区三区剧情简介 | 日日狠狠久久8888偷偷色 | 国产精品美女一区二区三区四区 | 在线视频资源 | 真实国产乱子伦视频 | 国产又粗又猛又爽又黄的三级视频 | 青青久草网 | 爱爱短视频| 三级毛片基地 | 国产精品av一区二区三区网站 | 亚洲一区二区视频 | 色天天色 | 男人影院在线 | 成人另类小说 | 亚洲欧洲巨乳清纯 | 亚洲一卡二卡在线观看 | 在线视频一区二区三区 | 亚洲精品乱码久久久久久久久久 | 一级做a爰黑人又硬又粗 | 乌克兰极品少妇ⅹxxx做受 | 2018天天干天天操 | 牛牛在线免费视频 | 富婆xxxxx性猛交hd | 中文字幕乱码中文乱码777 | 91精品国产闺蜜国产在线闺蜜 | 亚洲国产精华液网站w | 少妇看片| 精彩动漫 - 91爱爱 | 91精品入口| 九色av| 天堂中文在线观看视频 | 黑丝一区| 在线免费观看国产精品 | 欧美日韩国产网站 | 久久精品国产精品 | 色欲狠狠躁天天躁无码中文字幕 | 巨胸喷奶水www久久久 | caoporn人人 | 久久中文骚妇内射 | 亚洲国产精品一区二区尤物区 | 亚洲国产精品91 | 玖玖爱国产 | 国产成人精品一区二三区在线观看 | 99久久婷婷国产综合精品免费 | 日本h片在线观看 | 老太婆性杂交视频 | 宝宝好涨水快流出来免费视频 | 台湾全黄色裸体视频播放 |