黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁技術文章
文章詳情頁

Vue 中 template 有且只能一個 root的原因解析(源碼分析)

瀏覽:8日期:2023-01-27 09:05:47

引言

今年, 疫情 并沒有影響到各種面經的正常出現,可謂是絡繹不絕(學不動...)。然后,在前段時間也看到一個這樣的關于 Vue 的問題, 為什么每個組件 template 中有且只能一個 root?

可能,大家在平常開發中,用的較多就是 template 寫 html 的形式。當然,不排除用 JSX 和 render() 函數的。但是,究其本質,它們最終都會轉化成 render() 函數。然后,再由 render() 函數轉為 Vritual DOM (以下統稱 VNode )。而 render() 函數轉為 VNode 的過程,是由 createElement() 函數完成的。

因此,本次文章將會先講述 Vue 為什么限制 template 有且只能一個 root 。然后,再分析 Vue 如何規避出現多 root 的情況。那么,接下來我們就從源碼的角度去深究一下這個過程!

一、為什么限制 template 有且只能有一個 root

這里,我們會分兩個方面講解,一方面是 createElement() 的執行過程和定義,另一方面是 VNode 的定義。

1.1 createElement()

createElement() 函數在源碼中,被設計為 render() 函數的參數。所以 官方文檔 也講解了,如何使用 render() 函數的方式創建組件。

而 createElement() 會在 _render 階段執行:

...const { render, _parentVnode } = vm.$options...vnode = render.call(vm._renderProxy, vm.$createElement);

可以很簡單地看出,源碼中通過 call() 將當前實例作為 context 上下文以及 $createElement 作為參數傳入。

Vue2x 源碼中用了大量的 call 和 apply,例如經典的 $set() API 實現數組變化的響應式處理就用的很是精妙,大家有興趣可以看看。

$createElement 的定義又是這樣:

vm.$createElement = (a, b, c, d) => createElement(vm, a, b, c, d, true)

需要注意的是這個是我們手寫 render() 時調用的,如果是寫 template 則會調用另一個 vm._c 方法。兩者的區別在于 createElement() 最后的參數前者為 true,后者為 false。

而到這里,這個 createElement() 實質是調用了 _createElement() 方法,它的定義:

