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

jQuery === 面條式代碼?

開發 開發工具
自從React/Vue等框架流行之后,jQuery被打上了面條式代碼的標簽,甚至成了“過街老鼠”,好像誰還在用jQuery,誰就還活在舊時代,很多人都爭先恐后地擁抱新框架,各大博客網站有很大一部分的博客都在介紹新的框架,爭當時代的“弄潮兒”。

jQuery

自從React/Vue等框架流行之后,jQuery被打上了面條式代碼的標簽,甚至成了“過街老鼠”,好像誰還在用jQuery,誰就還活在舊時代,很多人都爭先恐后地擁抱新框架,各大博客網站有很大一部分的博客都在介紹新的框架,爭當時代的“弄潮兒”。新框架帶來的新的理念,新的開發方式不可否認帶來了生產效率,但是jQuery等就應該被打上“舊時代”面條式代碼的標簽么?

我們從一篇文章說起:《React.js 的介紹 – 針對了解 jQuery 的工程師(譯)》,英文原文是這個《React.js Introduction For People Who Know Just Enough jQuery To Get By》, 這篇文章我好久前就看過,現在再把它翻出來,里面對比了下jQuery和React分別實現一個發推的功能,作者用jQuery寫著寫著代碼就亂套了,而用React不管需求多復雜,代碼條理依舊很清晰。

我們一步步按照原文作者的思路來拆解。

(1)輸入個數為0時,發送按鈕不可點擊

如下圖所示,當輸入框沒有內容時,發推按鈕置灰不可點,有內容點才能點。


作者寫的代碼是這樣的:

  1. // 初始化狀態 
  2. $("button").prop("disabled"true); 
  3.   
  4. // 文本框的值發生變化時 
  5. $("textarea").on("input"function() { 
  6.   // 只要超過一個字符,就 
  7.   if ($(this).val().length > 0) { 
  8.     // 按鈕可以點擊 
  9.     $("button").prop("disabled"false); 
  10.   } else { 
  11.     //否則,按鈕不能點擊 
  12.     $("button").prop("disabled"true); 
  13.   } 
  14. }); 

這個代碼本身寫得很累贅,首先,既然一開始那個button是disabled的,那就直接在html上寫個disabled屬性就行了:

  1. <form class="tweet-box"
  2.     <textarea name="textMsg"></textarea> 
  3.     <input disabled type="submit" name="tweet" value="Tweet"
  4. </form> 

第二個要控制按鈕的狀態,其實核心只要一行代碼就行了,不需要寫那么長:

  1. let form = $(".tweet-box")[0]; 
  2. $(form.textMsg).on("input"function() { 
  3.     form.tweet.disabled = this.value.length <= 0; 
  4. }).trigger("input"); 

這個代碼應該夠簡潔了吧,而且代碼在jQuery和原生之間來回切換,游刃有余。

(2)實現剩余字數功能

如下圖所示:


這個也好實現:

  1. let form = $(".tweet-box")[0], 
  2.     $leftWordCount = $("#left-word-count"); 
  3.   
  4. $(form.textMsg).on("input"function() { 
  5.     // 已有字數 
  6.     let wordsCount = this.value.length; 
  7.     $leftWordCount.text(140 - wordsCount); 
  8.     form.tweet.disabled = wordsCount <= 0;  
  9. }); 

(3)添加圖片按鈕

如下圖所示,左下角多了一個選擇照片的按鈕:


如果用戶選擇了照片,那么可輸入字數將會減少23個字符,并且Add Photo文案要變成Photo Added。我們先來看下作者是怎么實現的,如下代碼:

  1. if ($(this).hasClass("is-on")) { 
  2.   $(this) 
  3.     .removeClass("is-on"
  4.     .text("Add Photo"); 
  5.   $("span").text(140 - $("textarea").val().length); 
  6. else { 
  7.   $(this) 
  8.     .addClass("is-on"
  9.     .text("✓ Photo Added"); 
  10.   $("span").text(140 - 23 - $("textarea").val().length); 

如果代碼像作者這樣寫的話確實是比較亂,而且比較面條式。但是我們可以優雅地實現。首先,選擇照片一般會寫一個input[type=file]的隱藏輸入框蓋在上傳圖標下面:

  1. <div class="upload-container"> 
  2.     <img src="upload-icon.png" alt> 
  3.     <span id="add-photo">Add Photo</span> 
  4.     <input type="file" name="photoUpload"> 
  5. </div> 

然后監聽它的change事件,在change事件里面給form套一個類:

  1. $(form.photoUpload).on("change"function() { 
  2.     // 如果選擇了照片則添加一個photo-added的類 
  3.     this.value.length ? $(form).addClass("photo-added"
  4.                 // 否則去掉 
  5.                 : $(form).removeClass("photo-added"); 
  6.              
  7. }); 

然后就可以來實現文案改變的需求了,把上面#add-photo的span標簽添加兩個data屬性,分別是照片添加和未添加的文案,如下代碼所示:

  1. <span id="add-photo" data-added-text="Photo Added"  
  2.       data-notadded-text="Add Photo"></span> 

通過form的類結合before/after偽類控制html上的文案,如下代碼所示:

  1. #add-photo:before { 
  2.     content: attr(data-empty-text); 
  3.   
  4. form.photo-added #add-photo:before { 
  5.     content: attr("data-added-text); 

這樣就可以了,我們算是用了一個比較優雅的方式實現了一個文案變化的功能,其中CSS的attr可以兼容到IE9,并且這里html/css/js相配合,共同完成這個變化的功能,這應該也挺好玩的。

剩下一個要減掉23字符的需求,只需要在減掉的時候判斷一下:

  1. $(form.textMsg).on("input"function() { 
  2.     // 已有字數 
  3.     let wordsCount = this.value.length; 
  4.     form.tweet.disabled = wordsCount <= 0; 
  5.     $leftWordCount.text(140 - wordsCount -  
  6.             //如果已經添加了圖片再減掉23個字符 
  7.             ($(form).hasClass("photo-added") ? 23 : 0)); 
  8. }); 

然后在選擇圖片之后trigger一下,讓文字發生變化,如下代碼倒數第二行:

  1. /* 
  2.  * @trigger 會觸發文字輸入框的input事件以更新剩余字數 
  3.  */ 
  4. $(form.photoUpload).on("change"function() { 
  5.     // 如果選擇了照片則添加一個photo-added的類 
  6.     this.value.length ? $(form).addClass("photo-added") :  
  7.                 // 否則去掉 
  8.                 $(form).removeClass("photo-added"); 
  9.     $(form.textMsg).trigger("input"); 
  10. }); 

這里又使用了事件的機制,用reac應該基本上都是用狀態state控制了。

再來看***一個功能。

(4)沒有文字但是有照片發推按鈕要可點

上面是只要沒有文字,那么發推按鈕不可點,現在要求有圖片就可點。這個也好辦,因為如果有圖片的話,form已經有了一個類,所以只要再加一個判斷就可以了:

  1. $(form.textMsg).on("input"function() { 
  2.     // 已有字數 
  3.     let wordsCount = this.value.length; 
  4.     form.tweet.disabled = wordsCount <= 0  
  5.             //disabled再添加一個與判斷 
  6.             && !$(form).hasClass("photo-added"); 
  7.     $leftWordCount.text(140 - wordsCount -  
  8.             //如果已經添加了圖片再減掉23個字符 
  9.             ($(form).hasClass("photo-added") ? 23 : 0)); 
  10. }); 

***看一下,匯總的JS代碼,加上空行和注釋總共只有23行:

  1. let form = $(".tweet-box")[0], 
  2.     $leftWordCount = $("#left-word-count"); 
  3.   
  4. $(form.textMsg).on("input"function() { 
  5.     // 已有字數 
  6.     let wordsCount = this.value.length; 
  7.     form.tweet.disabled = wordsCount <= 0  
  8.             //disabled再添加一個與判斷 
  9.             && !$(form).hasClass("photo-added"); 
  10.     $leftWordCount.text(140 - wordsCount -  
  11.             //如果已經添加了圖片再減掉23個字符 
  12.             ($(form).hasClass("photo-added") ? 23 : 0)); 
  13. }); 
  14.   
  15. /* 
  16.  * @trigger 會觸發文字輸入框的input事件以更新剩余字數 
  17.  */ 
  18. $(form.photoUpload).on("change"function() { 
  19.     // 如果選擇了照片則添加一個photo-added的類 
  20.     this.value.length ? $(form).addClass("photo-added") :  
  21.             // 否則去掉 
  22.             $(form).removeClass("photo-added"); 
  23.     $(form.textMsg).trigger("input"); 
  24. }); 

html大概有10行,還有6行核心CSS,不過這兩個比較易讀。再來看一下React的完整版本,作者的實現:

  1. var TweetBox = React.createClass({ 
  2.   getInitialState: function() { 
  3.     return { 
  4.       text: ""
  5.       photoAdded: false 
  6.     }; 
  7.   }, 
  8.   handleChange: function(event) { 
  9.     this.setState({ text: event.target.value }); 
  10.   }, 
  11.   togglePhoto: function(event) { 
  12.     this.setState({ photoAdded: !this.state.photoAdded }); 
  13.   }, 
  14.   remainingCharacters: function() { 
  15.     if (this.state.photoAdded) { 
  16.       return 140 - 23 - this.state.text.length; 
  17.     } else { 
  18.       return 140 - this.state.text.length; 
  19.     } 
  20.   }, 
  21.   render: function() { 
  22.     return ( 
  23.       <div className="well clearfix"
  24.         <textarea className="form-control" 
  25.                   onChange={this.handleChange}></textarea> 
  26.         <br/> 
  27.         <span>{ this.remainingCharacters() }</span> 
  28.         <button className="btn btn-primary pull-right" 
  29.           disabled={this.state.text.length === 0 && !this.state.photoAdded}>Tweet</button> 
  30.         <button className="btn btn-default pull-right" 
  31.           onClick={this.togglePhoto}> 
  32.           {this.state.photoAdded ? "✓ Photo Added" : "Add Photo" } 
  33.         </button> 
  34.       </div> 
  35.     ); 
  36.   } 
  37. }); 
  38.   
  39. React.render( 
  40.   <TweetBox />, 
  41.   document.body 
  42. ); 

React的套路是監聽事件然后改變state,在jsx的模板里,使用這些state展示,而jQuery的套路是監聽事件,然后自己去控制DOM展示。React幫你操作DOM,jQuery要自己去操作DOM,前者提供了便利但同時也失去了靈活性,后者增加了靈活性但同時增加了復雜度。

使用jQuery不少人容易寫出面條式的代碼,但是寫代碼的風格我覺得和框架沒關系,關鍵還在于你的編碼素質,就像你用了React寫class,你就可以說你就是面向對象了?不見得,我在《JS與面向對象》這篇文章提到,寫class并不代表你就是面向對象,面向對象是一種思想而不是你代碼的組織形式。一旦你離開了React的框架,是不是又要回到面條式代碼的風格了?如果是的話那就說明你并沒有沒有掌握面向對象的思想。不過,React等框架能夠方便地組件化,這點是不可否認的。

還有一個需要注意的是,框架會幫你屏蔽掉很多原生的細節,讓你專心于業務邏輯,但往往也讓你喪失了原生的能力不管是html還是js,而這才是最重要的功底。例如說對于事件,由于所有的事件都是直接綁在目標元素,然后通過state或者其它第三方的框架進行傳遞,這樣其實就沒什么事件的概念了。所以需要警惕使用了框架但是喪失了基本的前端能力,再如ajax分頁改變url,或者說單頁面路由的實現方式,還有前后退的控制,基本上能夠完整回答地比較少。很多人都會用框架做頁面,但是不懂JS.

原文鏈接:https://fed.renren.com/2017/09/03/jquery-not-noodle-code/ 

【本文是51CTO專欄作者“人人網FED”的原創稿件,轉載請通過51CTO聯系原作者獲取授權】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2020-02-19 08:00:00

微服務架構分布式代碼

2017-02-08 10:56:32

光纖產能技術

2017-10-11 16:19:36

jquery留言框設計

2020-12-17 07:59:46

聲明式代碼命令式代碼代碼

2014-09-04 09:48:32

jQuery響應式

2011-11-02 17:17:06

jQuery

2012-06-13 10:17:40

jQuery

2025-10-11 04:15:00

2012-10-11 09:09:26

jQueryJSWeb

2013-07-29 14:28:43

JQueryJQuery實現分頁分頁程序代碼

2012-04-26 13:12:09

jQuery代碼優化

2020-09-04 06:27:22

編碼命令式聲明式代碼

2022-05-28 11:00:57

安全編碼安全代碼應用安全

2012-04-24 14:06:37

jQuery代碼

2014-04-22 11:01:56

jQuery代碼

2012-05-07 09:53:10

jQuery

2015-11-05 09:07:12

代碼傻瓜式

2024-10-22 09:39:51

2009-07-21 17:16:34

Scala函數式指令式

2011-11-23 09:21:43

jQuery
點贊
收藏

51CTO技術棧公眾號

亚洲色图清纯唯美| 久久99国产精品尤物| 国产视频丨精品|在线观看| 日本福利视频在线| 成人全视频高清免费观看| 激情综合网天天干| 97视频在线观看免费| 在线观看国产精品一区| 中文字幕日韩在线| 一本色道久久综合狠狠躁的推荐| 一区二区三视频| 殴美一级特黄aaaaaa| 蜜臀精品久久久久久蜜臀| 欧美美女18p| 久久国产柳州莫菁门| 欧美大片91| 在线观看视频一区二区欧美日韩| 日韩视频一二三| 国产精品四虎| 成人免费va视频| 成人精品福利视频| 亚洲乱码国产乱码精品| 尹人成人综合网| 综合欧美国产视频二区| 亚洲国产精品自拍视频| 精品国产第一国产综合精品| 色狠狠一区二区三区香蕉| 日韩精品一区二区三区四| 91伦理视频在线观看| 91免费小视频| 国产精品一区二区在线观看| 一级日韩一级欧美| 爽好多水快深点欧美视频| 欧美黑人性猛交| 午夜剧场免费在线观看| 成人3d动漫在线观看| 亚洲第一精品夜夜躁人人躁| 波多野结衣免费观看| 123成人网| 91久久精品网| 欧美s码亚洲码精品m码| 福利成人导航| 亚洲综合一二区| 99亚洲国产精品| 免费a级在线播放| 日本一区二区三区国色天香| 九九九九九精品| 色婷婷av一区二区三区之红樱桃 | 天天干天天干天天干天天干天天干| av中文字幕在线看| 玉米视频成人免费看| 日本成人性视频| 日p在线观看| 亚洲国产精品激情在线观看| 日韩av在线电影观看| 视频三区在线观看| 国产三级一区二区| 日韩精品久久久免费观看 | 中文字幕亚洲激情| 免费黄色片网站| 大片网站久久| 日日噜噜噜夜夜爽亚洲精品| 色偷偷www8888| 伊人成综合网| 久久久亚洲精选| av大片免费在线观看| 国产欧美日韩一级| 国产91露脸中文字幕在线| 波多野结衣不卡| 免费在线观看成人| 亚洲一区二区三区久久| 精品国产999久久久免费| 国产凹凸在线观看一区二区| 国产成人精品日本亚洲11| 色婷婷综合视频| 久久久五月婷婷| 一本一道久久a久久精品综合 | 小早川怜子一区二区三区| 精品视频一区二区三区在线观看| 日韩欧美成人一区| 中文乱码人妻一区二区三区视频| 中国av一区| 日韩中文理论片| 久久99久久久| 久久久久网站| 91影视免费在线观看| 欧美视频在线观看一区二区三区| 26uuu精品一区二区| 视频一区在线免费观看| 日本一级理论片在线大全| 五月天一区二区三区| 91淫黄看大片| 免费看日产一区二区三区| 亚洲娇小xxxx欧美娇小| 成人黄色a级片| 国产精品s色| 国产va免费精品高清在线| 国产乱码精品一区二区三区精东| 成人高清视频在线观看| 手机看片福利永久国产日韩| 免费不卡av| 在线观看一区二区视频| av天堂一区二区| 日韩中字在线| 欧美最顶级的aⅴ艳星| 一区二区三区亚洲视频| 99久久夜色精品国产网站| 伊人色综合久久天天五月婷| 欧美xxxx黑人又粗又长| 欧美性videosxxxxx| 东京热av一区| 亚洲澳门在线| 国产精品福利观看| 凸凹人妻人人澡人人添| 亚洲色图一区二区| 亚洲精品中文字幕无码蜜桃| 九九热播视频在线精品6 | www欧美xxxx| 69堂精品视频| 91资源在线播放| 亚洲欧美日韩视频二区| av日韩免费电影| 欧美r级在线| 在线亚洲+欧美+日本专区| 国产大学生视频| 欧美激情91| 国产日韩换脸av一区在线观看| 日产精品久久久久久久性色| 亚洲一区成人在线| 亚洲男人天堂2021| 91麻豆精品国产91久久久平台| 国产极品jizzhd欧美| 视频午夜在线| 欧美性生交xxxxx久久久| 成人在线电影网站| 亚洲网站视频| 国产91一区二区三区| 黄色av免费在线| 在线播放中文一区| 国产午夜精品理论片| 久久av资源网| 天天成人综合网| 日韩成人精品一区二区三区| 色哟哟网站入口亚洲精品| 97人妻精品视频一区| 国产日韩欧美一区二区三区乱码| 久久久久免费精品| 成人黄色av| 国产精品一区久久| 免费人成在线观看播放视频| 欧美精选午夜久久久乱码6080| 大胸美女被爆操| 美女视频一区二区| 在线观看欧美激情| 精品视频一二| 国内精久久久久久久久久人| 日韩性xxxx| 色先锋aa成人| 卡一卡二卡三在线观看| 青青草国产成人99久久| 天天人人精品| 国产精久久久| 久久久久亚洲精品国产| 色婷婷av一区二区三| 欧美性xxxx在线播放| 无码人妻精品一区二区中文| 日韩二区三区在线观看| 亚洲国产精品www| 只有精品亚洲| 久久久久久久国产精品| 日韩大胆人体| 欧美日韩午夜精品| 中文字幕在线有码| 波多野结衣中文字幕一区| av动漫免费看| 色综合天天爱| 国产精品福利视频| 色婷婷综合久久久中字幕精品久久| 最近2019中文字幕第三页视频| 国产成人精品白浆久久69| 亚洲1区2区3区视频| 国产精品久久久久久久av| 久久精品国产成人一区二区三区| 欧妇女乱妇女乱视频| 亚洲永久精品唐人导航网址| 成人精品视频久久久久| 欧美人体视频xxxxx| 亚洲无av在线中文字幕| 精品久久久中文字幕人妻| 午夜激情综合网| 日韩精品久久久久久久的张开腿让| 丰满放荡岳乱妇91ww| 免费观看成人网| 激情欧美国产欧美| 亚洲精品国产精品国自产观看| 亚洲一二av| 国产精品女人久久久久久| 污污网站在线观看视频| 亚洲欧洲日韩一区二区三区| 午夜免费福利网站| 免费视频久久| 亚洲中文字幕无码一区二区三区 | 黑森林国产精品av| 日韩中文字幕视频在线| 性插视频在线观看| 6080日韩午夜伦伦午夜伦| 亚洲 欧美 日韩 综合| 亚洲品质自拍视频| av网在线播放| 成人a免费在线看| 日韩视频在线观看一区二区三区| 亚洲欧美高清| 丁香六月激情婷婷| 91精品国产91久久久久久黑人| 欧美日韩国产一二| 国产一级成人av| 97超碰资源| 日本a人精品| 国产成人精品免费久久久久| 操人在线观看| 欧美激情高清视频| av网站免费在线观看| 色狠狠av一区二区三区香蕉蜜桃| 免费国产在线视频| 亚洲精品国产拍免费91在线| 一二三区中文字幕| 欧美伊人精品成人久久综合97| 日本中文字幕在线| 精品福利樱桃av导航| 免费在线观看黄色av| 亚洲欧美一区二区三区国产精品 | 你懂的网址国产 欧美| 亚洲精品中文字幕乱码三区不卡| 久久99久久人婷婷精品综合| 激情视频一区二区| 国产无遮挡裸体免费久久| 国产aⅴ精品一区二区三区黄| 韩国三级大全久久网站| 成人免费午夜电影| 国产精品久久久久久久久久辛辛| 国产精品美乳在线观看| 91成人抖音| 国产精品久久久久久超碰| 亚洲成人一区在线观看| 国产精品成人国产乱一区| 欧美电影网址| 国产精品久久久久999| 全球最大av网站久久| 国产精品自拍偷拍| 亚洲精品伊人| 91福利视频导航| xxxx日韩| 狠狠色伊人亚洲综合网站色| 国产精品99久久免费观看| 精品国产一区二区三| 妖精视频一区二区三区| 日韩电影在线播放| 日韩理论电影大全| 先锋影音男人资源| 国产综合欧美| 日韩av黄色网址| 青青草成人在线观看| 男人午夜视频在线观看| 国产成人免费视频网站 | 麻豆一区二区| 日韩视频在线观看国产| 久久婷婷蜜乳一本欲蜜臀| 熟女熟妇伦久久影院毛片一区二区| 在线国产一区二区| 每日在线观看av| 国产一区导航| 奇米影视四色在线| 福利一区二区在线| 国产黄片一区二区三区| 亚洲丝袜精品丝袜在线| 日韩av片在线播放| 在线免费视频一区二区| 99热这里只有精品9| 亚洲国产精品高清久久久| 国产三级在线免费观看| 久久久精品一区| аⅴ资源天堂资源库在线| 国产精品久久久久久久久免费看| 欧美午夜在线播放| 欧美伦理一区二区| 综合久久精品| 日本xxxxxxx免费视频| 国产一区二区中文字幕| 国产 中文 字幕 日韩 在线| 国产精品久久毛片a| 五月天婷婷网站| 欧美日韩国产高清一区二区 | 九九九九免费视频| 看片网站欧美日韩| 国产麻豆天美果冻无码视频 | 久久久久久久久久久99| 久久国产精品一区二区| 艳妇乳肉亭妇荡乳av| 国产精品久久久久影院老司| 中文字幕一区二区三区精品| 欧美理论片在线| 男男电影完整版在线观看| 欧美日本在线视频中文字字幕| 欧美国产日韩电影| 久久大片网站| 中文字幕乱码亚洲无线精品一区| 欧美日韩一区二区在线免费观看 | 欧美日韩另类一区| 瑟瑟在线观看| 久久久久久网址| 亚洲国产91视频| 日韩国产在线一区| 99热精品在线观看| 一起草最新网址| 国产精品久久久爽爽爽麻豆色哟哟| 国产91精品一区| 精品久久久久久久一区二区蜜臀| 在线观看麻豆| 国产成人精品视频在线| 激情小说一区| 成人黄色大片网站| 国产东北露脸精品视频| 精品国产国产综合精品| 91官网在线免费观看| 香蕉av在线播放| 久久久久五月天| 亚洲国产精品免费视频| 51xx午夜影福利| 国内精品写真在线观看| 亚洲图片第一页| 91精品办公室少妇高潮对白| 色吊丝在线永久观看最新版本| 欧美激情亚洲精品| 日韩区欧美区| 精品久久久无码人妻字幂| 国内久久婷婷综合| 日本精品人妻无码77777| 欧美精品日韩综合在线| 在线观看免费黄色| 国产热re99久久6国产精品| 精品国内自产拍在线观看视频 | 精品久久国产一区| 日本精品免费视频| 国产电影精品久久禁18| 久久老司机精品视频| 精品久久久三级丝袜| 2021中文字幕在线| 精品在线视频一区二区三区| 国产一区二区三区久久久久久久久| aaaaa一级片| 色偷偷成人一区二区三区91| 久青草国产在线| 国产精品嫩草视频| 亚洲激情中文| 久久久久久久久久久久国产精品| 亚洲一区二区免费视频| 婷婷av一区二区三区| 2021久久精品国产99国产精品| 外国成人在线视频| 三级在线免费看| 一区二区中文字幕在线| 国产人妖在线播放| 欧美激情欧美激情在线五月| 欧美美女在线直播| 国产精品无码av无码| 中文字幕一区二区三区四区不卡| 国产又粗又猛又爽又黄视频 | 小说区视频区图片区| 国产一区二区三区四区五区入口| 久草视频免费在线| 亚洲免费精彩视频| 精品久久在线| 韩日视频在线观看| 久久久美女毛片| 99久久夜色精品国产亚洲| 97香蕉超级碰碰久久免费软件 | 国产精品无码永久免费888| 国产毛片在线视频| 国语自产精品视频在线看抢先版图片| 日韩欧美中文字幕电影| 欧美午夜aaaaaa免费视频| 一区二区三区中文在线| 欧美日韩在线中文字幕| 成人性生交大片免费看小说| 在线日韩av| 日韩不卡av在线| 欧美变态tickle挠乳网站| 欧美亚洲大片| 久久手机在线视频| 中文字幕 久热精品 视频在线| 朝桐光av在线一区二区三区| 日本亚洲欧洲色α| 欧美不卡高清| 亚洲天堂最新地址| 日韩禁在线播放| 精品入口麻豆88视频| 成年人网站大全| 亚洲成人免费观看| 久cao在线| 日韩欧美电影一区二区|