日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

大型前端项目的断点调试共享化和复用化实践

發布時間:2024/2/28 HTML 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大型前端项目的断点调试共享化和复用化实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:enoyao,騰訊工程師

背景

隨著我們項目越來越大,我們有可能需要維護很多的模塊,我們騰訊文檔 Excel 項目大模塊有 10 幾個,而每個大模塊分別有 N 個小模塊,每個大模塊下的小模塊都有主要的負責人在跟進模塊問題。

這就會導致一個很大的問題是,模塊負責人大部分情況只會關注自己模塊的問題,而不甚了解其他負責人手上模塊的具體問題。

比如:當我們有用戶反饋使用復制粘貼有問題的時候,我們想要快速去定位這個問題,就只能找復制粘貼對應的模塊負責人處理,如果復制粘貼模塊負責人請假了,那么其他負責人去處理這個問題的時候,解決成本就會非常大,因為其他負責人可能根本對這個模塊不熟悉。

又比如:我們新來了幾個同學,想讓他快速去排查用戶反饋的問題的時候,我們只能手把手把我們該模塊調試的經驗傳授他,和所熟知的各個坑點告訴他,或者整理好對應的 iwiki 給他看(一般效率低也沒人看!),讓他去慢慢定位問題,這樣的每個新同學對模塊的熟悉,學習和維護的成本就會變得越來越大,項目越大這種情況就會越嚴重!

所以我們思考了很多,該怎么去解決這些問題,至少要讓模塊維護成本變低,變得更好去維護和定位問題。

方案

由于上面的問題真的很痛,我們在爬滾中逐漸摸索了一套方案,我們暫且叫它為基于斷點調試的共享化和復用化的實踐方案吧,這里有個關鍵詞是斷點,相比作為每一個開發者都不陌生,在我們前端,模塊定位問題的時候,我們少不了去使用斷點去斷住一些代碼運行關鍵的地方。下面舉一個例子:

class?CopyPaste?{//?內部粘貼pasteFromInter(){?...}//?外部粘貼pasteFromOuter(){?debugger;?...}//?外部圖文粘貼isShapePasteFromOuter(){?...?}//?外部圖片粘貼isImgPasteFromOuter(){?...?}//?外部文本粘貼isTextFromOuter(){?...?} }

上面這段代碼是當用戶反饋一個復制粘貼問題的時候,熟悉該模塊的負責人根據用戶的反饋,知道用戶是外部粘貼出現了問題,由于他對該模塊熟悉,他會快速的在瀏覽器的控制臺打斷點,或者手動在源代碼注入 debugger 關鍵詞去一步一步定位用戶的問題,他會先檢查內部粘貼 pasteFromOuter 是否觸發了,然后檢查函數 isShapePasteFromOuter 是否運行成功,出參和入參是否正確,是否代碼走歪了,去了 isImgPasteFromOuter。

然后在問題排查修復完后,長舒一口氣,等遇到下一個問題的時候,再把瀏覽器或者代碼中當前的這些調試的痕跡清理干凈,再周而復始的重復上面的一系列動作,我相信大部分的同學每天排查問題甚至做需求都是重復著上面的類似動作,我們是否可以考慮一下把這些珍貴的調試痕跡給保存下來,等自己或者其他同學遇到類似模塊問題的時候,我們把這些凝聚著我們血與淚的心路歷程再自動復現一次?

代碼片段記錄 debugger 位置
pasteFromInter2 行 4 列
isShapePasteFromOuter256 行 89 列
isImgPasteFromOuter867 行 12 列

對于大型項目來說,每一個小 Bug 的調試鏈路的時間成本都是無比巨大的,也是難以復刻和重現的,我們能做的就是當再次遇到相似問題的時候,復用相似的調試經驗。有過受傷的痕跡和經歷,當問題再次相遇,我們應該會更自信和從容。

所以我們首要任務其實就變成了是保留珍貴的調試鏈路,也就是保留無數個日夜,那些深扎并刺痛我們內心深處的每個斷點。

插件化

在實踐的過程中我們嘗試過無數的方法,第一個方案就是基于瀏覽器插件,實現斷點留存,基于谷歌瀏覽器插件開發提供的接口 chrome.debugger,它是 Chrome 遠程調試協議的一種消息傳輸方式。chrome.debugger 可以附加到一個或多個標簽頁調試 JavaScript。并使用調試對象基于 sendCommand 和 onEvent 來做插件通信。它可以讓我們在插件去調試頁面,很多插件和工具是基于這個協議來跟瀏覽器的控制臺去做通信,這種方案現只能實現一個遠程的調試面板,這個面板類似瀏覽器本身的調試界面可以加載代碼然后記錄斷點,最后可以把這些斷點分享出去。

這種方案體驗會比較糟糕,首先插件自己實現的調試面板無法像谷歌瀏覽器那么好的體驗,其次是插件需要開發主動去安裝,分享的前提是雙方都需要安裝好對應的插件,開發和推廣成本都比較高,所以個人不是很建議,但是這不代表這個方案走不通,因為這個基于插件還可以有另外一種實現,就是下面的 debug 函數方案。

debug 函數

具體是利用函數斷點 debug(functionName) 和 undebug(functionName) 方法,其中 functionName 是要調試的函數。我們可以將 debug() 插入到的代碼中(這個方法和 console.log() 語句相似),也可以從 DevTools 控制臺中進行調用。debug() 相當于在第一行函數中設置代碼行斷點。

一般情況是在控制臺中使用,這個方法配合插件會有比較好的體驗,因為插件使用 chrome.devtools.inspectedWindow.eval 方法配合瀏覽器的接口可以把代碼注入到控制臺中執行,從而實現幫你自動下發斷點的功能。

chrome.devtools.inspectedWindow.eval(`debug(window.xxxApi);`,(value)?=>?{callback?&&?callback(value);} );

但是細心的同學發現我使用 debug 函數監聽的是一個全局的函數 window.xxxApi,所以這里也總結一下經驗,這個方法的缺陷就是如果你在控制臺使用,它會在你的上下文尋找該函數,所以它一般只能用于全局的函數打點,如果需要打點的函數不在上下文,還需要手動斷點到目標函數的范圍,然后使用函數打點來觸發,如果是閉包函數那就毫無辦法了,但是瑕不掩瑜,這個方法能幫我們快速定位任何的全局函數,就算代碼被混淆了,它還是能快讀把函數斷點給你加上,所以這個方案我建議可以作為一個備選方案,在某些情況下能發揮奇效!

AST 注入

經歷過上面的各種坑之后,下面我們簡單介紹我們實現的一套方案吧:

我們的方案其實是在之前函數調用鏈方案基礎上做的一種改進,既然我們開發可以自己在代碼中輸入 debugger 關鍵詞去斷住任何地方的代碼,我們何不把這個工作交給工具?

首先我們可以用使用狀態機去告訴工具我們需要分發的打點的位置在哪里,類似我們常用 whistle 的配置表:

Module?'CopyPaste'index.ts?-f?pasteFromInter?-s?!(()=>{?console.log(window.Worker)?})()index.ts?-f?pasteFromOuter?-s?console.log('success')?-check?messagecenter1index.ts?-f?isShapePasteFromOuter End?Module
  • Module <-- state --> End Module 這里描述一個狀態,是一個分發斷點的行為,用來需要監聽那類模塊的,例如:復制粘貼模,數據層模塊還是數據層模塊