export function _createElement ( context: Component, // vm實例 tag?: string | Class<Component> | Function | Object, // DOM標簽 data?: VNodeData, // vnode數據 children?: any, normalizationType?: number): VNode | Array<VNode> { ...}

現在,見到了我們平常使用的 createElement() 的 廬山真面目 。這里,我們并不看函數內部的執行邏輯,這里分析一下這五個參數:

context ,是 Vue 在 _render 階段傳入的當前實例 tag ,是我們使用 createElement 時定義的根節點 HTML 標簽名 data ,是我們使用 createElement 是傳入的該節點的屬性,例如 class 、 style 、 props 等等 children ,是我們使用 createElement 是傳入的該節點包含的子節點,通常是一個數組 normalizationType ,是用于判斷拍平子節點數組時,要用簡單迭代還是遞歸處理,前者是針對簡單二維,后者是針對多維。

可以看出, createElement() 的設計,是針對一個節點,然后帶 children 的組件的 VNode 的創建。并且,它并沒有留給你進行多 root 的創建的機會,只能傳一個根 root 的 tag ,其他都是它的選項。

1.2 VNode

我想大家都知道 Vue2x 用的靜態類型檢測的方式是 flow ,所以它會借助 flow 實現自定義類型。而 VNode 就是其中一種。那么,我們看看 VNode 類型定義:

前面,我們分析了 createElement() 的調用時機,知道它最終返回的就是 VNode。那么,現在我們來看看 VNode 的定義:

export default class VNode { tag: string | void; data: VNodeData | void; children: ?Array<VNode>; text: string | void; elm: Node | void; ns: string | void; context: Component | void; // rendered in this component’s scope key: string | number | void; componentOptions: VNodeComponentOptions | void; componentInstance: Component | void; // component instance parent: VNode | void; // component placeholder node // strictly internal raw: boolean; // contains raw HTML? (server only) isStatic: boolean; // hoisted static node isRootInsert: boolean; // necessary for enter transition check isComment: boolean; // empty comment placeholder? isCloned: boolean; // is a cloned node? isOnce: boolean; // is a v-once node? asyncFactory: Function | void; // async component factory function asyncMeta: Object | void; isAsyncPlaceholder: boolean; ssrContext: Object | void; fnContext: Component | void; // real context vm for functional nodes fnOptions: ?ComponentOptions; // for SSR caching devtoolsMeta: ?Object; // used to store functional render context for devtools fnScopeId: ?string; // functional scope id support constructor ( tag?: string, data?: VNodeData, children?: ?Array<VNode>, text?: string, elm?: Node, context?: Component, componentOptions?: VNodeComponentOptions, asyncFactory?: Function ) { ... } ...}

可以看到 VNode 所具備的屬性還是蠻多的,本次我們就只看 VNode 前面三個屬性:

tag,即 VNode 對于的標簽名 data,即 VNode 具備的一些屬性 children,即 VNode 的子節點,它是一個 VNode 數組

顯而易見的是 VNode 的設計也是一個 root ,然后由 children 不斷延申下去。這樣和前面 createElement() 的設計相呼應, 不可能會 出現多 root 的情況。

1.3 小結

可以看到 VNode 和 createElement() 的設計,就只是針對單個 root 的情況進行處理,最終形成 樹的結構 。那么,我想這個時候 可能有人會問為什么它們被設計樹的結構? 。

而針對這個問題,有 兩個方面 ,一方面是樹形結構的 VNode 轉為真實 DOM 后,我們只需要將根 VNode 的真實 DOM 掛載到頁面中。另一方面是 DOM 本身就是樹形結構,所以 VNode 也被設計為樹形結構,而且之后我們分析 template 編譯階段會提到 AST 抽象語法樹,它也是樹形結構。所以,統一的結構可以實現很方便的類型轉化,即從 AST 到 Render 函數,從 Render 函數到 VNode ,最后從 VNode 到真實 DOM 。

Vue 中 template 有且只能一個 root的原因解析(源碼分析)

并且,可以想一個情景,如果多個 root ,那么當你將 VNode 轉為真實 DOM 時,掛載到頁面中,是不是要遍歷這個 DOM Collection ,然后掛載上去,而這個階段又是操作 DOM 的階段。大家都知道的一個東西就是操作 DOM 是 非常昂貴的 。所以,一個 root 的好處在這個時候就體現出它的好處了。

其實這個過程,讓我想起 紅寶書 中在講文檔碎片的時候,提倡把要創建的 DOM 先添加到文檔碎片中,然后將文檔碎片添加到頁面中。(PS:想想第一次看紅寶書是去年 4 月份,剛開始學前端,不經意間過了快一年了....)

二、如何規避出現多 root 的情況

2.1 template 編譯過程

在我們平常的開發中,通常是在 .vue 文件中寫 <template> ,然后通過在 <template> 中創建一個 div 來作為 root ,再在 root 中編寫描述這個 .vue 文件的 html 標簽。當然,你也可以直接寫 render() 函數。

在文章的開始,我們也說了在 Vue 中無論是寫 template 還是 render ,它最終會轉成 render() 函數。而平常開發中,我們用 template 的方式會較多。所以,這個過程就需要 Vue 來編譯 template 。

編譯 template 的這個過程會是這樣:

根據 template 生成 AST (抽象語法樹) 優化 AST ,即對 AST 節點進行靜態節點或靜態根節點的判斷,便于之后 patch 判斷 根據 AST 可執行的函數,在 Vue 中針對這一階段定義了很多 _c 、 _l 之類的函數,就其本質它們是對 render() 函數的封裝

這三個步驟在源碼中的定義:

export const createCompiler = createCompilerCreator(function baseCompile ( template: string, options: CompilerOptions): CompiledResult { // 生成 AST const ast = parse(template.trim(), options) if (options.optimize !== false) { // 優化 AST optimize(ast, options) } // 生成可執行的函數 const code = generate(ast, options) return { ast, render: code.render, staticRenderFns: code.staticRenderFns }})

需要注意的是 Vue-CLI 提供了兩個版本, Runtime-Compiler 和 Runtime ,兩者的區別,在于前者可以將 template 編譯成 render() 函數,但是后者必須手寫 render() 函數

而對于開發中,如果你寫了多個 root 的組件,在 parse 的時候,即生成 AST 抽象語法樹的時候, Vue 就會過濾掉多余的 root ,只認第一個 root 。

而 parse 的整個過程,其實就是正則匹配的過程,并且這個過程會用棧來存儲起始標簽。整個 parse 過程的流程圖:

Vue 中 template 有且只能一個 root的原因解析(源碼分析)

然后,我們通過一個例子來分析一下,其中針對多 root 的處理。假設此時我們定義了這樣的 template :

<div><span></span></div><div></div>

顯然,它是多 root 的。而在處理第一個 <div> 時,會創建對應的 ASTElement ,它的結構會是這樣:

{ type: 1, tag: 'div', attrsList: [], attrsMap: {}, rawAttrsMap: {}, parent: undefined, children: [], start: 0, end: 5}

而此時,這個 ASTElement 會被添加到 stack 中,然后刪除原字符串中的 <div> ,并且設置 root 為該 ASTElement 。

然后,繼續遍歷。對于 <span> 也會創建一個 ASTElement 并入棧,然后刪除繼續下一次。接下來,會匹配到 </span> ,此時會處理標簽的結束,例如于棧頂 ASTElement 的 tag 進行匹配,然后出棧。接下來,匹配到 </div> ,進行和 span 同樣的操作。

最后,對于第二個 root 的 <div> ,會做和上面一樣的操作。但是,在處理 </div> 時,此時會進入判斷 multiple root 的邏輯,即此時字符串已經處理完了,但是這個結束標簽對應的 ASTElement 并不等于我們最初定義的 root 。所以此時就會報錯:

Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.

而且,該 ASTElement 也不會加入最終的 AST 中,所以之后也不可能會出現多個 root 的情況。

同時,這個報錯也提示我們如果要用多個 root ,需要借助 if 條件判斷來實現。

可以看出, template 編譯的最終的目標就是構建一個 AST 抽象語法樹。所以,它會在創建第一個 ASTElement 的時候就確定 AST 的 root ,從而確保 root 唯一性。

2.2 _render 過程

不了解 Vue 初始化過程的同學,可能不太清楚 _render 過程。你可以理解為渲染的過程。在這個階段會調用 render 方法生成 VNode ,以及對 VNode 進行一些處理,最終返回一個 VNode 。

而相比較 template 編譯的過程, _render 過程的判斷就比較簡潔:

if (!(vnode instanceof VNode)) { if (process.env.NODE_ENV !== ’production’ && Array.isArray(vnode)) { warn( ’Multiple root nodes returned from render function. Render function ’ + ’should return a single root node.’, vm ); } vnode = createEmptyVNode();}

前面在講 createElement 的時候,也講到了 render() 需要返回 VNode 。所以,這里是防止部分騷操作, return 了包含多個 VNode 的數組。

結語

通過閱讀,我想大家也明白了 為什么 Vue 中 template 有且只能一個 root ? 。 Vue 這樣設計的出發點可能很簡單,為了減少掛載時 DOM 的操作。但是,它是如何處理多 root 的情況,以及相關的 VNode 、 AST 、 createElement() 等等關鍵點,個人認為都是很值得深入了解的。

到此這篇關于Vue 中 template 有且只能一個 root的原因解析(源碼分析)的文章就介紹到這了,更多相關vue template 有且只能一個 root內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
主站蜘蛛池模板: 熟妇人妻午夜寂寞影院 | 无码精品人妻一区二区三区影院 | 99精品久久久久久中文字幕 | 中文字幕日韩人妻不卡一区 | 欧美日a| 国产甜淫av片免费观看 | 性色a码一区二区三区天美传媒 | 成人真人毛片 | 人人摸人人搞人人透 | 久久久久久久久97 | 唐人社导航福利精品 | 无码人妻精品一区二区三区免费 | 国产无套白浆一区二区 | 国产成人在线视频网站 | 国产成人精品视频ⅴa片软件竹菊 | 无码天堂va亚洲va在线va | 久久久综合香蕉尹人综合网 | 美女福利片 | 女同av国产亚洲片bbb及 | 亚洲专区免费 | av免费观看网 | 欧美肥婆性猛交xxxⅹ | 亚洲国产精品成人综合久久久久久久 | 日本少妇做爰xxxⅹ漫 | 国产xxxx做受视频 | 国产精品18久久久久久久久 | 免费精品久久 | 日本一级做a爱片野花 | 无码无遮挡又大又爽又黄的视频 | 一本色道久久综合亚洲精品小说 | 国产色欲av一区二区三区 | 久久久久久九九精品久 | 黄色网址在线免费 | 亚洲理论片 | 午夜精品欧美 | 人人爽久久涩噜噜噜av | 永久免费的av在线电影网 | 国产在线观看www | 黄色男人的天堂 | 蜜桃传媒av免费观看麻豆 | 日本三级欧美三级人妇视频黑白配 | 99爱精品视频 | 欧美一二 | 成人av网页 | 一本色道久久88—综合亚洲精品 | 97视频免费观看 | www.一区二区 | 国产精品水嫩水嫩 | 美女视频黄a视频免费全程软件axs | 亚洲天堂男人的天堂 | 91精产国品一二三 | 欧美性生活视频 | 国产精品com | 337p日本大胆噜噜噜鲁 | 91亚洲乱码卡一卡二卡新区豆 | 国a产久v久伊人 | 日本人作爰全过程 | 在线播放a | 国产xxxxxxxxx| 精精国产xxxx视频在线 | 亚洲爱爱网 | 特级无码毛片免费视频 | 久久成人a毛片免费观看网站 | 一个人在线观看免费视频www | 看黄色小视频 | 欧美久久久久久久久久 | 黄色在线观看免费视频 | 免费亚洲一区二区 | 亚洲国产中文字幕在线视频综合 | 人人草人人爽 | 欧美又大又色又爽aaaa片 | 日日夜夜人人 | 天天射天天干天天色 | 久久久久久久女女女又又 | 国产成熟人妻换╳╳╳╳ | 麻豆成人网 | 性一交一乱一伧国产女士spa | 久久99精品久久久久久噜噜 | 日本aaaaa女人裸体h片 | 日韩亚洲欧美精品综合 | 女警高潮潮一夜一区二区三区毛片 | 男女裸体影院高潮 | 亚洲一区二区三区乱码aⅴ蜜桃女 | 亚洲精品一区二区另类图片 | 8888在线观看免费www | 亂倫近親相姦中文字幕 | 欧美 国产 亚洲 卡通 综合 | 国产人妖ts重口系列喝尿视频 | 日本啊v在线 | 国产一级做a爱片在线看免 国产一级做a爰片久久毛片男 | 国产午夜亚洲精品午夜鲁丝片 | 少妇裸体淫交视频免费观看 | 久久精品道一区二区三区 | 国产一级揄自揄精品视频 | 欧美日韩中| 午夜av无码福利免费看网站 | 成人麻豆日韩在无码视频 | 肉嫁高柳在线 | 久久久久久三区 | 韩国无码色视频在线观看 | 色婷婷yy| 国产性色av| 99久久久无码国产精品6 | www夜片内射视频在观看视频 | 亚洲精品欧美日韩 | 国精品人妻无码一区二区三区性色 | 亚洲乱码视频在线观看 | 中文字幕乱码一二三区 | 久久精品五月天 | 泽村玲子在线中文字幕 | 久久久久久逼 | 免费观看黄网站 | 欧美另类在线视频 | 交h粗暴调教91 | 美女疯狂连续喷潮视频 | 中文字幕a∨在线乱码免费看 | 无套内谢88av免费看 | 高清欧美性猛交 | 在线播放免费人成毛片乱码 | 九九热国产 | 国产精品久久久久久三级 | 大陆一级a毛片杨玉环 | 中午字幕无线码一区2020 | 丝袜 亚洲 另类 欧美 变态 | 青草成人 | 亚洲区小说区激情区图片区 | 成人毛片在线 | 91精品国产综合久久久久影院不卡 | 久操视频在线播放 | 亚洲欧洲美洲精品一区二区三区 | 成人av视屏 | 免费看黄色一级视频 | 国产麻豆91精品三级站 | 久久久成人精品视频 | 欧洲亚洲一区 | 久久噜噜| 亚洲揄拍窥拍久久国产自揄拍 | av视屏在线| 亚洲精品18在线观看 | 91精品国产福利一区二区三区 | 欧美日韩国产一区二区 | 亚洲色图一区二区三区 | 污站在线观看 | aaaa大片少妇高潮免费看 | 一本加勒比波多野结衣 | 国产免费一级淫片a级中文 国产免费一区 | 在线视频欧美亚洲 | 亚洲一区二区三区成人网站 | 人妻av无码一区二区三区 | 亚洲日韩精品a∨片无码加勒比 | 日本最新偷拍小便视频 | 亚洲一区二区av | 国模冰冰炮一区二区 | 国外成人在线视频 | 欲求不满在线小早川怜子 | av大全在线播放 | 中文幕无线码中文字夫妻 | xvideos亚洲网站入口 | 亚洲gv猛男gv无码男同 | 国产精品久久久久久吹潮 | 爱情岛论坛av首页 | 欧产日产国产精品视频 | 美女成人在线 | 新婚少妇无套内谢国语播放 | 亚洲丝袜色图 | 日啪| 精品亚洲成av人在线观看 | 欧美日韩一区二区三区视频播放 | 国产精品香蕉在线的人 | 中文字幕最新在线 | 亚洲欧美成人中文日韩电影网站 | 在线观看不卡一区 | 军人粗大的内捧猛烈进出视频 | 国产一线二线在线观看 | 114一级片 | 好紧好爽午夜视频 | 脱岳裙子从后面挺进去在线观看 | 中文字幕精品av乱喷 | 一本久久综合亚洲鲁鲁五月天 | 1024久久 | 特黄少妇60分钟在线观看播放 | 成人h免费观看视频 | 日韩 欧美 中文字幕 制服 | 精品熟人妻一区二区三区四区不卡 | 天天操天天干天天舔 | 人人爽人人爽人人片av免费 | 夜夜躁恨恨躁爱躁 | 亚洲一区二区三区四区五区中文 | 色综合久久久久久久久五月 | 欧美日韩精品亚洲精品 | 偷国产乱人伦偷精品视频 | 天天影视色香欲综合久久 | 杂技xxx裸体xxx欧美 | 国产中年熟女高潮大集合 | 欧美肥臀大乳一区二区免费视频 | 影音先锋婷婷 | 国语对白新婚少妇在线观看 | 欧美成人精品欧美一级 | 欧美一卡二卡在线观看 | 欧美日韩在线视频播放 | 色亚洲视频 | 在线精品一区二区三区 | 国产精品99久久久久久白浆小说 | 人与嘼av免费 | 亚洲精品国产精品国自产 | 久一视频在线观看 | 午夜视频欧美 | 欧美熟妇另类久久久久久不卡 | 色婷婷5月天| 久久大奶 | 日韩av影音 | 97精品人妻系列无码人妻 | 亚洲色欲色欲大片www无码 | 另类专区欧美 | 99re6在线视频精品免费 | 国产精品9999久久久久仙踪林 | 日本猛少妇色xxxxx猛叫 | 国产suv精品一区二区 | 中文字幕一区二区三区第十负 | 国产精品成人av片免费看最爱 | 国模私拍一区二区三区 | 精品国产欧美一区二区三区成人 | 武侠古典av | 波多野结衣一区二区三区中文字幕 | 天堂√在线中文最新版8 | 精品无码av一区二区三区不卡 | 国产女人被狂躁到高潮小说 | 开心激情综合网 | 日韩专区第一页 | www.国产视频.com| 国产精品91久久久 | 可乐操亚洲 | 久久国产精品波多野结衣 | 爱爱视频免费网址 | 国产69精品久久久久久久 | 天天鲁啊鲁在线看 | 欧美va天堂| 乱中年女人伦av二区 | 麻豆精品一区 | 成人免费无码大片a毛片抽搐色欲 | 午夜久久久久久久久久一区二区 | 浓毛老太交欧美老妇热爱乱 | 91在线丨porny丨国产 | 国产欧美亚洲精品 | 国产三级农村妇女做受 | 人人妻人人澡人人爽欧美一区双 | 日本成人黄色 | 国内精品国产成人国产三级 | 国产三级av在线 | 欧美天天射| 国产无遮挡无码视频免费软件 | 国产曰又深又爽免费视频 | 日本久久高清视频 | 久久调教视频 | 亚洲丁香婷婷 | 丰满人妻翻云覆雨呻吟视频 | 国产精品资源 | 色哥网| 极品美女扒开粉嫩小泬 | 亚洲成av人片在线观看无 | 久久久久国产一区二区三区 | 亚洲网友自拍 | 四虎久久久久 | 国产激情在线视频 | lutube成人福利在线观看污 | 国产成a人亚洲精品无码樱花 | 不卡av在线免费观看 | 麻豆免费观看视频 | 国产精品久久久一区二区三区网站 | 亚洲 欧美 综合 在线 精品 | 国产人人看| 亚洲精品毛片一区二区三区 | 国产草草影院 | 在线免费观看成人 | 俺去射 | 黄色毛片在线看 | 国产xxxxx视频 | 国产精品人人做人人爽 | 伊人精品成人久久综合 | 热@国产 | 一本一本久久a久久精品综合妖精 | 精品对白一区国产伦 | 婷婷日韩 | 亚洲免费av网站 | 一级特黄bbb大片免费看 | 国产精品爽爽久久久久久蜜臀 | 欧美mv日韩mv国产网站app | 国产日韩欧美精品在线观看 | 国产午夜亚洲精品理论片色戒 | 同性色老头性xxxx老头 | 欧美日本精品 | 东方伊甸园av在线 | 国产精品久久久久久52avav | 激情伦成人综合小说 | 红桃视频一区 | 一二三精品 | 成人免费看片在线观看 | 国产精品人人爱一区二区白浆 | 久久金品 | 天堂一区在线观看 | 97伊人久久 | 午夜精品一区二区三区在线视 | 青青草大香焦在线综合视频 | 日韩精品视频免费专区在线播放 | 狠狠色噜噜 | 亚洲日本欧美在线 | 亚洲中文字幕在线无码一区二区 | 欧美三级网站在线观看 | 成人动漫免费观看 | 欧美激情在线一区二区 | 日本美女黄色大片 | 欧美性生活在线视频 | 国产精品资源网 | 亚洲精品国偷拍自产在线观看蜜桃 | 朝鲜大乳女奶水奶水吃奶视频在线 | 亚洲男女在线观看 | av大片在线| 夜夜草天天干 | 青青草dvd | 国产精品久久久久久久裸模 | 成人在线黄色 | 国产又黄又粗又猛又爽 | 久久天堂国产香蕉三区 | 欧美老肥妇做.爰bbww视频 | 亚洲免费高清 | 久久卡一卡二 | 牲高潮99爽久久久久777 | 精品国产一区二区三区噜噜噜 | 男人的天堂一区二区 | 国产精品性做久久久久久 | 国产农村妇女在野外高潮 | 国产一区2 | 久草在线新视觉 | 欧美无遮挡很黄裸交视频 | 日本japanese学生丰满 | 久久在线看| 夜夜欢天天干 | 国产剧情av麻豆香蕉精品 | 中文字幕国产在线 | 国产在线视频资源 | 伊人影院视频 | 40一50一60老女人毛片 | 精品一区二区三区无码免费视频 | 又粗又大又硬毛片免费看 | а√天堂ww天堂八 | 欧美精品a区 | 美女热逼 | 欧美一级做性受免费大片免费 | 69久久国产露脸精品国产 | 午夜少妇一级福利 | 国产精品白嫩极品美女 | 欧美一区二区三区在线视频观看 | 欧美大片在线免费观看 | 国产一区二区三区四区五区精品 | 亚洲男人天堂2017 | 久操精品在线 | 国产做受高潮 | av在线男人天堂 | 精品免费国产一区二区 | 又黄又爽又色成人免费视频体验区 | 99热精品免费 | 久久久精品波多野结衣av | 久久久精品国产免费观看一区二区 | 久久国内视频 | 狠狠干老司机 | 岛国av网址 | 偷拍做爰吃奶视频免费看 | 久久99精品久久久久久秒播放器 | 欧美在线观看a | 黄色网页免费观看 | 成人亚洲精品久久久久 | 国产午夜精品一区二区三区漫画 | 日本欧美一区二区三区在线播放 | 黄色网页在线观看 | 中文字幕在线观看三区 | 妇女伦子伦视频国产 | 久久偷看各类wc女厕嘘嘘 | 精品无码一区二区三区爱欲 | 日韩一级一级 | 亚洲一区精品视频在线观看 | www.av网站| 久久久久逼| 又大又粗又爽免费视频a片 日本丰满熟妇videossex8k | 欧美日韩午夜爽爽 | 欧美群妇大交群 | 西野翔夫の目の前で犯在线 | 国产ts三人妖大战直男 | 国产乱女淫av麻豆国产 | 久久精品免费观看 | 亚洲国产精品成人女人久久 | 久久国产精品网 | 免费成人深夜夜行网站视频 | 国产在线综合视频 | 欧美成人专区 | 又大又紧又粉嫩18p少妇 | 可以免费看av的网站 | 97在线观看视频 | 国内精品国产三级国产a久久 | 四虎视频在线精品免费网址 | 欧美jizz19性欧美 | 国产亚洲日韩一区二区三区 | 欧美性生活久久 | 2019日韩中文字幕mv | 国产欧美久久久精品免费 | 人人干人人舔 | 国产又色又爽又刺激在线观看 | 九九在线观看视频 | 波多野结衣美乳人妻hd电影欧美 | 婷婷欧美综合 | 日本国产一区二区三区在线观看 | 亚洲欧洲精品mv免费看 | 色无极影院亚洲 | 搡老女人一区二区三区视频tv | 免费看小12萝裸体视频国产 | 九九热免费视频 | 狠狠插视频 | 松岛枫av在线一区二区 | 欧美日韩精品人妻狠狠躁免费视频 | 国内精品美女a∨在线播放 精品人妻一区二区三区浪潮在线 | 中文字幕一区二 | 欧洲美熟女乱又伦av影片 | 香蕉av在线播放 | 日日噜狠狠噜天天噜av | 少妇肥臀大白屁股高清 | 一起艹在线观看 | 久久丫精品忘忧草西安产品 | 日本污ww视频网站 | 天堂а√在线最新版中文在线 | 日韩精品91亚洲二区在线观看 | 在线黄色毛片 | 337p日本欧洲亚洲大胆精品 | 久久久久久久久久久中文字幕 | 中文字幕乱码一区二区三区四区 | 久草精品视频在线看网站免费 | 国产麻豆一级片 | 中国极品少妇xxxx做受 | 91黄色免费网站 | 亚洲男人av | 欧洲av网站 | 色婷婷久久一区二区三区麻豆 | 精品人妻中文无码av在线 | 看全黄大黄大色大片美女 | 三浦惠理子aⅴ一二三区 | 国产偷伦视频 | 国产成人精品日本亚洲77上位 | 伊人成年综合网 | 天天色天天爱 | 日啪| 狠操av| 冲田杏梨mide233在线播放 | 99久久免费精品 | 人人爱夜夜爽日日做蜜桃 | 一区二区三区视频 | 99久久久久国产精品免费人果冻 | 日韩一卡二卡三卡 | 亚洲精品国产免费 | 国产av一区二区三区最新精品 | 国产99在线 | 免费精品视频一区二区三区 | 老熟妇毛片 | 精品成在人线av无码免费看 | 五月精品视频 | 一 级 黄 色 片免费网站 | 奇米影视奇米色 | 亚洲插| 国产裸体美女视频全黄 | 风间由美不戴奶罩邻居勃起av | 福利小视频 | 中文字幕丝袜精品久久 | 欧美国产一区二区三区 | 在线无码av一区二区三区 | 97久久爽久久爽爽久久片 | 337p日本欧洲亚洲大胆鲁鲁 | 日日天日日夜日日摸 | 亚洲精品电影院 | 久久久久久欧美精品色一二三四 | 国精产品一区一区三区 | 成人片黄网站色大片免费 | 深夜爽爽动态图无遮无挡 | 免费网站看v片在线观看 | 亚洲作爱网 | 激情三级在线 | 2022久久国产露脸精品国产 | 少妇大叫好爽受不了午夜视频 | 韩日免费视频 | 日韩欧美三级视频 | 全黄h全肉短篇禁乱最新章节 | 国产成人精品一区二三区 | 欧美精品亚洲精品日韩传电影 | 爱情岛亚洲论坛入口首页 | 日韩一区二区三区在线播放 | 亚洲成av人片天堂网无码】 | 亚洲视频h | 亚洲欧美一二三区 | 欧美h网站 | 国产精品永久久久久 | 窝窝午夜看片 | 亚洲男人天堂2019 | 久久精品在线观看 | 一本加勒比hezyo无码资源网 | 人妻无码熟妇乱又伦精品视频 | 精品无码久久久久久国产 | 亚洲自拍偷拍网站 | 国产av天堂无码一区二区三区 | www视频免费在线观看 | 大奶一区二区 | 屁屁国产草草影院ccyycom | 亂倫近親相姦中文字幕 | 少妇毛片一区二区三区 | 91福利社在线观看 | 久久蜜桃精品一区二区三区综合网 | 熟妇高潮一区二区三区 | 梦乃爱华av在线播放 | 亚洲一二三视频 | 欧美日韩免费在线视频 | 国产女人与拘做受视频9 | 麻豆免费av | 蜜臀一区二区三区精品免费视频 | 在线免费黄网 | 国产美女免费看 | 免费asmr色诱娇喘呻吟欧美 | 青青草原av | 真人二十三式性视频(动) | 成在人线av无码免观看麻豆 | 99久久国产综合精品麻豆 | 色不卡 | 91亚洲国产 | 中国吞精videos露脸 | 国产又黄又粗又猛又爽视频 | 丰满放荡岳乱妇91ww | 国产新婚夫妇白天做个爱 | 国产又爽又黄的激情精品视频 | 久久黄色av| 国产一级黄| 精品一区二区三区免费毛片 | 欧美高清久久 | 东北女人毛多水多牲交视频 | 日韩亚洲欧美中文在线 | 国产femdom调教557 | 俄罗斯videodesxo极品 | 草草地址线路①屁屁影院成人 | 欧美激情va永久在线播放 | 二级黄色大片 | 中文字幕乱码一区二区三区四区 | 日韩精品视频在线观看免费 | 久久久久久五月天 | 午夜xxxxx | 国产无套喷白浆在线播放 | 三级黄色免费网站 | 狠狠躁18三区二区一区传媒剧情 | 欧美一区亚洲一区 | 亚洲欧洲日韩综合 | 人人综合网 | 成人在线视频在线观看 | 亚洲中文无码av在线 | 日韩av三区 | 日韩网红少妇无码视频香港 | 久久久久久久999 | porno中国ⅹxxxx偷拍 | 蜜臀av亚洲一区二区 | 久久久久久久久免费 | 欧洲美女黑人粗性暴交视频 | 久成人 | 激情图片在线视频 | 亚洲中文字幕无码av永久 | 国产成人久久精品77777的功能 | 99久久99久久精品国产片果冻 | 国产精品久久久久久久久久久久冷 | 日本3级网站 | 国产人妻精品久久久久野外 | 在线成人精品国产区免费 | 亚洲一区二区三区日本 | 亚洲精品久久久久久久久久久 | 国产精品无 | 另类小说婷婷 | xxxx999| 国产精品99久久久久人中文网介绍 | 中文字幕人妻丝袜乱一区三区 | 美女喷液视频 | 国产伦孑沙发午休精品 | 国产精品乱码久久久久久 | 日日摸天天添天天添破 | 高清视频一区二区三区 | 人妖另类巨茎双性人欧美视频 | 91精品国产高清一区二区三区蜜臀 | 精品国产一区二区三区久久狼 | 色噜噜狠狠色综合欧洲 | 好吊视频一区二区三区 | 久久久免费在线观看 | 黑人做爰xxxⅹ性少妇69 | 五月婷婷爱 | 男人午夜av | 日韩精品一区二区三区四区 | 天天躁日日躁狠狠躁欧美老妇小说 | 蜜桃中文字幕 | 91禁在线看 | 日本曰又深又爽免费视频 | 国产一级80毛片古装片 | 欧美精品一区二区在线观看 | 粉嫩av一区二区三区在线播放 | 豆国产95在线 | 亚洲 | 国产精品久久久久永久免费看 | 国产精品久久久久久久久免费看 | 直接看的毛片 | 久久综合狠狠色综合伊人 | 最大胆裸体人体牲交 | 污色视频 | 宅女噜噜66国产精品观看免费 | 国产人妻大战黑人第1集 | 亚洲资源在线观看 | 丰满女人又爽又紧又丰满 | 国产 日韩 欧美 中文 在线播放 | 99久久夜色精品国产亚洲96 | 在线成人一区 | 人人草人人做人人爱 |