精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一個優秀的Vue團隊代碼規范是什么樣子的?

開發 前端
規范與每個團隊和個人都是息息相關的,因為其影響的不只是只是代碼的維護和理解成本,嚴重的時候是會影響成員開發的心情

[[333636]]

 規范與每個團隊和個人都是息息相關的,因為其影響的不只是只是代碼的維護和理解成本,嚴重的時候是會影響成員開發的心情

一個團隊的編碼規范、git規范等,并沒有絕對的最優解,心里要清楚明白沒有銀彈,規范是為了讓團隊統一,提高代碼閱讀性、降低代碼維護成本等,本文是記錄一些在項目code review中常見的規范,僅供參考

JS部分

和渲染無關的數據

vue中data的數據默認便會進行雙向數據綁定,若是將大量的和渲染無關的數據直接放置在data中,將會浪費雙向數據綁定時所消耗的性能,將這些和渲染無關的數據進行抽離并配合Object.freeze進行處理

table中columns數據可以單獨提取一個外部js文件作為配置文件,也可以在當前.vue文件中定義一個常量定義columns數據,因為無論如何都是固定且不會修改的數據,應該使用Object.freeze進行包裹,既可以提高性能還可以將固定的數據抽離,一些下拉框前端固定的數據也建議此操作 

  1. const columnList = Object.freeze([  
  2.   { title: '姓名', key: 'name', align: 'center' },  
  3.   { title: '性別', key: 'gender', align: 'center' }  
  4. ]) 

需要注意的是 Object.freeze() 凍結的是值,這時仍然可以將變量的引用替換掉,還有確保數據不會變才可以使用這個語法,如果要對數據進行修改和交互,就不適合使用凍結了。

Modal框的控制

一個頁面種通常會存在很多個不同功能的彈框,若是每一個彈框都設置一個對應的變量來控制其顯示,則會導致變量數量比較冗余和命名困難,可以使用一個變量來控制同一頁面中的所有Modal彈框的展示

比如某個頁面中存在三個Modal彈框 

  1. // bad  
  2. // 每一個數據控制對應的Modal展示與隱藏  
  3. new Vue({  
  4.     data() {  
  5.         return {  
  6.             modal1: false,  
  7.             modal2: false,  
  8.             modal3: false,  
  9.         }  
  10.     }  
  11. })  
  12. // good  
  13. // 當modalType為對應的值時 展示其對應的彈框  
  14. new Vue({  
  15.     data() {  
  16.         return {  
  17.             modalType: '' // modalType值為 modal1,modal2,modal3  
  18.         }  
  19.     }  
  20. }) 

debounce使用

例如遠程搜索時需要通過接口動態的獲取數據,若是每次用戶輸入都接口請求,是浪費帶寬和性能的

