欧美亚洲韩国_av电影院在线看_久久久久97_台湾佬中文娱乐网欧美电影

站長資訊網
最全最豐富的資訊網站

深入了解Vue中的自定義指令

深入了解Vue中的自定義指令

前端(vue)入門到精通課程:進入學習
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調試工具:點擊使用

準備:自定義指令介紹

除了核心功能默認內置的指令 (v-modelv-show等),Vue 也允許注冊自定義指令。注意,在 Vue2.0 中,代碼復用和抽象的主要形式是組件。然而,有的情況下,你仍然需要對普通 DOM 元素進行底層操作,這時候就會用到自定義指令。【學習視頻分享:vue視頻教程、web前端視頻】

作為使用Vue的開發者,我們對Vue指令一定不陌生,諸如v-modelv-onv-forv-if等,同時Vue也為開發者提供了自定義指令的api,熟練的使用自定義指令可以極大的提高了我們編寫代碼的效率,讓我們可以節省時間開心的摸魚~

對于Vue的自定義指令相信很多同學已經有所了解,自定義指令的具體寫法這里就不細講了,官方文檔很詳細。 但是不知道各位同學有沒有這種感覺,就是這個技術感覺很方便,也不難,我也感覺學會了,就是不知道如何去應用。這篇文檔就是為了解決一些同學的這些問題才寫出來的。

PS:這次要講的自定義指令我們主要使用的是vue2.x的寫法,不過vue3.x不過是幾個鉤子函數有所改變,只要理解每個鉤子函數的含義,兩者的用法差別并不大。

試煉:實現v-mymodel

我的上篇文章說到要自己實現一個v-model指令,這里使用v-myodel模擬一個簡易版的,順便再領不熟悉的同學熟悉一下自定義指令的步驟和注意事項。

定義指令

首先梳理思路:原生input控件與組件的實現方式需要區分,input的實現較為簡單,我們先實現一下input的處理。 首先我們先定義一個不做任何操作的指令