  • -f functionname -s code 這里可以描述該狀態的具體行為特征,例如:在 pasteFromInter 函數中分發斷點,并注入 debugger 代碼。

在 webpack 中我們可以在 loader 或者 plugin 這兩個過程中去解析這份配置文件,這里你也可以使用第三方庫或者正則來解析上面這些狀態文本。我是在 loader 中去解析這份狀態表的,我在全局目錄下或者局部模塊內定義一份 .debug.json 來寫入上述的狀態,然后解析出一份 map 對象出來:

args?=?argument({"--class":?String,?//?類"--function":?String,?//?函數"--code":?String,?//?函數"-c":?"--class",?//?轉義替換"-f":?"--function","-s":?"--code",},{?argv:?debugConfigValue,?} );

如果不想用狀態機的方式去寫配置文件的話,其實也可以使用一份 debug.json 文件來描述斷點的位置,這種方式更簡單,解析 json 文件的成本比狀態機的配置文件低不少,json 文件在這里涉及的主要字段分別是需要檢測代碼的路徑,這個方便工具去定位文件,然后是需要檢測的類或者函數的名字,這個方便工具去定位代碼的位置,還有檢測項的名字和需要檢測的代碼,和一個關鍵的鍵值:

{"MessageCenter":?{"function":?[{"path":?"src/core/network/message-center/SendMessageCenter.ts","name":?"_sendUserChanges","title":?"數據層斷點測試2","code":?"__console.log('數據層斷點測試2')","key":?"MessageCenter|function|1"}]} }

這里鍵值的涉及可以定義的清晰點,比如 MessageCenter|function|1 指的是對 MessageCenter 模塊的文件里面的某一個函數打點,以后還可以繼續改進這樣寫 MessageCenter|class|1:12,意思是 MessageCenter 模塊的文件里面某一個類的具體位置打點,如果這個 key 的語義越豐富,后續分發的打點也會更精確,定位問題也會更高效,具體這個可以根據業務場景去定義。

class?CopyPaste?{//?內部粘貼pasteFromInter(){debugger...} }

當我們有了配置文件,我們就得思考怎么無入侵的在代碼里面加入調試和檢測代碼了,我們首選通過 AST 去注入,它可以幫我們把代碼關鍵部分給梳理成一顆樹出來,比如抹掉冒號、括號、分號等,能讓我們把精力放在重要的節點上,上面的代碼經過解析會得到下面這棵 AST 語法樹:

{"program":?{"type":?"Program","body":?[{"type":?"ClassDeclaration","id":?{{?"type":?"Identifier",?"identifierName":?"CopyPaste"?},?"name":?"CopyPaste"?},"body":?{"type":?"ClassBody","body":?[{"type":?"ClassMethod","key":?{?"type":?"Identifier",?"name":?"pasteFromInter"?},"body":?{?"type":?"BlockStatement",?"body":?[{?"type":?"DebuggerStatement"?}]},"leadingComments":?[{?"type":?"CommentLine",?"value":?"?內部粘貼"?}],}]}}]} }

而具體步驟大概如下:解析 MessageCenter|function|1 這段參數配置的字符串,得到函數名,模塊名,位置信息等,然后對代碼進行掃描并進行詞法和語法分析,并得到 AST 語法樹,根據剛才解析得到的函數名,模塊名,位置信息來匹配 AST 樹節點,在上面進行加入我們的調試和檢測代碼,最后再輸出經過我們加工的代碼。

那上面這個原理我們都懂,具體怎么實現呢,我們可以在 webpack 工具使用 plugins 來實現,在 plugins 中我們經常會用到訪問者模式,就是說在訪問到某一個路徑的時候進行匹配,然后在對這個節點進行修改,比如上面這個 pasteFromInter 函數,它是一個 ClassMethod,plugins 就會對代碼生成的 AST 樹進行訪問,訪問者可以匹配任何對應的詞法特性,我們就可以在這里匹配所有的 ClassMethod 然后根據路徑去拿到節點對應的信息,比如函數名,函數參數和函數位置等,拿到這些關鍵的信息,我們就可以對這個函數節點進行加工,也就是注入我們的調試和檢測代碼或者直接注入一個 debugger 去打斷點。

plugins?=?{//?訪問器Visitor?=?{'ClassMethod'(path)?{//?檢點path.node}} }

當然注入檢測代碼也是需要構造成 ClassMethod 的類似結構,所有我們可以配合 @babel/types 工具去快速注入一段代碼,比如最簡單的是注入一個 debugger:

types.expressionStatement(types.identifier(`debugger`))

這樣就會在你匹配的路徑的特定位置放入一個 debugger,而你的代碼源文件本身其實是沒有任何改動的,只是通過 AST 樹配合配置文件成功融合了一段代碼到指定的位置,當然實際情況會比預想中的復雜,因為有可能下發的位置不是函數中的某個位置,可能是類函數中的某個位置,閉包函數中的某個位置,所以要兼容各種的語法結構,需要在 AST 中匹配這些函數的所有特征才能準確無誤的下發代碼,還是以函數作為例子,列出部分需要考慮的情況:

  • FunctionExpression

需要滿足到這兩種寫法,不然 debugger 會下發錯位置。

this.xxx?=?function()?{?debugger?} const?xxx?=?function()?{?debugger?}
  • ClassMethod

這個一般情況按下面的方式就能定位到了,但是如果要更精確比如是私有函數等,那就需要寫更精確的訪問器了。

class?xxx?{?xxx:(){?debugger?}?}
  • FunctionDeclaration

除了要處理上面函數表達式的寫法,不要忘了函數還有聲明定義的寫法,所以這個也得滿上。

function?xxx()?{?debugger?}
  • ArrowFunctionExpression

最后還要考慮下箭頭函數的寫法

const?xxx?=?()?=>?{?debugger?} this.xxx?=?()?=>?{?debugger?} class?xxx?{?xxx?=?()?=>?{?debugger?}?}

雖然大部分情況匹配函數對項目下發的調試代碼能覆蓋大部分的場景,但總會有漏網之魚,比如有的同學想在類定義之前注入檢測代碼,那就需要繼續寫對應的訪問器去獲取路徑,然后對該位置去分發對應的檢測代碼,所以需要對各種語法和對應的訪問器類型很熟悉才能順利實現。

經過上面的改造,我們會在最終代碼中會得到新代碼(已注入了所有檢測代碼),但是這樣會引發一個新的,當我們運行這份新代碼,我們上面所有的檢測代碼都會跑一遍,這樣就會斷住很多別的模塊負責人不想斷住的代碼區域,所以實際情況我們需要分發一個帶開關的檢測代碼,當然這個開關的涉及其實可以很簡單,如下:

//?基于?AST?在模塊中分發的調試開關 if(require('@tencent/vdebugger').call(this,?key)){?debugger?} //?或者這樣,雖然好看點,但這樣?debugger?在閉包里面拿不到上下文 require('@tencent/vdebugger').call(this,?key)?||?(()?=>?{?debugger?})() //?注意這種下面類似這種寫法是不行的↓ require('@tencent/vdebugger')?||?debugger

我們可以使用 require('@tencent/vdebugger') 打包一個函數,這個函數可以設計為在全局變量或者 localstorage 等地方讀取配置,然后返回一個布爾值,用于判斷是否執行該位置的 debugger,這里為了調試方便有幾個小細節需要注意,debugger 這個關鍵詞自己要獨立一個作用域,所以你不能寫成類似這個樣子 false || debugger,還有 require('@tencent/vdebugger') 這個函數里面在讀取配置之后里面可以包一個 eval 方法來執行檢測代碼,所以可以用 call 把當前作用域代理過來,更方便去做調試。

當然實際情況可能還要比想象中復雜,舉個簡單的例子:因為分發的開關有可能會注入到一些被打包到 worker 的代碼里面,worker 在大型項目中運用的很多,但是 worker 里面無法讀取 document、window 這些對象,雖然可以使用 navigator,location 和 XMLHttpRequest 等對象,但無法通過 localstorage 讀取配置等手段去控制調試開關了,所以你需要考慮一下是否需要讓調試開關分發到 worker 代碼中,如果分發了又要怎么去通信對應的開關等問題。

最簡單粗暴就是打包 worker 代碼的時候進行過濾。

!isWorker?&&?new?DebuggerPlugin({debugConfig:?path.resolve(dirName,?'../debug.json'), }),

當然如果需要分發的開關在 worker 中生效,就需要去實現一個讀取開關配置的通信手段,最常見的就是基于 postMessage 的通信手段,讓 require('@tencent/vdebugger') 函數,即開關模塊接受主線程的配置去向 worker 的運行代碼下達是否執行檢測代碼和啟動斷點的命令。

myWorker.postMessage(xx); myWorker.onmessage?=?()?=>?{console.log('Message?received?from?worker'); }

思考

實現了上面的基本功能之后,我們還可以繼續優化很多體驗,比如我們還可以使用 webpack 的 plugin 來實現本地編譯時候的增量更新,這就能做到當我們更改本地配置文件的時候,自動分發斷點和調試代碼,邏輯也是比較簡單的,在 plugin 的 apply 周期使用內置的庫 chokidar 去監聽配置文件的變更,然后觸發編譯,重新走 AST 去編譯生成帶調試代碼合斷點的代碼:

const?chokidar?=?require('chokidar'); this.watcher?=?chokidar.watch(["../src/**/.debug.json"],?{usePolling:?true,ignored:?this.options.ignored });

總結

關于這方面的調試相關文章不多,一路走來跳了不少的坑,感謝團隊成員的支持,并讓這個方案最終成功落地,也希望有更多志同道合的人加入我們騰訊文檔團隊,一起去探索和遨游,最后也希望這篇文章能給到你們一些啟發吧 ????。

總結

以上是生活随笔為你收集整理的大型前端项目的断点调试共享化和复用化实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产精品五月天 | 欧美精品国产综合久久 | 精品国产区在线 | 久久露脸国产精品 | 精品福利片 | 夜夜高潮夜夜爽国产伦精品 | 国产精品资源网 | 国产精品免费观看国产网曝瓜 | 日韩网站一区 | 国产成人福利在线观看 | 欧美精品黑人性xxxx | 一区二区中文字幕在线观看 | 成人97视频一区二区 | 久久久久久久久久久久亚洲 | 99色| 国产一级视频在线 | 亚洲精品www.| 经典三级一区 | 免费观看成人网 | 黄色成人影视 | 99亚洲国产 | 国产精品久久久久永久免费看 | 亚洲天堂在线观看完整版 | avcom在线| 黄色激情网址 | 四虎在线影视 | .国产精品成人自产拍在线观看6 | 国产精品日韩精品 | 久久久久免费视频 | 欧美午夜精品久久久久 | 97精品电影院 | 亚洲综合欧美激情 | 久久亚洲福利 | 人成免费网站 | 日本中文在线 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 国产精品永久久久久久久www | 国产欧美综合视频 | 亚洲国产中文字幕在线观看 | 人人干天天干 | 免费看av片网站 | 国产成人av福利 | 97精品在线 | 国产中文字幕在线免费观看 | 久久99最新地址 | 婷婷丁香在线视频 | 狠狠网| 亚洲精品理论 | 丁香花在线视频观看免费 | 夜夜夜影院 | 久久区二区 | 中文字幕电影在线 | 色久av | 亚洲激情 | 黄色三级av | 亚洲精品国产日韩 | 天天草综合网 | 在线观看你懂的网站 | 香蕉视频国产在线 | 蜜桃视频色| 夜夜操天天操 | 不卡的av在线播放 | 久久久免费精品 | 精品国产乱码久久久久久久 | 麻豆免费在线播放 | 很污的网站 | 欧美日韩一二三四区 | 午夜三级影院 | 欧美日韩精品二区第二页 | 五月综合 | 亚洲区另类春色综合小说校园片 | 丁香久久五月 | 久久久久久久久久久久影院 | 日韩视频在线不卡 | 久久男人中文字幕资源站 | 成人h动漫精品一区二 | 欧美日韩在线精品 | 日韩免费电影在线观看 | 天天插天天狠 | 99午夜 | 国产精品一区二区三区电影 | 国产亚洲视频在线免费观看 | 欧美日韩在线观看一区二区三区 | 国产精彩视频一区二区 | 国产精品欧美一区二区三区不卡 | 狠狠色丁香婷婷综合基地 | 四虎5151久久欧美毛片 | 久久a v电影| 日韩高清不卡在线 | 99精品视频播放 | 久操视频在线观看 | 97人人艹 | 亚洲一片黄 | 国产小视频在线 | 天天天干| 久久大视频| 精品欧美一区二区精品久久 | 国产一级电影在线 | 成人网页在线免费观看 | 久久久久久久久久久免费视频 | 久久精品一区 | 亚洲激情p | 在线观看日本韩国电影 | 免费观看成人 | av电影免费在线看 | 狠狠操狠狠干天天操 | 日韩中文字幕第一页 | 国产色在线观看 | 五月婷婷天堂 | 亚洲一区精品人人爽人人躁 | 香蕉视频在线观看免费 | 在线观看国产福利片 | 波多野结衣精品视频 | 在线一区电影 | 日韩性色| 中文字幕免费观看 | 国产一区在线精品 | 成人天堂网 | 久久伦理 | 午夜在线日韩 | 最新日韩视频在线观看 | 久久久免费 | 丁香花中文在线免费观看 | 久亚洲精品 | www好男人 | 91九色丨porny丨丰满6 | 在线观看黄av | 精品一区 在线 | 97人人添人澡人人爽超碰动图 | 久久久久免费精品国产小说色大师 | av大全免费在线观看 | 91人人射| 手机av电影在线观看 | 色在线国产 | 黄色影院在线播放 | 亚洲精品动漫在线 | 免费情趣视频 | 欧美大片www| 午夜av色 | 午夜精品一区二区三区在线视频 | 伊人狠狠操 | 亚洲日本成人网 | 亚洲精品中文在线 | 在线日韩视频 | 精品九九九 | 久久艹精品| 黄色在线观看免费 | 国产成人一区二区精品非洲 | 日韩性色 | 最新婷婷色| 午夜av在线免费 | 亚洲高清网站 | 亚洲欧美乱综合图片区小说区 | 国产精品毛片一区视频播不卡 | 欧美一二三区在线观看 | 九九99| 91九色在线视频观看 | 18av在线视频 | 天天干,狠狠干 | 91高清视频在线 | 国产91精品高清一区二区三区 | 亚洲精品乱码久久久久久蜜桃动漫 | 国产区欧美 | 91精品啪 | 国产高清视频在线播放 | 国产美女无遮挡永久免费 | 日韩精品1区2区 | 97爱| 亚洲 综合 国产 精品 | 午夜精品久久久99热福利 | 九九免费精品视频在线观看 | 久久久激情网 | 免费看黄色小说的网站 | 欧美日韩在线精品 | 午夜性生活 | 香蕉视频在线免费 | 日韩电影精品一区 | 亚洲精品国精品久久99热一 | 波多野结衣一区 | 国产精品一区二区电影 | 久日视频 | 五月天开心| www色av| 久久久久久久久爱 | av丝袜天堂 | 亚洲国产精品va在线看黑人动漫 | 国产尤物在线观看 | 国产精品免费一区二区三区在线观看 | 欧美日韩精品免费观看 | 最新国产一区二区三区 | 成年人免费看的视频 | 久久影院一区 | 高清精品久久 | 国产成本人视频在线观看 | 日韩com | 国产伦精品一区二区三区照片91 | 亚洲成av人片在线观看香蕉 | 性色av免费观看 | 中文字幕在线观看国产 | 日日夜夜天天射 | 永久黄网站色视频免费观看w | 人人爽人人看 | 一区二区高清在线 | 免费看片网页 | 国产精品一区二区久久精品爱涩 | 欧美色插 | 一级黄色免费网站 | 日韩三级一区 | 日韩久久电影 | 香蕉影院在线观看 | 中文av在线播放 | 国产乱视频 | 91av中文| 91香蕉视频720p | 久草在线视频资源 | 久久久久久久久久电影 | 中文字幕在线精品 | 9i看片成人免费看片 | 伊人色综合久久天天 | 亚洲一区二区三区精品在线观看 | 久久av网址| 麻豆系列在线观看 | 精品久久久久国产免费第一页 | 日韩国产精品久久 | 91丨九色丨国产丨porny精品 | 四虎5151久久欧美毛片 | 午夜视频在线观看欧美 | 亚洲精品视频中文字幕 | 成人久久精品 | 久久极品| 人人干在线 | 免费午夜视频在线观看 | 亚洲视频综合在线 | 国产69熟 | 97在线视| 99精品视频一区二区 | 亚洲性xxxx | 成人毛片在线视频 | 一本一本久久a久久精品综合小说 | 中文字幕精品久久 | 韩日精品在线观看 | 亚洲三级在线 | 在线国产黄色 | 国产精品久久久久一区二区 | 国产一区二区在线播放 | 在线看v片| 欧美成人黄色 | 丁香色综合 | 激情视频在线观看网址 | 国产中文字幕三区 | 婷婷五月情 | 人人射人人| 在线播放日韩av | 国产字幕在线观看 | 热99在线视频 | 成年人在线看视频 | 午夜电影中文字幕 | 国产中文字幕久久 | 中文字幕xxxx | 欧美日韩性视频 | 亚洲精品久久久蜜桃 | 国产人成在线视频 | 国产99久久久欧美黑人 | 五月天亚洲综合小说网 | 伊人五月在线 | 99r国产精品 | 久久久久黄 | 久久久久久久影院 | 免费看v片 | 亚洲成a人片综合在线 | 在线观看 国产 | 男女视频91| 91在线观看视频 | 日韩二区三区在线 | 国产精品麻豆免费版 | 日韩高清毛片 | 欧美成人理伦片 | 99久久er热在这里只有精品66 | 9999亚洲| 亚洲精品91天天久久人人 | 在线一区二区三区 | 国产中文字幕久久 | 精品99免费视频 | 亚州免费视频 | 成人av电影免费在线播放 | 日韩av男人的天堂 | 不卡视频在线看 | 欧美有色 | 久久久久国产一区二区 | 国产日韩精品一区二区在线观看播放 | 在线免费观看一区二区三区 | 久久精品99久久 | 国产黄色在线网站 | aaa免费毛片 | 91av电影在线 | 五月婷婷网站 | a级国产乱理伦片在线观看 亚洲3级 | 精品人人人 | 久久大片 | 日韩精品一区二区免费视频 | 国产中年夫妇高潮精品视频 | 国产亚洲精品美女 | 中文字幕一区在线 | 最新免费中文字幕 | 欧美aaa级片 | 丁香久久五月 | 精品国产乱码久久久久久久 | 在线成人国产 | 911香蕉视频 | 亚洲成av人片在线观看 | 日韩在线观看三区 | 日韩免费网站 | 国产xvideos免费视频播放 | 国产高清不卡一区二区三区 | 久久精品电影网 | 综合网五月天 | 成人免费在线观看电影 | 81国产精品久久久久久久久久 | 精品99视频 | 精品人妖videos欧美人妖 | 亚洲激情中文 | 69国产盗摄一区二区三区五区 | 日韩欧美视频 | 久青草国产在线 | 久久久99精品免费观看乱色 | www.看片网站| 不卡在线一区 | 日韩在线视频网站 | 亚洲成人动漫在线观看 | 99精品免费观看 | 一级a性色生活片久久毛片波多野 | 色偷偷中文字幕 | 欧美视频日韩视频 | 91最新国产| 四虎永久国产精品 | 亚洲一区二区三区毛片 | www.五月婷| 色综合天天综合网国产成人网 | 国产一区二三区好的 | 丝袜制服天堂 | 国产色婷婷| 日韩另类在线 | 日日碰狠狠添天天爽超碰97久久 | 激情av综合 | 99久久国产免费,99久久国产免费大片 | 肉色欧美久久久久久久免费看 | 久久久久久激情 | 性色av一区二区三区在线观看 | 婷婷丁香自拍 | 日日操天天操夜夜操 | 免费看片在线观看 | 久久99热这里只有精品 | 久久理论电影网 | 日韩精品视频免费看 | 免费成人在线电影 | 992tv成人免费看片 | 人人草在线视频 | 亚洲精品午夜国产va久久成人 | 国产一级久久久 | 久久综合狠狠狠色97 | 久草视频免费在线观看 | 久草网首页| 麻豆视频在线看 | 久久国产午夜精品理论片最新版本 | 久久理论电影 | 午夜 久久 tv | 亚洲黄色小说网 | 欧美日韩激情视频8区 | 国内精品久久久久久久久久清纯 | 国产色拍拍拍拍在线精品 | 国产亚洲视频中文字幕视频 | 一区二区三区国产精品 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲一区在线看 | 国产精品高清av | 丁香婷婷在线 | 日韩精品中文字幕久久臀 | 国产精品欧美久久久久无广告 | 久久无码av一区二区三区电影网 | 国内精品久久久久久久久久久 | 久久久91精品国产一区二区精品 | 91片黄在线观看 | 国产精品99精品久久免费 | 又黄又爽又刺激 | 国产高清精品在线 | 久久8| 人人模人人爽 | 国产永久免费高清在线观看视频 | 青青草国产成人99久久 | 成人在线播放网站 | 久久人91精品久久久久久不卡 | 国产精品白虎 | 国产看片网站 | 在线视频中文字幕一区 | 成人日批视频 | 99国产视频在线 | 久草网在线视频 | 中文字幕第一页在线播放 | 天天色天天操天天爽 | 日韩久久久久久久 | 久久久久久久久久久久久久电影 | 成人免费观看在线视频 | 国产不卡在线观看 | av电影在线观看完整版一区二区 | av九九九 | 国产日产精品一区二区三区四区 | 精品亚洲男同gayvideo网站 | 亚洲激情电影在线 | 亚洲精品黄网站 | 国产又黄又硬又爽 | 最新av在线网站 | 在线视频 区 | 日本三级久久 | 国产成人精品区 | 国产精品18videosex性欧美 | 91精品入口 | 国产精品免费观看网站 | 久久手机免费视频 | 免费在线观看av网站 | 亚洲综合在线观看视频 | 久久久久亚洲精品国产 | 美女视频网 | 午夜精品福利在线 | 国产不卡一区二区视频 | 成人cosplay福利网站 | 久久久久久久免费看 | 99视频一区二区 | 国产视频精品视频 | 夜夜嗨av色一区二区不卡 | 特级毛片爽www免费版 | 91精品国产自产老师啪 | 亚洲国产精品99久久久久久久久 | 成人资源网| 国产精品综合在线观看 | a√资源在线 | 国产高清视频免费在线观看 | 天天干天天操天天 | 国产伦精品一区二区三区免费 | 日韩精品欧美专区 | 九九综合久久 | 免费亚洲电影 | 国产一区视频在线 | 色婷婷狠狠五月综合天色拍 | 国产精品一区二区麻豆 | 精品一区二区精品 | 激情电影影院 | 国产黄色看片 | 最近能播放的中文字幕 | 亚洲国产日韩在线 | 免费网站黄 | 91国内在线视频 | 婷婷中文字幕综合 | 精品久久精品久久 | 一级黄色在线免费观看 | 久久精品高清视频 | 91av美女| 天天艹日日干 | 成人在线免费av | 天天干天天操天天操 | 欧美一级片免费播放 | 国产精品成人品 | 91久久丝袜国产露脸动漫 | 成人一区二区三区中文字幕 | 最近免费观看的电影完整版 | 日韩电影中文字幕在线 | 开心激情综合网 | 亚洲天堂在线观看完整版 | 欧美精品久久久久a | 五月综合在线观看 | 在线看片中文字幕 | 91免费在线 | 久久精品牌麻豆国产大山 | 99精品视频免费在线观看 | 天天鲁一鲁摸一摸爽一爽 | 亚洲国产精品成人av | 99超碰在线观看 | 日韩超碰在线 | 97人人人人 | 国产xxxx | 国产精品一区在线观看 | 国产成人在线播放 | 国产精品午夜在线观看 | 91久久人澡人人添人人爽欧美 | 日韩亚洲欧美中文字幕 | 在线观看一区 | 国产又粗又猛又爽又黄的视频先 | 免费观看性生活大片3 | 久久中文网 | 一区在线观看视频 | 97在线精品 | 欧美大片www| 成人av电影在线观看 | 日韩精选在线 | 91xav| www一起操 | 成人av免费在线 | 久草青青在线观看 | 九色最新网址 | 国语自产偷拍精品视频偷 | 国产明星视频三级a三级点| 日韩在线中文字幕视频 | 国产视频日韩 | 亚洲精品在线观看视频 | 久久一区91 | 亚洲精品一区二区久 | 美女视频a美女大全免费下载蜜臀 | 97精品在线| 国产高清在线不卡 | 国产中文字幕视频在线 | 成人精品一区二区三区中文字幕 | 国产99久久精品 | 四虎影视成人永久免费观看亚洲欧美 | 久久久久 免费视频 | 国内丰满少妇猛烈精品播 | 日韩成人在线免费观看 | 亚洲成人免费 | 91人人爱| 国语自产偷拍精品视频偷 | 有码中文在线 | 91视频在线免费观看 | 成人在线电影观看 | 狠狠色丁香婷婷综合久小说久 | 在线看国产一区 | 国内精品在线看 | 久久久久久久久久久久久国产精品 | 日韩中文在线字幕 | 91看片在线免费观看 | 日韩成人精品 | www.在线观看视频 | 波多野结衣理论片 | 婷婷丁香花 | 久久久国产精品麻豆 | 美女视频久久 | 最近更新好看的中文字幕 | 久久国产精品久久久 | 亚洲午夜久久久影院 | 97超碰人人澡人人爱学生 | 国产综合视频在线观看 | 久久er99热精品一区二区三区 | 国产成人精品一区二区三区福利 | 福利视频网址 | 天天av资源 | 久久99精品久久久久久清纯直播 | 亚洲欧美日韩一区二区三区在线观看 | 午夜视频免费在线观看 | www五月 | avcom在线 | 日韩精品中文字幕av | 国产高清视频色在线www | 亚洲国产精选 | 91福利免费 | 久久黄色影院 | 成年人视频免费在线播放 | 九九精品久久久 | 免费情缘 | 精品黄色片 | 欧美日韩国产一二 | 91麻豆精品国产91久久久久久 | a在线v| 在线观看免费成人 | 激情综合亚洲精品 | 欧美日韩国产一区二区三区在线观看 | 在线视频欧美日韩 | 国产精品毛片久久 | 亚洲国产高清在线观看视频 | 久久久久免费电影 | 最新国产精品视频 | 亚洲国产成人精品在线观看 | 美女免费黄视频网站 | 免费黄色激情视频 | 视频在线观看日韩 | 波多野结衣在线播放一区 | 国产精品一区二区三区视频免费 | 亚洲在线免费视频 | 福利片免费看 | 久久99国产综合精品 | 精品免费观看视频 | 久久综合桃花 | 99爱在线观看 | 婷婷国产在线观看 | 国产精品99久久久久的智能播放 | 激情中文在线 | 久久久免费av | 国产精品久久久久久久久久久久午夜 | 精品一区二区免费视频 | 99久久婷婷国产综合精品 | 欧美中文字幕第一页 | 黄色91免费观看 | 黄色中文字幕在线 | 99视频免费观看 | 亚洲 欧美日韩 国产 中文 | 久久人人爽 | 91av免费看| 97热在线观看 | aa一级片 | 国产精成人品免费观看 | 波多野结衣综合网 | 这里只有精彩视频 | 精品久久久久一区二区国产 | 亚洲va欧洲va国产va不卡 | 国产成人精品av | 国产一级在线看 | 精品国产一二三四区 | 最新超碰| 麻豆首页 | 在线观看成人小视频 | 日日日日| 亚洲在线a | 精品麻豆| 超碰在线免费97 | 精品国产乱子伦一区二区 | 中文在线a√在线 | 99re6热在线精品视频 | 综合色亚洲 | 精品福利视频在线 | 日韩电影在线观看一区 | 97精品国产91久久久久久久 | 久久国产精品99久久久久久丝袜 | 超碰在线人人草 | 久久69av| 视频91在线 | 日韩欧美电影在线观看 | 六月丁香综合网 | 国产操在线 | 在线免费观看视频一区二区三区 | 亚州视频在线 | 免费麻豆网站 | 国产伦精品一区二区三区照片91 | 天天骚夜夜操 | 91少妇精拍在线播放 | 精品主播网红福利资源观看 | 草久在线观看 | 九九热.com | 久久精精品视频 | 欧美性色综合网 | 午夜狠狠干 | 久久综合久久综合九色 | 国产一区二区在线免费 | www国产亚洲精品久久网站 | 美女黄网久久 | 亚洲精品久久久久久久不卡四虎 | 国产亚洲成人网 | 天天操天天操天天操 | 成人av高清在线观看 | 91探花在线视频 | 97电影院在线观看 | 蜜臀久久99精品久久久无需会员 | av东方在线| 欧美在线视频精品 | 四虎永久免费在线观看 | 欧洲精品视频一区 | 国产精品一区二区三区久久 | 五月亚洲 | 欧美 日韩精品 | 久草视频在线资源站 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 久草精品免费 | 香蕉久久久久 | 在线 视频 一区二区 | 国产成人精品综合久久久 | 国产精品视频久久 | 999久久久国产精品 高清av免费观看 | 国产精品视频区 | 91系列在线 | 韩国一区二区三区在线观看 | 91亚洲精品在线 | 国产精品乱码在线 | 国产精品嫩草影院99网站 | 国产一级二级视频 | 激情久久久久久久久久久久久久久久 | 免费看国产视频 | 97精品在线 | 五月天天色 | 国产精品丝袜久久久久久久不卡 | 免费观看av网站 | 超碰在线97观看 | 91精品老司机久久一区啪 | 欧美日韩xx | 国产精品久久久久久久av电影 | 亚洲人xxx | 中文字幕一区二区三区精华液 | 九九热视频在线 | 亚洲天天摸日日摸天天欢 | 国内外成人免费在线视频 | 天天色综合天天 | 久久男人视频 | 五月色综合 | 亚洲黄a | 正在播放 国产精品 | 亚洲日本欧美在线 | 国产 视频 高清 免费 | 日韩中文字幕亚洲一区二区va在线 | 丝袜精品视频 | 欧美日韩一区二区三区不卡 | 麻豆传媒视频在线播放 | 又黄又爽的视频在线观看网站 | av电影在线观看完整版一区二区 | 不卡电影免费在线播放一区 | 五月在线 | 国产精品video爽爽爽爽 | 国产精品久久久久久久久久免费看 | 一区二区伦理 | 91精品国自产在线 | 亚洲黄色成人av | 亚洲第一久久久 | 国产成a人亚洲精v品在线观看 | 中日韩欧美精彩视频 | 高清精品久久 | 黄色免费观看网址 | 国产精品久久久久一区二区 | 玖玖玖精品 | 亚洲天堂精品视频 | 亚洲精品在线观看免费 | 国产一级在线看 | 黄色软件在线观看视频 | 国产小视频在线免费观看 | 成人h视频在线播放 | 国产精品99久久久久久久久久久久 | 99成人免费视频 | 亚洲国产网站 | 久久av黄色| 黄色免费观看视频 | 国语自产偷拍精品视频偷 | 久久综合爱 | www久| 成年美女黄网站色大片免费看 | 久久久久久久久久毛片 | 精品国产乱码久久 | www.久久久.com | 国内精品99 | 精品视频www | 综合天天网 | 中文字幕精品一区二区三区电影 | 美女视频网 | 三级动态视频在线观看 | 日韩网站在线看片你懂的 | 日韩电影中文字幕 | 探花视频免费观看高清视频 | 91亚洲永久精品 | 久久激情五月婷婷 | 中文字幕中文字幕在线一区 | 欧美极度另类 | 处女av在线 | 久久免费的精品国产v∧ | 欧美亚洲久久 | 在线观看久久久久久 | 国产精品女同一区二区三区久久夜 | 日韩在线观看视频中文字幕 | 国产精品你懂的在线观看 | 欧美一级日韩三级 | 日韩视频欧美视频 | 久久精品国产免费看久久精品 | 免费看v片 | av品善网| 日韩在线高清免费视频 | 91资源在线| 国产精品18久久久久久久网站 | 国产五月 | 成人一区影院 | 欧美成人精品在线 | 婷婷在线不卡 | 日韩爱爱片| 在线只有精品 | 欧美一级电影免费观看 | 色综合夜色一区 | 亚洲视频在线免费看 | 91av大全| 日韩视频www| 久久久国产毛片 | 亚洲黄色免费在线看 | 国产麻豆精品久久一二三 | 91精品国产福利在线观看 | 午夜视频在线瓜伦 | 中文字幕中文字幕中文字幕 | 免费av试看| 成人精品一区二区三区电影免费 | av成人免费观看 | 久久99国产一区二区三区 | 91亚洲欧美激情 | 黄色成年网站 | 91最新网址| 韩日av一区二区 | 日韩二区在线播放 | 欧美日韩免费在线视频 | 亚洲午夜大片 | 免费观看国产精品视频 | 最近中文字幕视频完整版 | 在线中文字幕一区二区 | 少妇性bbb搡bbb爽爽爽欧美 | 亚洲精品999 | 四虎成人精品永久免费av九九 | 久久精品视频3 | 亚洲成人国产精品 | 免费在线观看国产黄 | 日本成人a | 五月开心色 | 天天干天天操天天操 | 中文字幕乱码电影 | 国产精品va在线观看入 | 伊人黄色网 | 视频直播国产精品 | 精品在线一区二区三区 | 欧美一级黄色网 | 日本中文在线观看 | 深爱激情开心 | 国产99在线免费 | 国产午夜亚洲精品 | 最新中文字幕视频 | 日本精品视频一区 | 少妇bbb搡bbbb搡bbbb′ | 国产精品久久久久久久7电影 | 亚洲欧美日本一区二区三区 | 免费久久视频 | 操处女逼 | 五月婷婷在线播放 | 99精品国产一区二区 | 日本中文字幕免费观看 | 午夜在线观看一区 | 插插插色综合 | 免费在线日韩 | 天天干天天干天天干天天干天天干天天干 | 91精品综合在线观看 | 成人一级影视 | 超碰成人免费电影 | 在线观看国产福利片 | 毛片无卡免费无播放器 | 亚洲日韩中文字幕在线播放 | 狠狠狠色丁香婷婷综合久久88 | 国产精品久久久久久一二三四五 | 国产视频在线观看一区二区 | 色综合人人 | 中文字幕在线资源 | 亚洲国产成人久久综合 | 91精品成人 | 超碰免费观看 | 亚洲国产精品一区二区久久hs | 91桃色国产在线播放 | 青青草国产精品 | 91成人欧美| 国产涩图| 免费看的国产视频网站 | 在线97| 在线综合 亚洲 欧美在线视频 | 在线观看亚洲精品视频 | 99精品视频在线观看 | 国产成人三级三级三级97 | 免费看国产精品 | 免费网站看av片 | 国产日韩欧美在线一区 | 91专区在线观看 | 免费在线观看国产精品 | 狠狠色噜噜狠狠 | 国产成人一区二区在线观看 | 久久久久久视频 | 亚洲经典视频在线观看 | 国产成人久久av免费高清密臂 | 亚洲 综合 精品 | 国内精品久久久久久久久久 | 99精品热视频只有精品10 | 色综合久久网 | 亚州精品在线视频 | 日韩欧美精品在线 | 国产三级国产精品国产专区50 | 91最新中文字幕 | 亚洲最大激情中文字幕 | 亚洲国产精品传媒在线观看 | 国产精品一区二区在线免费观看 | 婷婷色五 | 综合天堂av久久久久久久 | 精品久久久免费视频 | 欧美福利视频一区 | av永久网址| 国产99久久久精品视频 | 黄色网在线播放 | 久久与婷婷 | 麻豆影视在线播放 | 国产一级黄色片免费看 | 97在线精品视频 | 草久在线观看 | 日韩亚洲欧美中文字幕 | 久久精品中文 | 亚洲精品啊啊啊 | 免费日韩一区二区 | 日韩精品一区二区三区第95 | 亚洲欧美国产精品 | 欧美日韩国内在线 | 91免费在线 | 69亚洲精品| 色噜噜狠狠色综合中国 | 黄色tv视频| 成年人免费观看在线视频 | 黄污视频网站 | 91视频免费看 | 天天操天天干天天 | 国产精品久久久久久爽爽爽 | 操一草 | 91av播放 | 国产视频网站在线观看 | 精品久久久久久久久久久久久久久久 | 色婷婷中文 | 三上悠亚一区二区在线观看 | 看污网站| 狠狠色狠狠综合久久 | 亚洲经典在线 | 色综合久久中文综合久久牛 | 国产精品剧情在线亚洲 | 973理论片235影院9 | 婷婷在线网| 婷婷在线看 | 毛片888 | 日日久视频 | 亚洲精品国产成人 | 久久久久久久99 | 久久久三级视频 | 一本一本久久a久久精品牛牛影视 | 日日干干夜夜 | 久久精品视频观看 | 欧美日韩在线观看一区二区 | 最新真实国产在线视频 | 中文字幕在线观看一区 | 在线视频观看91 | 人人爱爱人人 | 欧美激情精品久久久久久 | 免费午夜在线视频 | 九色91av| 中文字幕色综合网 | 97超碰国产精品 | 欧美色图88 | 啪啪凸凸 | 日韩成人邪恶影片 | 8090yy亚洲精品久久 | 色狠狠综合 | 91大神电影| 色综合天天做天天爱 | 欧美有色| 亚洲成人精品久久久 | 丁香视频五月 | 亚洲h在线播放在线观看h | 亚洲男男gaygay无套同网址 | 久久国产精品免费一区二区三区 | 国产中文字幕精品 | 成人a在线观看高清电影 | 伊人开心激情 | 在线视频观看你懂的 | 91激情视频在线 | 美女视频是黄的免费观看 | 亚洲综合视频在线观看 | 国产精品免费观看网站 | 成人在线观看你懂的 | 国产精品一区二区久久 | 麻豆免费在线播放 | 一区二区三区国产精品 | 国产精品视频在线看 | 少妇性aaaaaaaaa视频 | 在线观看日韩av | 国产精品三级视频 | 国产99久久精品一区二区300 | 亚洲特级片 | 久久综合国产伦精品免费 | 黄色官网在线观看 | 97电影手机| 麻豆成人精品 | 91桃色在线播放 | 久久九九久久 | 在线观看岛国片 | 国产福利一区二区三区在线观看 | 在线观看韩国av | 国产成人精品一区二区在线 | 日本精品视频一区 | 国产在线精品一区二区 | 婷婷午夜 | 亚洲a网 | 精品国产黄色片 | 九七视频在线观看 | av黄色免费在线观看 | 一区二区三区高清 | 欧美日韩中文字幕综合视频 | 丰满少妇在线观看网站 | 成人在线一区二区三区 | 色吊丝在线永久观看最新版本 | av中文字幕在线播放 | 91在线视频在线观看 | 成年人视频在线免费观看 | 日韩午夜精品福利 | 国产精品人人做人人爽人人添 | 天天爽天天射 | 亚洲经典在线 | 天天综合天天做天天综合 | 色成人亚洲 | .国产精品成人自产拍在线观看6 | 日韩大片在线 | 天天综合操 | 一区二区三区免费在线观看视频 | 人人插超碰 | 中文字幕欧美日韩va免费视频 | 中文字幕一区二区在线播放 | 91一区啪爱嗯打偷拍欧美 | 亚洲日本在线视频观看 |