當一個按鈕多次點擊時會導致多次觸發事件,可以結合場景是否立即執行immediate 

  1. <Select :remote-method="remoteMethod">  
  2.     <Option v-for="item in temoteList" :value="item.value" :key="item.id">{{item.label}}</Option>  
  3. </Select>  
  1. import {debounce} from 'lodash'  
  2. methods:{  
  3.     remoteMethod:debounce(function (query) {  
  4.         // to do ...  
  5.        // this 的指向沒有問題  
  6.     }, 200),  

圖片

功能的開發過程中,圖片的處理往往是比較容易被忽略的環節,也會在一定程度影響開發的效率和頁面的性能

  •  圖片壓縮問題,除非特別要求圖片必須高質量的顯示,否則都應該進行對應的壓縮處理
  •  不同業務場景進行圖片格式的選型
    •   JPG 適用于呈現色彩豐富的圖片,JPG 圖片經常作為大的背景圖、輪播圖或 Banner 圖出現等
    •   Logo、顏色簡單且對比強烈的圖片或背景、需要透明度等
    •   將常用且變動頻率很低的小圖片進行合并成雪碧圖,對于變動比較頻繁和小于6KB的圖片進行base64處理
    •   根據項目圖片數量和項目的用戶機型分布等,考慮采取webp進行圖片的處理

路由組件傳參

在組件中使用 $route 會使之與其對應路由形成高度耦合,從而使組件只能在某些特定的 URL 上使用,限制了其靈活性。

使用 props 將組件和路由解耦:

取代與 $route 的耦合 

  1. const User = {  
  2.   template: '<div>User {{ $route.params.id }}</div>
  3.  
  4. const router = new VueRouter({  
  5.   routes: [  
  6.     { path: '/user/:id', component: User }  
  7.   ]  
  8. }) 

通過 props 解耦

這樣你便可以在任何地方使用該組件,使得該組件更易于重用和測試。 

  1. const User = {  
  2.   props: ['id'],  
  3.   template: '<div>User {{ id }}</div> 
  4.  
  5. const router = new VueRouter({  
  6.   routes: [  
  7.     { path: '/user/:id', component: User, props: true },  
  8.     // 對于包含命名視圖的路由,你必須分別為每個命名視圖添加 `props` 選項:  
  9.     {  
  10.       path: '/user/:id',  
  11.       components: { default: User, sidebar: Sidebar },  
  12.       props: { default: true, sidebar: false }  
  13.     }  
  14.   ]  
  15. }) 

參考:路由組件傳參

Vue生命周期

在父子組件中,掌握父子組件對應的生命周期鉤子加載順序可以讓開發者在更合適的時候做適合的事情父組件 

  1. <template>  
  2.   <div>  
  3.     <h3>home</h3>  
  4.     <list @hook:mounted="listMounted" />  
  5.   </div>  
  6. </template>  
  7. <script>  
  8. import List from './list'  
  9. export default {  
  10.   name: "home",  
  11.   components: {  
  12.     List  
  13.   },  
  14.   methods: {  
  15.     listMounted(){  
  16.       console.log('------------ listMounted');  
  17.     }  
  18.   },  
  19.   beforeCreate() {  
  20.     console.log("home beforeCreate"); 
  21.   },  
  22.   created() {  
  23.     console.log("home created");  
  24.   },  
  25.   beforeMount() {  
  26.     console.log("home beforeMount");  
  27.   },  
  28.   mounted() {  
  29.     console.log("home mounted");  
  30.   },  
  31.   beforeDestroy() {  
  32.     console.log("home beforeDestroy");  
  33.   },  
  34.   destroyed() {  
  35.     console.log("home destroyed");  
  36.   }  
  37.  
  38. </script> 

子組件 

  1. <template>  
  2.   <div>  
  3.     list  
  4.   </div>  
  5. </template>  
  6. <script>  
  7. export default {  
  8.   naem: "list",  
  9.   beforeCreate() {  
  10.     console.log("list beforeCreate");  
  11.   },  
  12.   created() {  
  13.     console.log("list created");  
  14.   },  
  15.   beforeMount() {  
  16.     console.log("list beforeMount");  
  17.   },  
  18.   mounted() {  
  19.     console.log("list mounted");  
  20.   },  
  21.   beforeDestroy() {  
  22.     console.log("list beforeDestroy");  
  23.   },  
  24.   destroyed() {  
  25.     console.log("list destroyed");  
  26.   }  
  27.  
  28. </script> 

加載時父子組件的加載順序 

  1. home beforeCreate --> home created --> home beforeMount --> list created --> list beforeMount --> list mounted 

銷毀時父子組件的銷毀順序 

  1. home beforeDestroy --> list beforeDestroy --> list destroyed --> home destroyed 

實際開發過程中會遇到當子組件某個生命周期完成之后通知父組件,然后在父組件做對應的處理

emit up 

  1. // 子組件在對應的鉤子中發布事件  
  2. created(){  
  3.   this.$emit('done')  
  4.  
  5. // 父組件訂閱其方發  
  6. <list @done="childDone"> 

hook

通過@hook監聽子組件的生命周期 

  1. <list @hook:mounted="listMounted" /> 

Select優化

下拉框遍歷時,需要注意options標簽保持同一行,若是存在換行,會導致選中時的值存在多余的空白 

  1. <!-- bad -->  
  2. <Select :remote-method="remoteMethod">  
  3.     <Option v-for="item in temoteList" :value="item.value" :key="item.id">  
  4.         {{item.label}}  
  5.     </Option>  
  6. </Select> 

需要將Options和下拉框的值保持在同一行 

  1. <!-- good -->  
  2. <Select :remote-method="remoteMethod">  
  3.     <Option v-for="item in temoteList" :value="item.value" :key="item.id">{{item.label}}</Option>  
  4. </Select> 

data數據層級

data數據具有數據層級結構,切勿過度扁平化或者嵌套層級過深,若是過度扁平化會導致數據命名空間沖突,參數傳遞和處理,若是層級嵌套過深也會導致vue數據劫持的時候遞歸層級過深,若是嵌套層級喪心病狂那種的,小心遞歸爆棧的問題。而且層級過深會導致數據操作和處理不便,獲取數據做容錯處理也比較繁瑣。一般層級保持2-3層最好。

若是只有一層數據,過于扁平 

  1.  
  2.     name: '',  
  3.     age: '',  
  4.     gender: ''  

導致處理不方便 

  1. // 作為接口參數傳遞  
  2. ajax({  
  3.  this.name, this.age, this.gender  
  4. })  
  5. // 接口獲取數據,批量處理  
  6. ajax().then(res => {  
  7.  const {name, age, gender} = res.data  
  8.     this.name = name  
  9.     this.age = age  
  10.     this.gender = gender  
  11. }) 

適當的層級結構不僅增加代碼的維護和閱讀性,還可以增加操作和處理的便捷性 

  1.  
  2.     person: { // 個人信息  
  3.         name: '',  
  4.         age: '',  
  5.         gender: ''  
  6.     }  

可以針對person進行操作 

  1. // 作為接口參數傳遞  
  2. ajax(this.person)  
  3. // 接口獲取數據,批量處理  
  4. ajax().then(res => {  
  5.  const {name, age, gender} = res.data  
  6.     this.$set(this, 'person', {name, age, gender})  
  7. }) 

策略模式

策略模式的使用,避免過多的if else判斷,也可以替代簡單邏輯的switch 

  1. const formatDemandItemType = (value) => {  
  2.     switch (value) {  
  3.         case 1:  
  4.             return '基礎'  
  5.         case 2:  
  6.             return '高級'  
  7.         case 3:  
  8.             return 'VIP'  
  9.     }  
  10.  
  11. // 策略模式  
  12. const formatDemandItemType2 = (value) => {  
  13.     const obj = {  
  14.         1: '基礎',  
  15.         2: '高級',  
  16.         3: 'VIP',  
  17.     }   
  18.     return obj[value]  

解構

解構賦值以及默認值,當解構的數量小于多少時適合直接解構并賦值默認值,數據是否進行相關的聚合處理 

  1. const {  
  2.   naem = '' 
  3.   age = 10 
  4.   gender = 'man'  
  5. } = res.data  
  6. // bad  
  7. this.name = name  
  8. this.age = age  
  9. this.gender = gender  
  10. // good  
  11. this.person = {  
  12.   naem,  
  13.   age,  
  14.   gender  

職責單一

任何時候盡量是的一個函數就做一件事情,而不是將各種邏輯全部耦合在一起,提高單個函數的復用性和可讀性

每個頁面都會在加載完成時進行數據的請求并展示到頁面 

  1. created() {  
  2.   this.init();  
  3. },  
  4. methods: {  
  5.   // 將全部的請求行為聚合在init函數中  
  6.   // 將每個請求單獨拆分  
  7.   init() {  
  8.     this.getList1()  
  9.     this.getList2()  
  10.   },  
  11.   getList1() {  
  12.     // to do ...  
  13.   },  
  14.   getList2() {  
  15.     // to do ...  
  16.   }  

v-bind

HTML部分

html書寫

編寫template模板時,屬性過多時,是否換行 

  1. <template>  
  2.   <!-- 不換行 -->  
  3.   <VueButton class="icon-button go-up" icon-left="keyboard_arrow_up" v-tooltip="$t('org.vue.components.folder-explorer.toolbar.tooltips.parent-folder')" @click="openParentFolder" /> 
  4.    <!-- 換行 -->  
  5.   <VueButton  
  6.     class="icon-button go-up"  
  7.     icon-left="keyboard_arrow_up"  
  8.     v-tooltip="$t('org.vue.components.folder-explorer.toolbar.tooltips.parent-folder')"  
  9.     @click="openParentFolder"  
  10.   />  
  11. </template> 

實體使用

html中展示一些如<,>,&等字符時,使用字符實體代替 

  1. <!-- bad -->  
  2. <div>  
  3.   > 1 & < 12  
  4. </div>  
  5. <!-- bad -->  
  6. <div>  
  7.   &gt; 1 &amp; &lt; 12  
  8. </div> 

CSS部分

樣式穿透

在開發中修改第三方組件樣式是很常見,但由于 scoped 屬性的樣式隔離,可能需要去除 scoped 或是另起一個 style 。這些做法都會帶來副作用(組件樣式污染、不夠優雅),樣式穿透在css預處理器中使用才生效。

  •  less使用  /deep/ 
  1. <style scoped lang="less">  
  2. .content /deep/ .el-button {  
  3.  height: 60px;  
  4.  
  5. </style> 
  •  scss使用 ::v-deep 
  1. <style scoped lang="scss">  
  2. .content ::v-deep .el-button {  
  3.   height: 60px;  
  4.  
  5. </style> 
  •  stylus使用 >>> 
  1. <style scoped ang="stylus">  
  2. 外層 >>> .custon-components{  
  3.   height: 60px; 
  4.   
  5. </style> 

空格

適當的空格可以提升代碼的閱讀體驗,顯得更為優雅和美觀

選擇器后、屬性值 

  1. .custom-style { // 選擇器和{ 之間空格  
  2.   margin: 0; // 屬性值前  
  3.   transform: scale(1.5, 2.2); // 逗號之后增加空格  

換行

和html類型,當某行的屬性很多,適當的換行可以提高閱讀和美觀 

  1. .custom-style{  
  2.   // 可以在一次聲明中定義一個或多個屬性  
  3.   background: background-clip  
  4.     background-color  
  5.     background-image  
  6.     background-origin  
  7.     background-position  
  8.     background-repeat  
  9.     background-size;  

當一個規則包含多個選擇器時,每個選擇器聲明必須獨占一行,過長導致需要橫向滾動閱讀剩余的內容,應該盡量使得閱讀順序縱向化 

  1. .custom .header .title,  
  2. .other .header .title { 
  3.   color: #f0f;  

嵌套層級

瀏覽器在解析css時,是按照從右到左遞歸匹配的,過深的層級嵌套不僅影響性能,而且還會導致樣式閱讀性和代碼維護性降低,一般層架控制在5層之內

雙引號

屬性選擇器中的值必須用雙引號包圍,不允許使用單引號,也不允許不使用引號,html的屬性值也是推薦使用雙引號,js中使用單引號 

  1. .custom-style{  
  2. font-family: "PingFang SC", "STHeitiSC-Light";  

屬性順序

同一 規則下的屬性在書寫時,應按功能進行分組。并以 Formatting Model(布局方式、位置) > Box Model(尺寸) > Typographic(文本相關) > Visual(視覺效果) 的順序書寫,以提高代碼的可讀性。

解釋:

  •  Formatting Model 相關屬性包括:position / top / right / bottom / left / float / display / overflow 等
  •  Box Model 相關屬性包括:border / margin / padding / width / height 等
  •  Typographic 相關屬性包括:font / line-height / text-align / word-wrap 等
  •  Visual 相關屬性包括:background / color / transition / list-style 等

另外,為增加可讀性,如果包含 content 屬性,應放在屬性的最前面。 

 

責任編輯:龐桂玉 來源: 前端大全
相關推薦

2020-07-15 07:57:17

代碼Vue開發

2020-11-04 11:17:20

好代碼程序員整潔

2022-10-10 08:47:49

ITCIO數據

2021-02-19 10:14:49

云計算公共云

2021-05-08 13:11:58

物聯網IOT物聯網技術

2024-03-04 09:19:33

CSSbackground前端

2021-05-27 09:30:51

Java流程控制

2021-11-29 07:42:44

CSS 技巧CSS 繪圖技巧

2014-04-08 09:56:30

銷售易CRM

2021-12-06 10:51:26

Windows 11微軟廣告

2015-08-21 17:06:41

2023-04-19 15:03:52

2021-09-30 19:12:46

通信網絡ADSL

2022-11-18 10:17:10

2019-09-03 14:57:33

智慧城市虛擬新加坡3D

2021-03-24 15:25:44

AI

2012-10-29 15:45:51

2018-01-16 15:02:20

存儲RAIDSAN

2021-10-04 15:46:31

網絡通信5G

2023-02-17 14:40:06

物聯網供應鏈
點贊
收藏

51CTO技術棧公眾號

av在线免费观看不卡| wwwxx欧美| 亚洲一级黄色录像| 精品久久免费| 亚洲综合色丁香婷婷六月图片| 国产精品三区在线| 精品成人无码久久久久久| 欧美日韩国产传媒| 日韩免费高清av| 国产一区亚洲二区三区| 黄色动漫在线| 成人福利视频网站| 国产精品久久久久久久久久久久| 破处女黄色一级片| 免费av一区| 欧美一级日韩不卡播放免费| 女人和拘做爰正片视频| 国内精品久久久久国产| 91啦中文在线观看| 91理论片午午论夜理片久久| wwwwww国产| 欧美在线视屏| 一区二区亚洲精品国产| 欧美极品jizzhd欧美仙踪林| 国产激情久久| 欧美日韩一区二区在线| 9色视频在线观看| 岛国在线视频免费看| 成人综合婷婷国产精品久久蜜臀| 国产精品最新在线观看| 亚洲天堂一区在线| 国产精品国产三级国产在线观看 | 日韩人妻精品无码一区二区三区| 免费网站免费进入在线| 久久久精品黄色| 国产欧美在线一区二区| www.国产免费| 国内外成人在线| 国产精品海角社区在线观看| 国产美女激情视频| 亚洲福利国产| 欧美大尺度激情区在线播放| 日韩在线一卡二卡| 欧美综合在线视频观看| 亚洲色图偷窥自拍| 91中文字幕永久在线| 日韩电影不卡一区| 亚洲第一网中文字幕| 国产ts在线观看| 伊人久久亚洲| 日韩欧美国产一区二区在线播放| 亚洲一二三不卡| 欧美成人免费全部网站| 欧美日韩美少妇| 手机看片一级片| 国产极品一区| 欧美巨大另类极品videosbest | 91在线丨porny丨国产| 国产精品国产精品国产专区蜜臀ah | 美女扒开腿让男人桶爽久久软| 亚洲国产日韩综合久久精品| 欧美一区二区激情| av影视在线看| 精品久久久久久亚洲国产300| 又粗又黑又大的吊av| 男人av在线播放| 色噜噜久久综合| 国产又黄又猛又粗又爽的视频| www成人在线视频| 欧美色中文字幕| 亚洲天堂网站在线| 亚洲一区二区三区四区电影| 亚洲大尺度美女在线| 国产精品无码网站| 精品国产一区二区三区久久久樱花| 亚洲美女av在线| 潮喷失禁大喷水aⅴ无码| 99视频精品视频高清免费| 久久亚洲精品小早川怜子66| 免费视频一二三区| 国产农村妇女精品一区二区| 国产精品成人v| 99久久国产热无码精品免费| 粉嫩13p一区二区三区| 免费在线观看91| 欧美18hd| 精品久久久久人成| 天堂av8在线| 加勒比色老久久爱综合网| 亚洲视频在线观看免费| 国产精品国产精品88| 亚洲人体大胆视频| 国产欧美久久久久久| 国产黄色片免费| 久久久久久久久久电影| 51xx午夜影福利| 高潮一区二区| 7878成人国产在线观看| 亚洲国产精品成人综合久久久| 日韩精品一区二区三区免费观影 | 日本特黄久久久高潮| 日韩一区二区免费在线电影 | 国模精品一区二区三区| 蜜桃av噜噜一区二区三区麻豆| 99精品视频在线免费观看| 亚洲国产激情一区二区三区| 青草在线视频| 欧洲生活片亚洲生活在线观看| 亚洲图片 自拍偷拍| 伊人久久综合影院| 久久91亚洲人成电影网站| 久久久久在线视频| 丰满亚洲少妇av| 欧美一区二视频在线免费观看| 污片在线免费观看| 欧美性感一区二区三区| 极品白嫩丰满美女无套| 亚洲第一偷拍| 国产精品pans私拍| 五月婷婷六月丁香综合| 一区二区在线观看视频| 亚洲第一狼人区| 亚洲影院天堂中文av色| 久久久伊人欧美| 99久久国产免费| 亚洲欧洲三级电影| 成人免费xxxxx在线视频| 米奇精品关键词| 欧美成人精品h版在线观看| 中文字幕乱码一区二区| 久久久www成人免费无遮挡大片| 日韩a级在线观看| 日韩高清在线观看一区二区| 久久久国产视频91| 波多野结衣在线电影| 久久先锋影音av鲁色资源网| 国产毛片久久久久久国产毛片| 999精品视频在线观看| 中文字幕精品视频| 国产成人精品亚洲| 国产日本欧美一区二区| 无码无遮挡又大又爽又黄的视频| 秋霞在线一区| 久久久久久com| 亚洲乱熟女一区二区| 夜夜爽夜夜爽精品视频| 日本xxxx免费| 欧美激情偷拍| 不卡一区二区三区四区五区| av黄色在线| 欧美videos中文字幕| 久久久久久天堂| 懂色av中文一区二区三区| 福利在线一区二区| 成人动态视频| 欧美亚洲在线视频| 欧洲免费在线视频| 在线视频亚洲一区| 久久视频一区二区三区| 久久福利资源站| 国产人妻互换一区二区| 国内不卡的一区二区三区中文字幕 | 欧美日韩亚洲一区| 高清视频一区二区三区| 黄色大片在线| 日韩第一页在线| 波多野结衣一二区| 国产精品卡一卡二| 爱情岛论坛亚洲自拍| 亚洲午夜电影| 欧美精品二区三区四区免费看视频 | 亚洲精品第一国产综合野| 亚洲欧美日韩中文字幕在线观看| 国产在线欧美| 久久久水蜜桃| 激情久久一区二区| 欧美丰满少妇xxxx| 欧洲一区av| 欧美日韩成人一区| 国产主播在线观看| 国产香蕉久久精品综合网| www.超碰97.com| 今天的高清视频免费播放成人| 久久国产精品 国产精品| 草莓视频成人appios| 久久91精品国产91久久跳| 肉丝一区二区| 91精品国产麻豆| 国产成人免费观看视频 | 国产亚洲第一页| 久久亚洲欧美国产精品乐播| 久久久久久久久久一区二区| 日韩视频中文| 一级特黄录像免费播放全99| 精品网站aaa| 成人激情视频在线| 手机av在线| 欧美成人精品不卡视频在线观看| 天天操天天操天天| 91精品蜜臀在线一区尤物| 一区二区三区视频免费看| 国产精品久久久久久久岛一牛影视 | 婷婷久久综合九色综合99蜜桃| 久久久伊人欧美| 免费网站黄在线观看| 亚洲精品一区二三区不卡| 国产男女无套免费网站| 色欧美88888久久久久久影院| 国产女人被狂躁到高潮小说| 国产偷国产偷亚洲高清人白洁| 久久久久亚洲av无码网站| 麻豆成人91精品二区三区| 1024av视频| 国产精品www.| 中文字幕剧情在线观看一区| 亚洲瘦老头同性70tv| 高清国产一区| 99热这里有精品| 国产精品日本精品| xx欧美视频| 97国产精品视频| 新版中文在线官网| 久久激情视频免费观看| yourporn在线观看中文站| 精品国产污网站| 国产美女明星三级做爰| 在线观看91精品国产入口| 国产成人免费看| 婷婷激情综合网| 久久精品这里有| 亚洲六月丁香色婷婷综合久久 | 欧美挠脚心网站| 亚洲第一中文字幕在线观看| 国产aⅴ一区二区三区| 欧美日韩一区三区四区| 亚洲精品国产无码| 色婷婷狠狠综合| 久久人妻免费视频| 精品高清美女精品国产区| 日本网站免费观看| 亚洲电影在线免费观看| 欧美亚洲天堂网| 亚州成人在线电影| 亚洲国产成人精品激情在线| 午夜久久久久久久久| 亚洲国产综合久久| 香蕉乱码成人久久天堂爱免费| 日韩av一区二区在线播放| 亚洲国产美国国产综合一区二区| 精品一区免费观看| 午夜精品在线视频一区| 国产又黄又粗又爽| 欧美性xxxx在线播放| 日韩免费av网站| 在线观看免费一区| 国产一区二区在线视频观看| 9191成人精品久久| www男人的天堂| 亚洲电影免费观看高清完整版在线| 色哟哟国产精品色哟哟| 日韩高清免费观看| 福利在线午夜| 日韩一区二区精品视频| 在线免费观看的av| 久久久这里只有精品视频| 樱花草涩涩www在线播放| 国产成人欧美在线观看| 欧美91在线|欧美| 91九色蝌蚪成人| 乱亲女h秽乱长久久久| 欧美一区2区三区4区公司二百| 欧美久久综合网| 日韩精品一区二区三区电影| 伊人久久婷婷| 欧美私人情侣网站| 麻豆精品一区二区三区| 永久免费看片在线观看| 91香蕉视频mp4| 99热6这里只有精品| 一区二区三区日本| 亚洲自拍一区在线观看| 欧美区在线观看| 欧美视频一二区| 自拍偷拍亚洲欧美| 女子免费在线观看视频www| 日韩免费黄色av| 国产午夜精品一区在线观看| 国产一区二区三区免费不卡| 日韩精品dvd| 欧美视频在线观看视频| 青青青伊人色综合久久| 国产国语老龄妇女a片| 国产免费成人在线视频| 久草中文在线视频| 欧美自拍偷拍一区| 丰满人妻妇伦又伦精品国产| 在线成人免费网站| av有码在线观看| 91精品视频一区| 亚洲电影一级片| 老司机激情视频| 欧美96一区二区免费视频| 色综合久久五月| 亚洲欧洲日韩综合一区二区| 国产精品久久久久久人| 亚洲精品一区二区三区影院 | 亚洲免费国产视频| 夜夜躁日日躁狠狠久久88av| av影院在线| 99国精产品一二二线| 91亚洲自偷观看高清| 激情五月开心婷婷| 成人一道本在线| 亚洲波多野结衣| 欧美视频在线观看一区| 天堂视频中文在线| 欧美日韩国产成人| 天堂久久一区| 日韩尤物视频| 久久国产精品久久久久久电车| 黑人玩弄人妻一区二区三区| 亚洲欧美激情插| 91国内精品久久久| 一区二区三区高清国产| 亚洲最新无码中文字幕久久| 精品无人区一区二区三区竹菊| 欧美视频导航| 99热这里只有精品2| 国产精品久久久久久久久久久免费看 | 日韩av一区二区三区四区| 三叶草欧洲码在线| 香蕉成人伊视频在线观看| 亚洲精品久久久狠狠狠爱| 久久97精品久久久久久久不卡| 国产成年精品| 日韩写真欧美这视频| 日韩欧美亚洲区| 国产在线视频网| 日韩视频免费大全中文字幕| 男人皇宫亚洲男人2020| 久久国产欧美精品| 亚洲免费成人| 亚洲自拍偷拍精品| 亚洲国产精品久久艾草纯爱| 午夜老司机福利| 久久久久久网址| 久久99精品国产自在现线| 韩国日本不卡在线| 久久r热视频| 日韩电影天堂视频一区二区| 久久精品亚洲| 午夜精产品一区二区在线观看的| 日本道在线观看一区二区| 国产黄色免费在线观看| 国产精品丝袜久久久久久不卡| 久久性感美女视频| 国产传媒免费观看| 有坂深雪av一区二区精品| 国产小视频免费观看| 国模极品一区二区三区| 久9re热视频这里只有精品| 黄色片视频在线免费观看| 久久久噜噜噜久噜久久综合| 亚洲黄网在线观看| 日日噜噜噜夜夜爽亚洲精品| 91精品国产色综合久久不卡粉嫩| 女女百合国产免费网站| 成人精品电影在线观看| 成人午夜淫片100集| 在线视频欧美日韩| 日韩精品三级| 女人喷潮完整视频| 国产欧美va欧美不卡在线| 国产免费无遮挡| 2019中文在线观看| 日韩黄色大片网站| 久久久久久久穴| 色综合久久88色综合天天免费| 午夜在线小视频| 国产传媒一区二区| 日韩精品五月天| 欧美成人精品欧美一| 国产视频亚洲视频| 99精品女人在线观看免费视频| 欧美无砖专区免费| 91精品1区| 亚洲欧洲免费视频| 波多野结衣mp4| 少妇高潮久久77777| 亚洲视频国产精品| 三级4级全黄60分钟| 亚洲丝袜美腿综合| 婷婷丁香花五月天| 国产欧美日韩专区发布| 尹人成人综合网| 在线看片中文字幕| 欧美精品一区二区三区蜜桃| 亚洲mmav| 自慰无码一区二区三区| 日韩专区中文字幕一区二区|