Vue.directive('mymodel', {         //只調用一次,指令第一次綁定到元素時調用。在這里可以進行一次性的初始化設置。         bind(el, binding, vnode, oldVnode) {         },         //被綁定元素插入父節點時調用 (僅保證父節點存在,但不一定已被插入文檔中),需要父節點dom時使用這個鉤子         inserted(el, binding, vnode, oldVnode) {         },         //所在組件的 VNode 更新時調用,**但是可能發生在其子 VNode 更新之前**。指令的值可能發生了改變,也可能沒有。但是你可以通過比較更新前后的值來忽略不必要的模板更新 (詳細的鉤子函數參數見下)。         update(el, binding, vnode, oldVnode) {         },         //指令所在組件的 VNode **及其子 VNode** 全部更新后調用。         componentUpdated(el, binding, vnode, oldVnode) {         },         只調用一次,指令與元素解綁時調用。         unbind(el, binding, vnode, oldVnode) {         }, })
登錄后復制

上面的注釋中詳細的說明了各個鉤子函數的調用時機,因為我們是給組件上添加input事件和value綁定,因此我們在bind這個鉤子函數中定義即可。所以我們把其他的先去掉,代碼變成這樣。

Vue.directive('mymodel', {         //只調用一次,指令第一次綁定到元素時調用。在這里可以進行一次性的初始化設置。         bind(el, binding, vnode, oldVnode) {          } })
登錄后復制

簡單說一下bind函數的幾個回調參數,el是指令綁定組件對應的dombinding是我們的指令本身,包含namevalueexpressionarg等,vnode就是當前綁定組件對應的vnode結點,oldVnode就是vnode更新前的狀態。

接下來我們要做兩件事:

  • 綁定input事件,同步inputvalue值到外部
  • value值綁定,監聽value的變化,更新到inputvalue

這對于input原生組件比較容易實現:

//第一步,添加inout事件監聽 el.addEventListener('input', (e) => {    //context是input所在的父組件,這一步是同步數據    vnode.context[binding.expression] = e.target.value; }) //監聽綁定的變量 vnode.context.$watch(binding.expression, (v) => {      el.value = v; })
登錄后復制

這里解釋一下上面的代碼,vnode.context是什么呢,他就是我們指令所在組件的上下文環境,可以理解就是指令綁定的值所在的組件實例。不熟悉vnode結構的同學建議先看一下官方的文檔,不過文檔描述的比較簡單,不是很全面,所以最好在控制臺log一下vnode的對象看一下它具體的結構,這很有助于我們封裝自定義指令,對理解Vue原理也很有幫助。

我們可以通過context[binding.expression]獲取v-model上到綁定的值,同樣可以修改它。上面的代碼中我們首先通過在添加的input事件中操作vnode.context[binding.expression] = e.target.value同步inputvalue值到外部(context),與使用@input添加事件監聽效果是一樣的;然后我們需要做第二件事,做value值的綁定,監聽value的變化,同步值的變更到inputvalue上,我們想到我們可以使用Vue實例上的額$watch方法監聽值的變化,而context就是那個Vue實例,binding.expression就是我們想要監聽的屬性,如果我們這樣寫

參考vue實戰視頻講解:進入學習

<input v-mymodel='message'/>
登錄后復制

那么binding.expression就是字符串'message'。所以我們想下面的代碼這樣監聽綁定的響應式數據。

//監聽綁定的變量 vnode.context.$watch(binding.expression, (v) => {      el.value = v; })
登錄后復制

至此,inputv-mymodel的處理就完成了(當然input組件還有typecheckbox,radio,select等類型都需要去特別處理,這里就不再一一處理了,感興趣的同學可以自己嘗試去完善一下),但是對于非原生控件的組件,我們要特殊處理。 因此我們完善代碼如下:

Vue.directive('mymodel', {         //只調用一次,指令第一次綁定到元素時調用。在這里可以進行一次性的初始化設置。         bind(el, binding, vnode, oldVnode) {            //原生input組件的處理            if(vnode.tag==='input'){                 //第一步,添加inout事件監聽                 el.addEventListener('input', (e) => {                    //context是input所在的父組件,這一步是同步數據                    vnode.context[binding.expression] = e.target.value;                 })                 //監聽綁定的變量                 vnode.context.$watch(binding.expression, (v) => {                      el.value = v;                 })            }else{//組件             }         } })
登錄后復制

接下來我們要處理的是自定義組件的邏輯,

//vnode的結構可以參見文檔。不過我覺得最直觀的方法就是直接在控制臺打印處理 let {     componentInstance,     componentOptions,     context } = vnode; const {    _props } = componentInstance; //處理model選項 if (!componentOptions.Ctor.extendOptions.model) {   componentOptions.Ctor.extendOptions.model = {         value: 'value',         event: 'input'   } } let modelValue = componentOptions.Ctor.extendOptions.model.value; let modelEvent = componentOptions.Ctor.extendOptions.model.event; //屬性綁定,這里直接修改了屬性,沒有想到更好的辦法,友好的意見希望可以提出 _props[modelValue] = binding.value; context.$watch(binding.expression, (v) => {      _props[modelValue] = v; }) //添加事件處理函數,做數據同步 componentInstance.$on(modelEvent, (v) => {      context[binding.expression] = v; })
登錄后復制

聲明一下,上面的實現不是vue源碼的實現方式,vue源碼中實現v-model更加復雜一點,是結合自定義指令、模板編譯等去實現的,因為我們是應用級別的封裝,所以采用了上述的方式實現。

實現此v-mymodel需要同學去多了解一下VnodeComponentAPI,就像之前說的,最簡單的方法就是直接在控制臺中直接打印出vnode對象,組件的vnode上有Component的實例componentInstance

接下來簡單說一下上面的代碼,首先我們可以在componentOptions.Ctor.extendOptions上找到model的定義,如果沒有的話需要設置默認值valueinput,然后分別對想原生input的處理一樣,分別監聽binding.expression的變化和modelEvent事件即可。

需要注意的是,我們上面的代碼直接給_prop做了賦值操作,這實際上是不符合規范的,但是我目前沒有找到更好的方法去實現,有好思路的同學可以在評論區留言指教。

下面?是完整的源碼:

應用實踐:4個實用的自定義指令

上文我們通過封裝v-mymodel為各位同學展示了如何封裝和使用自定義指令,接下來我把自己在生產實踐中使用自定義指令的一些經驗分享給大家,通過實例,我相信各位同學能夠更深刻的理解如何在在應用中封裝自己的指令,提高效率。

權限控制

下面我們定義一個v-permission指令用于全平臺的權限控制

  • role:角色控制;
  • currentUser:當前登錄人判斷;當前用戶是否是業務數據中的創建人或者負責人
  • bussinessStatus:業務狀態判斷;
  • every:與操作;
  • some:或操作;

示例代碼

//定義權限類型 const permissionType = {     ROLE: 'role',     CURRENTUSER:'currentUser',     BUSSINESSSTATUS: 'bussinessStatus',     MIX_EVERY: 'every',     MIX_SOME: 'some' } export default {     //只調用一次,指令第一次綁定到元素時調用     bind: function () {     },     //當前vdom插入到真實dom時,因為是對dom的樣式操作,在這里操作     inserted: function (el, binding) {         let show = false;         show=processingType(binding.arg,binding.value);          el.style.display = `${show ? 'inline-block' : 'none'}`     },     //所在組件的VNode更新時調用,狀態更新后需要更新顯示狀態     update: function (el, binding) {         //避免無效的模板更新         if(binding.value===binding.oldValue) return;         let show = false;         show=processingType(binding.arg,binding.value);          el.style.display = `${show ? 'inline-block' : 'none'}`     },     //指令所在組件的 VNode 及其子 VNode 全部更新后     componentUpdated: function (el, binding) {     },     unbind: function () {     }, } //處理不同類型的權限控制 function processingType(type,value){     let values=[];     switch (type) {         case permissionType.ROLE:             return permissionByRole(value);         case permissionType.CURRENTUSER:             return permissionCreater(value);         case permissionType.BUSSINESSSTATUS:             return permissionBusinessStatus(value);         case permissionType.MIX_EVERY:             for(let type in value){                 values.push(processingType(type,value[type]))             }             return values.every(v=>{                 return v;             })         case permissionType.MIX_SOME:             for(let type in value){                 values.push(processingType(type,value[type]))             }             return values.some(v=>{                 return v;             })         default:             return false;     } } //業務狀態判斷 function permissionBusinessStatus(bindingValue){    return bindingValue.status==bindingValue.value; } //當前用戶? function permissionCreater(bindingValue){     const userInfo = JSON.parse(sessionStorage.CDTPcookie);     // console.log(userInfo.userInfo.id,bindingValue)     if(bindingValue instanceof Array){         return bindingValue.some(v=>{             return userInfo.userInfo.id==v;         })     }     return userInfo.userInfo.id==bindingValue; } //角色控制 export function permissionByRole(bindingValue) {     //這里也可以是store里的用戶信息     const userInfo = JSON.parse(sessionStorage.userInfo);       let roles = []     if (userInfo) {         roles = userInfo.roleList     }     let show = false;     if (bindingValue instanceof Array) {         return roles.some(role => {//多角色處理             return bindingValue.some(item => {                 return role.roleCode === item             })         })     } else if (typeof bindingValue == 'string') {         show = roles.some(role => {             return role.roleCode === bindingValue;         })     }     return show; }
登錄后復制

簡單說一下上面?指令的定義思路和使用方法。整體思路就是通過processingType處理權限邏輯,使用el.style.display控制組件顯示或隱藏。我在這里從日常應用中提取了一些通用的processingType中的權限處理方式,方便大家理解也供大家參考。

下面逐一說一下權限指令各個類型的使用方法:

//角色權限 <component v-permission:role='leader'></component> //判斷當前登錄人 <component v-permission:currentUser='orderInfo.createUser'></component> //判斷業務狀態 <component v-permission:bussinessStatus='{status:orderStatus.RUNNING,value:orderInfo.status}'></component> //角色是leader或者是當前訂單的創建者,有權限 <component v-permission:some="{role:'leader',currentUser:'orderInfo.createUser'}"></component> //角色是leader并且是當前訂單的創建者,有權限 <component v-permission:every="{role:'leader',currentUser:'orderInfo.createUser'}"></component>
登錄后復制

輸入限制

v-input 輸入框限制,限制數字、保留n位小數點等。

export default {     inserted: function (el, binding, vnode) {         el.addEventListener('input', function (e) {             if (binding.arg == 'toFixed') {                 //限制輸入n位小數點                 toFiexd(e.target, vnode, binding.value)             } else {                 //限制數字輸入                 Integer(e.target, vnode)             }         })     }, } function toFiexd(target, vnode, v) {     console.log(v);     let ln = 2;     if (v) {         ln = v;     }     var regStrs = [         ['^0(\d+)$', '$1'], //禁止錄入整數部分兩位以上,但首位為0         ['[^\d\.]+$', ''], //禁止錄入任何非數字和點         ['\.(\d?)\.+', '.$1'], //禁止錄入兩個以上的點         ['^(\d+\.\d{' + ln + '}).+', '$1'] //禁止錄入小數點后兩位以上     ];     for (var i = 0; i < regStrs.length; i++) {         var reg = new RegExp(regStrs[i][0]);         target.value = target.value.replace(reg, regStrs[i][1]);     }     //對于封裝的像el-input組件,因為其需要通過input事件同步狀態     if(vnode.componentInstance){       vnode.componentInstance.$listeners.input(target.value)     } } function Integer(target, vnode) {     let valueStr = target.value     if (valueStr.length == 1) {         //第一個數字不為0         valueStr = valueStr.replace(/[^0-9]/g, "");     } else {         //只能輸入正整數         valueStr = valueStr.replace(/D/g, "");     }     target.value = valueStr;     if(vnode.componentInstance){       vnode.componentInstance.$listeners.input(target.value)     } }
登錄后復制

這里需要特別注意的是下面這行代碼

vnode.componentInstance.$listeners.input(target.value)
登錄后復制

我們為什么需要添加這一句呢,我們明明已經為target.value做了賦值。
實際上這一句代碼相當于指令作用組件內部的$emit('input',target.value),這是因為如果我們是在antd或者elementui中的輸入框組件上添加我們定義的v-input指令,直接為target.value賦值是不能生效的,修改的只是原生input控件value值,并沒有修改自定義組件的value,還需要通過觸發input事件去同步組件狀態,修改value值。(這里不了解為什么需要觸發input事件區同步狀態的同學了解一下v-model的語法糖原理即可理解, 使用方法:

<!-- 限制輸入兩位小數數字 --> <input v-input:toFixed="2"/> <!-- 限制輸入正整數 --> <el-input v-input:integer/>
登錄后復制

內容處理

我們也可以通過自定義指令做對內容到處理,比如

  • 空值處理

  • 數字千分數逗號分割

export default {     bind:function(){     },     inserted:function(el,binding){         dealContent(el,binding)     },     update:function(el,binding){         dealContent(el,binding)     },     componentUpdated:function(){     },     unbind:function(){     }, } function dealContent(el,binding){    const {arg}=binding;    if(arg=='empty'){        if(!el.textContent){//空值顯示             el.textContent=binding.value||'暫無數據';         }    }else if(arg=='money'){//金額千分位逗號分割,如10000000顯示為100,000,00         if (binding.value) {             el.textContent = dealMoney(binding.value);         }else {             el.textContent = dealMoney(el.textContent);         }    } }
登錄后復制

千分位分割代碼:

//金額處理 export function dealMoney(money, places = 2) {     const zero = `0.00`;     if (isNaN(money) || money === '') return zero;     if (money && money != null) {         money = `${money}`;         let left = money.split('.')[0]; // 小數點左邊部分         let right = money.split('.')[1]; // 小數點右邊         // 保留places位小數點,當長度沒有到places時,用0補足。         right = right ? (right.length >= places ? '.' + right.substr(0, places) : '.' + right + '0'.repeat(places - right.length)) : ('.' + '0'.repeat(places));         var temp = left.split('').reverse().join('').match(/(d{1,3})/g); // 分割反向轉為字符串然后最多3個,最少1個,將匹配的值放進數組返回         return (Number(money) < 0 ? '-' : '') + temp.join(',').split('').reverse().join('') + right; // 補齊正負號和貨幣符號,數組轉為字符串,通過逗號分隔,再分割(包含逗號也分割)反向轉為字符串變回原來的順序     } else if (money === 0) {         return zero;     } else {         return zero;     } }
登錄后復制

使用方法:

<span v-content:empty="'無'">{{message}}</span> <!-- 金額千分位逗號分割 --> <span v-content:money>100000</span>
登錄后復制

文件預覽

v-preview方便的實現文件預覽功能

  • 預覽圖片;

  • 預覽文件;

  • 其他預覽類業務功能

import {isOffic,isPdf,isImage} from '@/utils/base' import {previewWithOffice} from '@/utils/fileUtils.js' export default {     inserted:function(el,binding){         el.onclick=function(e){             let params = binding.value             if(isOffic(params.name)){                 e.preventDefault()                 e.stopPropagation()                 previewWithOffice(params.url)//使用office在線預覽打開             }else if(isPdf(params.name) || isImage(params.name)){                 e.preventDefault()                 e.stopPropagation()                 if(params.url){//直接打開url                     previewFile(params)                 }             }         }     },     //指令所在組件的 VNode 及其子 VNode 全部更新后     componentUpdated: function (el, binding) {         el.onclick=function(e){             let params = binding.value             if(isOffic(params.name)){                 //使用插件預覽Office文件                 e.preventDefault()                 e.stopPropagation()                 previewWithOffice(params.url)             }else if(isPdf(params.name) || isImage(params.name)){                //預覽圖片和pdf等能直接打開的文件                 e.preventDefault()                 e.stopPropagation()                 previewFile(params)             }         }     },     unbind(el){        el.onclick=null;     } } //預覽圖片和pdf等能直接打開的文件 function previewFile(params) {     let a = document.createElement("a");     a.download = params.name     a.href = params.url;     a.target = "_blank";     a.click();     a = null; }
登錄后復制

使用方法:

<!-- 預覽圖片 --> <image :src='url' v-preview="{name:file.name,url:file.url}"></image> <!-- 預覽文件 --> <span v-preview="{name:file.name,url:file.url}">{{file.name}}</span>
登錄后復制

試著自己實現

各位同學可以試著自己實現一個v-loading的加載中的指令,通過設置一個bool值來設置容器的加載狀態。 如有疑問可以在評論區留言。

總結

本文主要講了如下幾件事:

  • vue自定義指令介紹
  • 實現一個v-model
  • 通用的自定義指令使用技巧

(學習視頻分享:web前端開發、編程基礎視頻)

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
主站蜘蛛池模板: 成年人免费黄色片 | 国产精品高潮呻吟av | 在线观看欧美成人 | 欧美一区二区三区四区在线观看 | 国产免费一级 | 久草精品一区 | 亚洲国产色图 | 午夜影视大全 | 丰满少妇理论片在线观看 | 在线欧美二区 | 日韩二区 | 20日本xxxxxxxxx46 亚洲欧洲在线播放 | 久久精品麻豆 | 成人av影院 | 亚洲第九十九页 | 亚洲高清在线看 | 亚洲精品性 | 蜜桃av鲁一鲁一鲁一鲁俄罗斯的 | 亚洲免费黄色片 | 日本成人一区 | 在线观看亚洲一区 | 午夜在线免费观看视频 | 日本天堂网在线 | 97成人在线观看 | 中文字幕一区一区三区 | 久久影音先锋 | 亚洲资源在线 | 欧美在线性视频 | 日韩精品国产精品 | 在线精品亚洲欧美日韩国产 | 欧美二区在线 | 日日干日日摸 | 日韩欧美爱爱 | 亚洲欧美成人aⅴ大片 | 久久久亚洲一区 | 黄色一级一片免费播放 | 日韩一级完整毛片 | 亚洲伊人一区二区 | 色www国产亚洲阿娇 韩国中文字幕hd久久精品 | 久久一区二区三区视频 | 2024国产精品视频 | 亚洲天堂午夜 | 欧美 日韩 国产在线 | 窝窝午夜视频 | 理论片午夜 | av中文网| 国产一区欧美二区 | 99一区二区 | 91精品一区二区三区在线观看 | 一区二区久久久久 | 美日韩免费 | 欧美日韩免费在线观看 | 新天堂av | 韩日一级片 | 蜜臀久久99精品久久久 | 伊人中文字幕 | 中文字幕精品久久久 | 成人午夜视频网站 | 视频二区中文字幕 | 国产精品福利一区二区 | 国产丝袜一区二区三区 | 一区二区三区四区视频在线观看 | 中文字幕日韩亚洲 | 91好色先生tv | 国产片一区二区 | 国产欧美日韩在线播放不了吗 | 亚洲色欲色欲www | 一区二区精品在线 | 国产色在线 | 国产 丝袜 欧美中文 另类 | 又大又长粗又爽又黄少妇毛片 | 男人草女人 | 国产字幕侵犯亲女 | 天天操天天干天天操 | 午夜在线免费观看 | 亚洲国产精品一区二区www | 黄色va | 13日本xxxxxⅹxxx20 | 九色视频偷拍少妇的秘密 | 国产无遮挡又黄又爽免费网站 | 国产丝袜自拍 | 日韩欧美中文在线 | 日韩在线视频播放 | aaaaa毛片| 涩天堂| 黄色av国产| 蜜桃一区二区 | 黄网在线观看视频 | 一级黄色片a | 久草精品在线观看 | 欧美成人一区二区三区 | 狠操av| 婷婷五月色综合 | av作品在线 | 日本黄色一级 | 欧美成人中文字幕 | 久久免费看少妇高潮a | 国产精品久久久久久婷婷天堂 | 国产精品久久久久久久久久久久午夜片 | 香蕉性视频 | 欧美精品久久久久久久久久 | 一色桃子av在线 | 你懂的在线观看网址 | 中文字幕精品一区二区三区精品 | 成人av片在线观看 | 久色影视| 最近中文字幕在线观看 | 亚洲天堂福利 | 亚洲欧美一区二区三区在线 | 尤物视频在线观看国产 | 日日影院| 视频二区| 色综合五月 | 免费看欧美大片 | 天天干天天操天天爽 | 亚洲成人久久精品 | 在线一区播放 | 精品久久中文字幕97 | 男人的天堂在线视频 | 2018天天操 | 一级大毛片 | 国产黄色视屏 | 嫩草视频在线看 | 午夜第一页 | 成人午夜视频在线 | 久久蜜桃av | 美女av网址 | 伊人精品 | 今天最新中文字幕mv高清 | 国产精品第一 | 中文字幕11页中文字幕11页 | 日韩成人av毛片 | 日韩精品1| 天天干天天草天天射 | 波多野结衣视频免费 | 成人av激情网 | 最新国产精品自拍 | 亚洲黑丝在线 | 亚洲视频精品在线 | 成人国产片女人爽到高潮 | wwwwyoujizzcom| 不卡av在线 | 中文字幕在线播放一区二区 | 成人涩涩软件 | 91网站大全| 91成人综合 | 天天操天天撸 | 国产成人在线影院 | 亚州欧美在线 | 黄色aa毛片| 久久久www成人免费无遮挡大片 | 中文字幕不卡免费视频 | 日韩特一级 | 小草毛片 | 日韩视频在线播放 | www.性欧美 | 欧美视频第一页 | 欧美日韩三级在线观看 | 超碰在线资源 | 国产精品老牛影视 | 国产精品suv一区 | 伊人春色网 | 亚洲大片免费观看 | 国产在线视频一区二区三区 | 波多野结衣一区二区三区 | 就去色综合 | 巨大黑人极品videos精品 | 国产精品久久久久久久久久三级 | 国产一级免费在线观看 | 亚洲成av人片在线观看无 | 在线观看亚洲精品 | 欧美在线 | 亚洲 | 中出在线播放 | 美日韩黄色 | 蜜乳av中文字幕 | 国产精品日韩欧美 | 6080日韩午夜伦伦午夜伦 | 亚洲成人黄色片 | 黄色片在哪看 | 亚洲一区二区久久 | 视频丨9l丨白浆 | 91精品国产一区二区三密臀 | 久久久国产精品入口麻豆 | 久久理论片 | 欧美另类极品videosbest使用方法 | 欧美一区二区三区在线免费观看 | 黄色的视频网站 | 亚洲欧美色视频 | 影音先锋亚洲天堂 | 欧美特黄一级大片 | 91桃色视频在线观看 | 亚洲一区二区三区网站 | 免费日批视频 | 伊人一区| 国产毛片av | 国产真实乱人偷精品视频 | 国产伦理精品 | 亚洲欧美中文日韩在线观看 | 成人图片小说 | 国产亚洲久一区二区 | 亚洲国产精华液网站w | 污视频网站在线观看 | 长篇高h乱肉辣文 | 狠狠2021最新版 | 1024毛片 | 黄色激情在线观看 | 美日韩精品 | 成人淫片 | 欧美亚洲天堂 | 盗摄精品av一区二区三区 | 北条麻妃一二三区 | 台湾久久 | 欧美日韩在线视频一区 | 国产探花一区 | 在线成人日韩 | 懂色av一区二区三区 | 丁香视频在线观看 | 日韩视频一区二区在线观看 | 99热伊人 | 久久久三区 | 狠狠综合网| 日韩在线一区二区 | 97毛片 | 黄色片一区二区三区 | 久久国产露脸精品国产 | 色婷婷一区 | 国产456| 日韩精品视频播放 | 国产网红主播三级精品视频 | 青青草国产精品 | 中文在线观看免费网站 | 最近好看的2019中文在线 | 国产视频97| 日韩在线观看视频网站 | 亚洲欧美激情在线观看 | 国产精品影片 | 国内精品久 | 成人aaa | 在线国产精品视频 | 国产色综合视频 | 深夜福利91 | 91精品国产福利一区二区三区 | 色94色欧美sute亚洲线路二 | 二区三区在线观看 | 人妖一级片| 在线观看网址你懂的 | 国产精品视频久久久久久 | 日夜夜操 | 韩国精品一区二区 | 午夜三区| 欧美视频h | 人人看人人艹 | 国产传媒在线播放 | 激情五月婷婷小说 | 亚洲国产三级 | 9色91| 久久久啊啊啊 | www伊人网 | 91久久国语露脸精品国产高跟 | 精品久久久精品 | 二区三区在线 | 处破大全欧美破苞二十三 | 激情综合av| 欧美午夜大片 | 亚日韩| 日韩一级不卡 | 亚洲精品7777 | 韩国激情呻吟揉捏胸视频 | 成人国产午夜在线观看 | 永久久久久久 | 黄色三级在线观看 | 国产精品久久久久久一区二区 | 国产日韩欧美在线 | 91porny九色91啦中文 | 国产日韩欧美视频在线观看 | 天天操天天爽天天干 | 日本妇乱大交xxxxx | 99在线播放视频 | 成人综合网址 | 欧美七区 | 香蕉网站在线观看 | 国产亚洲精品久久久久婷婷瑜伽 | 国产日产久久高清欧美一区 | xxxwww在线观看 | 欧美xxxxhd| 超碰在线观看91 | 日韩在线免费看 | 天天宗合 | 伊人久久免费 | 一级做a爰片久久毛片a | 国产精品情侣 | 国产ts视频在线观看 | 亚洲伊人久久影院 | 免费在线国产视频 | 亚洲视频色| 亚洲深夜福利视频 | 欧美一区日韩一区 | 欧美天堂| 亚洲一区二区三区三州 | 欧美在线网站 | 白浆导航 | 亚洲成a人片在线观看www | 成人av免费在线 | 奴色虐av一区二区三区 | 成人免费网站www网站高清 | www.九九九| av中文字幕一区 | 最新地址在线观看 | 日韩欧美视频在线免费观看 | 午夜影视剧场 | 国产日产精品一区二区三区 | 粉嫩av| 亚洲夜夜爱 | av男人的天堂在线观看 | 中文字幕在线观看免费视频 | 福利一二区 | 粉嫩av亚洲一区二区图片 | 久久伊人久久 | 亚洲精品专区 | 精品视频大全 | 先锋影音色| 国产成人激情视频 | 丰满少妇在线观看网站 | 伊人久操视频 | 青青草精品在线视频 | 久爱视频在线观看 | 北岛玲av | 91免费视频播放 | 欧美精品一区二区久久婷婷 | 色婷婷av一区二区三区软件 | 精品久久a | 中文字幕永久在线播放 | 337p亚洲精品色噜噜狠狠 | 亚洲做受高潮无遮挡 | 涩天堂 | 国产13页 | 国产精品久久久久精 | 亚洲精品国产精品国自产观看浪潮 | 精品久久久av | 国产一级片精品 | 国产自产视频 | 黄色一级大片在线免费看国产一 | jizz国产在线 | 91国偷自产一区二区三区亲奶 | 偷拍网亚洲| 韩国一级淫片免费看 | 麻豆视频一区 | 美少妇av| 欧美日韩999 | 亚洲福利在线播放 | 成人不卡 | 亚洲精品国产一区黑色丝袜 | 国产黄页视频 | 玖玖精品在线 | 全黄性高潮| 91亚洲精选 | 成人美女毛片 | 亚洲欧美另类中文字幕 | 亚洲tv在线| 超污视频在线观看 | 免费超碰在线 | 精品久久久久国产 | 亚洲爽片 | 久久99精品国产麻豆91樱花 | 久久久国产精 | 午夜激情网站 | 久久特级毛片 | 国产精品久久久久久久久久东京 | 国产极品美女高潮无套嗷嗷叫酒店 | 国产精品成人自拍 | 57pao国产精品一区 | 奇米成人网 | 日日躁夜夜躁 | 国产农村乱对白刺激视频 | 欧美日韩大陆 | 久久精品亚洲一区 | 日韩一区二区在线播放 | 男同志毛片特黄毛片 | 亚洲精品国产一区二区 | 日韩中文字幕在线视频 | 91精品国产综合久久香蕉最新版 | 成人午夜在线播放 | 亚洲免费观看视频 | 中文字幕手机在线视频 | 黄色h视频 | 麻豆爱爱视频 | 久久久午夜精品福利内容 | 久久免费av| 天天做天天射 | 久久久久亚洲精品男人的天堂 | 亚洲国产女人aaa毛片在线动漫 | 久久国产精品网站 | 一级黄色a | 亚洲成人中文字幕在线 | 免费在线观看高清影视网站 | 第四色在线视频 | 亚洲图片在线播放 | 国产成人精品片 | 横恋母在线观看 | 欧美在线播放视频 | 欧美性猛交xxxⅹ富婆 | 自拍超碰| 国产女同在线观看 | 亚洲一区日韩 | 日本a级在线 | 综合久久综合久久 | 欧美一区二区三区在线观看视频 | 91大神精品 | 日韩成人在线免费观看 | 欧美日本在线播放 | 香蕉毛片 | 婷婷二区 | 天天干夜夜欢 | 在线成人中文字幕 | 懂色av.com | 欧美aⅴ在线 | 五月婷婷激情小说 | 国产成人久久久精品免费澳门 | 欧美成年视频 | 五月激情六月 | 精品国产乱码久久久久久88av | 九热精品 | 1级黄色大片 | 日本啊v在线 | 国产美女激情 | 成人午夜视频在线观看 | 国产亚洲成人av | 久久久久久久久久久网站 | 91麻豆精品国产91久久久久久久久 | 欧洲高潮三级做爰 | www.97av | 国产成人一级 | 亚洲影视一区二区 | 一级片在线免费播放 | 在线日韩 | 亚洲福利视频网站 | 永久免费看片在线播放 | 精品国产一区二区三区av 性色 | 黄色视屏免费 | 免费特黄视频 | 成人中文字幕在线观看 | 亚洲日本韩国在线 | 久久99热这里只频精品6学生 | 亚洲精品欧美精品 | 中文字幕欧美色图 | 午夜精品久久久久久久99 | 国产成人一区二区啪在线观看 | 久久国产精品精品国产色婷婷 | 九九九在线观看 | 亚洲色欲色欲www | 午夜亚洲精品 | 精品色区 | 一区二区三区观看 | 国产在线不卡 | 91麻豆视频在线观看 | 欧美日韩亚洲一区二区三区 | 337p日本大胆噜噜噜噜 | 亚洲v成人天堂影视 | www色av| 蜜桃色一区二区三区 | 国产a国产 | 中文字幕欧美在线观看 | 性生交大片免费看3p | 男女互操在线观看 | 澳门av在线 | 在线免费观看av片 | 精品美女久久 | 日韩天天干 | 2021国产精品视频 | 亚洲一区二区三区久久久 | 亚洲精品午夜aaa久久久 | 97人人澡人人爽人人模亚洲 | 日韩大片在线观看 | 成人性生交生交视频 | 一女三黑人理论片在线 | 香蕉视频污在线 | 西厢记在线观看 | 天堂在线资源网 | 亚洲一区在线免费视频 | 91精品国产高潮对白 | 色中色av | 91精品亚洲| 涩涩网站入口 | 高级家教课程在线观看 | 国产乱码精品一区二区三区忘忧草 | av在线www| 欧洲一级片| 在线爱情大片免费观看大全 | 夜夜操操操 | 国产毛片一区二区 | 亚洲人视频在线观看 | 国产999 | 黄色一二三区 | 自拍偷拍亚洲图片 | 爱爱视频网址 | av福利社| 午夜剧场成人 | 天堂在线免费观看 | 国产91网 | 久久精品久久精品久久 | 午夜淫片 | 亚洲春色一区二区三区 | 一区二区国产精品视频 | 第一色影院 | 九色蝌蚪porny| www.黄色小说.com | 嫩草网站在线观看 | 婷婷丁香在线 | 性感美女毛片 | 免费在线观看国产精品 | 中文字幕在线观看第一页 | 香蕉毛片| 色福利hd写真video | 亚洲第一黄色网 | 青青草毛片 | 亚洲一级网站 | 久久久88 | 五月天激情开心网 | 欧美资源网| 一起操网址 | 国产一区二区丝袜 | 东方av在线免费观看 | 黄a在线观看| 久久欧美视频 | 国产精品国产馆在线真实露脸 | 在线涩涩| 免费成人高清 | 亚洲专区免费 | 免费在线观看高清影视网站 | 成人日韩在线观看 | www在线视频 | 中文av一区二区 | 成人宗合网 | 韩日视频在线 | 欧美一级黄色片子 | 国产精品中文 | jizz国产免费| 污污视频免费观看 | av首页在线 | 最新日韩av在线 | 亚洲第一区av | av中文字幕亚洲 | 欧美成人综合一区 | 爱草在线| 国产精品视频99 | 性淫影院 | 欧美日韩一区二区不卡 | 激情爱爱网| 在线看日韩av | 精品视频久久久久久久 | 日韩欧美三级在线 | 91久久精品视频 | 久久网中文字幕 | 亚洲天堂资源在线 | 成人中文网| 亚洲最大免费视频 | 天天天天天天天干 | 国产第一页在线播放 | 自拍新婚之夜初交视频1 | 91丨porny丨在线中文 | 三点尽露的大尺度国产 | 人操人操| 一区三区视频 | 一 级做人爱全视频在线看 91亚洲人人在字幕国产 | 亚洲欧美日韩国产精品一区午夜 | 亚洲精品毛片一级91精品 | 久久69av| 欧美激情伊人 | 午夜第一页 | 亚欧日韩av | 成人写真福利网 | 精品资源成人 | 国产sss| 强行侵犯视频在线观看 | 亚洲 欧美 综合 | 一本色道久久综合亚洲二区三区 | 欧美黄色大片免费观看 | 中文字幕99页 | 亚洲成人基地 | 日韩美女少妇 | 日韩国产在线播放 | 成人短视频在线观看 | 性视频免费 | 国产三级三级在线观看 | 亚洲欧美自偷自拍 | 9999久久久久 | 一区二区三区高清在线观看 | 五月婷婷激情在线 | 国产系列在线观看 | 天天综合久久综合 | 一级大黄色片 | 亚洲国产毛片aaaaa无费看 | 日日射视频 | 国产清纯白嫩初高中在线观看性色 | 天堂a视频 | av不卡在线看 | 国产精品亚洲一区二区三区 | 污污在线看 | 欧美日韩国产区 | 国产黄色在线播放 | 久久丝袜视频 | 成年人免费在线 | 热久久国产精品 | 免费成人高清 | 什么网站可以看毛片 | 自拍第一区 | 婷婷丁香在线 | 亚洲视频在线观看免费 | 中文字幕97 | 久爱视频在线观看 | 影音先锋在线国产 | www.国产com | 香港一级纯黄大片 | 亚洲视频图片小说 | 日本99视频 | 91免费视频播放 | 中文字幕在线日亚洲9 | jyzz中国jizz十八岁免费 | 性欧美日本| 国产成年人小视频 | 日日夜夜天天干 | 成人午夜视频精品一区 | 国产一级影院 | 日日夜夜免费精品视频 | 激情久久av一区av二区av三区 | 在线观看av的网站 | 国产一区二区h | 日韩h在线 | 国产大奶| 国产日韩欧美日韩大片 | 撸啊撸av| 久久午夜精品 | 丰满少妇在线观看网站 | av综合一区 | 国产片91 | 国产高潮自拍 | 91视频在线观看网 | 成人爽爽爽 | 日韩激情文学 | 久久99久久99精品免视看婷婷 | 女性向小h片资源在线观看 嫩草视频在线 | 午夜激情久久 | 草久在线观看视频 | 亚洲精品字幕 | 天天看夜夜操 | 免费网站永久免费入口 | 国产91精品一区二区三区四区 | 一区二区三区在线免费播放 | 欧美激情伊人 | 亚洲欧洲综合在线 | 国语一区二区 | 国产黄色免费网站 | 亚洲夜色 | 国产精品美女毛片真酒店 | 久久99精品视频 | 已婚少妇露脸日出白浆 | 一个色在线 | 18色av| 一级片免费网址 | 成人av在线网址 | 亚洲性夜 | 一级黄色片在线播放 | www色网 | 男人午夜免费视频 | 国产女女调教女同 | 亚洲图片欧美自拍 | 国产乱偷 | 国产伦精品一区 | 毛片视屏 | 久久一区视频 | 亚洲色欲色欲综合网站 | 欧美精品日韩少妇 | 国产黄色片子 | 青青青在线视频 | 午夜免费视频 | 欧美日韩综合在线观看 | 欧美日韩少妇 | 日韩视频免费观看 | 在线看国产精品 | 2018中文字幕在线观看 | 国产精品毛片一区二区在线看 | 天天添天天操 | 波多野结衣在线播放视频 | 亚洲 丝袜 自拍 清纯 另类 | www..com黄色| 狠狠撸在线 | 欧美一二| av片亚洲| 国产成人区 | 夜夜狠狠擅视频 | 亚洲黄色小说图片 | 十大污视频 | 成人在线黄色 | 在线成人日韩 | 免费av免费看| 久久久成人免费视频 | 超碰成人网 | 天天干天天插天天射 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产91丝袜在线播放 | 色花堂在线 | 亚洲天堂免费 | 久久久激情视频 | 婷婷激情小说 | 色欧美视频 | 精品国产999 | 欧美黄色大片视频 | 国产欧美一区二区三区鸳鸯浴 | 国产精品一色哟哟哟 | 黄色激情av | 中文在线www | 亚洲大片 | 在线 丝袜 欧美 日韩 制服 | 免费视频www在线观看网站 | 男女激情四射网站 | 欧美7777 | 亚洲男人的天堂在线 | 在线免费观看av网站 | 一级国产精品 | 色播在线| 狠狠操在线视频 | 正在播放精品 | 亚洲成人激情av | 国产一级一片免费播放 | 国产九九热 | 国产拍拍拍 | 激情播播网 | 日韩网 | 日日日日干 | www.午夜视频 | 六月色婷婷 | 俄罗斯美女一级爱片 | av一级在线观看 | 五月天婷婷视频 | 色哟哟网站 | 一级a性色生活片久久毛片 国产成人免费av一区二区午夜 | 欧美一级特黄aaaaaa大片在线观看 | 亚洲黄色自拍视频 | 色屁屁影院www国产高清麻豆 | 91精品久久久久久久久久入口 | 97久久人澡人人添人人爽 | 亚洲一区二视频 | 久久伊人成人网 | 91视频地址 | 亚洲性在线观看 | 在线观看wwww| 色哟哟国产 | av小片| www性 | 中文一区在线 | 久久久久久久一区二区三区 | 四虎黄色片 | 精品小视频在线观看 | 激情欧美一区 | 国产日韩欧美日韩大片 | 二区免费视频 | 日韩二区在线观看 | 国产白拍 | 91theporn国产在线观看 | 瑟瑟av | 日韩欧美国产一区二区三区在线观看 | 国产视频一区二区在线播放 | 色婷婷视频在线 | 国产首页| 91porny九色91啦中文 | 日本特黄特色aaa大片免费 | 亚洲精品视频一区 | 久久中文网| 超碰成人97| 国产sm主人调教女m视频 | 欧美精品在线免费观看 | 俄罗斯女人裸体性做爰 | 国产精品一区二区三区四 | 在哪里可以看黄色片 | 日韩av福利 | 亚洲社区在线 | 久久免费少妇高潮久久精品99 | 中文字幕不卡在线 | 一级黄色aa | 亚洲精品短视频 | 国产精品第一 | av最新天堂 | 韩国美女啪啪 | 亚洲高清免费观看 | 免费网站www在线观看 | 国产色一区二区 | 激情国产在线 | 一区二区三区四区影院 | 欧美性极品xxxx做受 | 欧美射图| 在线观看黄av | 精品国产乱码久久久久久绯色 | 一级中国毛片 | 伦理亚洲 | 伊人激情影院 | 欧美精品极品 | 华丽的外出在线观看 | 成人午夜视频在线免费观看 | 潘金莲一级淫片aaaaa武则天 | 国产三级久久久久 | 性感美女一区二区三区 | 综合av在线 | 奇米影视在线观看 | 91九色视频在线 | 国产视频在 | 久久精品天堂 | 色先锋资源网 | 黄色精品免费看 | 四虎视频国产精品免费入口 | 日批免费观看视频 | aaaaa一级片 99精品欧美 | 欧美精品韩国精品 | 在线观视频免费观看 | 久久久久久久久国产精品 | 国产精品大全 | 久久久国产精品视频 | 成人区精品一区二区婷婷 | 久久久午夜| 婷婷在线综合 | 亚洲天堂福利 | 2018中文字幕在线观看 | 亚洲草草网 | ,午夜性刺激免费看视频 | 国产www精品 | 久久99精品久久久久久 | 国产美女极度色诱视频www | 超碰在线99 | 女人性做爰100部免费 | 亚洲天堂精品在线 | av夜色| 性视频日韩 | 成人污污视频 | 欧美日韩视频 | 亚洲天堂一区在线观看 | 国产一区二区激情 | a久久久久 | 国产精品久久久久aaaa | 日本丰满少妇裸体自慰 | 91免费精品视频 | 新狠狠干 | 国产在线播放网站 | 国产传媒在线视频 | 91黄版| 中文字幕5566 | 国产一区二区三区毛片 | 亚洲精品99久久久久久 | 玖玖视频 | 日韩在线观看一区 | 亚洲欧美成人网 | 午夜插插 | 欧美色人阁 | 91亚洲精品一区二区乱码 | 少妇高潮久久久 | 欧美二区视频 | 激情av中文字幕 | 成人手机av | 黄色免费在线看 | 国产又粗又大又长 | 91亚洲国产成人久久精品麻豆 | 欧美激情偷拍 | 亚洲成人精品视频 | 国产精品久久久久久久久借妻 | 韩国三级中文字幕hd久久精品 | 综合激情网五月 | 欧美黑人性xxx猛交 欧美色欧美色 | 久草视频免费在线观看 | 日本一区二区三区精品 | 激情综合av | 久草最新网址 | 成人毛片在线播放 | 山外人精品影院 | 四虎影院新网址 | 欧美一区二区三区激情 | 亚洲黄色片在线 | 亚洲欧美另类视频 | 国产成人愉拍精品久久 | 成人午夜影视在线观看 | 国产精品一区二区三区四 | 99精品欧美一区二区三区综合在线 | 91中文字幕在线播放 | 中文字幕一区二区三区手机版 | 3级黄色片 | 午夜久久久 | 欧美日韩精品一区二区在线播放 | 日韩精品在线一区二区三区 | av一区二区三区在线 | 亚洲免费在线观看av | 欧美日韩综合一区二区三区 | 亚洲最大福利网站 | av噜噜色 | 一区二区三区免费观看视频 | 久久久久少妇 | 丁香婷婷久久久综合精品国产 | 欧美 日韩 国产 精品 | 我和我的太阳泰剧在线观看泰剧 | 国产乱xxxxx79国语对白 | 日本中文字幕免费观看 | 2019狠狠干 | 亚洲激情文学 | 尤物视频在线观看国产 | 在线免费观看中文字幕 | 精品成人在线 | 欧美一区二区三区在线播放 | 久久久久不卡 | 日韩一区欧美 | 五月激情综合 | 国产免费a视频 | 亚洲综合精品 | 我想看一级黄色片 | 日本精品成人 | 久久久久久久久久综合 | 中文字幕在线免费观看视频 | 国产a√| 在线视频久久 | 欧美日韩亚洲一区二区三区 | av这里只有精品 | 国产午夜激情视频 | 亚洲欧美国产毛片在线 | 天堂精品一区二区三区 | 糖心logo在线观看 | 美女涩涩视频 | 成人香蕉视频在线观看 | 国产精品8 | 黄色小视频在线播放 | 午夜精品一区二区在线观看 | 成人午夜免费福利 | 尤物最新网址 | 国产精品久久久久久久久久辛辛 | 欧美91在线 | 欧美日韩大片 | 色啪视频| 国产亚洲精品久久久久久移动网络 | 91禁蘑菇在线看 | 亚洲动漫精品 | 奇米影视777四色 | 综合五月婷 | 伊人天天色 | 色91视频| 最新国产视频 | 久久人人澡 | 国产chinasex麻豆videos | av天天射| 草久在线观看视频 | 自拍视频啪 | 国产高清视频一区 | 亚洲国产一区二区三区 | 91成人免费视频 | www伊人网 | 国产村民一二三区 | 欧美视频在线观看免费 | 志在出位国语完整在线观看 | 成人日批 | 少妇色欲网 | 激情久久av一区av二区av三区 | 国产3级| 亚洲愉拍自拍 | 国内自拍小视频 | 四虎影院色 | 国产高潮国语对白精品视频网站 | 色呦呦入口 | 欧美激情综合色综合啪啪五月 | 小优视频污 | 国产精品久久天天躁 | av在线播放器| 日本一级片在线播放 | 伊人网视频在线观看 | 欧美亚洲综合在线 | 亚洲最新在线 | 久久不雅视频 | 精品美女www爽爽爽视频 | 超碰一级片 | 国产精品9191 | 欧美一区二区三区成人精品 | 成人国产 | 国产精品亚洲一区二区三区 | 久久伊人影院 | 国产igao为爱做激情在线观看 | 国产精品中文在线 | 久草网在线视频 | 国模私拍一区二区三区 | 免费高清毛片 | 欧美久久久久久久 | 最新在线中文字幕 | 国产免费专区 | 国产精品s色 | www.久久成人| 日日操视频 | 黄色片在线观看视频 | 亚洲爱情岛论坛永久 | 成人天堂av| 这里只有精品免费视频 | 青草伊人网 | 亚洲综合激情网 | 亚洲自拍偷拍网站 | 亚洲aaaaaa特级| 国产18在线观看 | 爱豆国产剧免费观看大全剧集 | 亚洲另类激情综合偷自拍图 | 天天干天天曰 |