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

看了Quark Design后,我去深入了解了Web Components

開發 前端
現今前端生態中框架層出不窮,在生產中為了提升效率和標準化組件,就會針對框架開發組件庫。但是各種框架之間是不兼容的,對此需要對應開發適應框架的組件庫,這樣也造成維護成本攀升。就如同物理界有電磁相互作用、強相互作用以及弱相互作用,需要單獨的物理理論來解釋這三種作用造成的物理現象,這樣讓眾多物理學家在朝著大統一理論前進,而Web Components可以看作是現今UI組件庫"大統一理論"的一種解決方案。

?1.寫在前面

最近哈啰單車前端團隊開源的Quark Design組件庫,號稱是下一代前端組件庫,可以同時在任意框架或無框架中使用。

那么,什么是Web Components?

2.什么是Web Components?

現今前端生態中框架層出不窮,在生產中為了提升效率和標準化組件,就會針對框架開發組件庫。但是各種框架之間是不兼容的,對此需要對應開發適應框架的組件庫,這樣也造成維護成本攀升。就如同物理界有電磁相互作用、強相互作用以及弱相互作用,需要單獨的物理理論來解釋這三種作用造成的物理現象,這樣讓眾多物理學家在朝著大統一理論前進,而Web Components可以看作是現今UI組件庫"大統一理論"的一種解決方案。

圖片

Web Components與React、Vue?等框架中的組件類似,其實在Vue中也采用了很多基于Web Components?的設計。這是一個可復用的UI構建模塊,封裝了所有渲染所需要的HTML、CSS?以及基于Javascript?的邏輯。最大的區別是,它不依賴于特定的JavaScript框架,而是利用瀏覽器原生提供的技術,這樣你的Web組件就與框架無關了。

3.Web Components的主要內容

Web Components的主要內容如下:

  • Custom Elements?:原生提供的API,用于可自定義Custom Elements和行為。
  • Shadow DOM:原生提供的API,用于封裝與主文檔DOM隔離的私有DOM,不受外部DOM的樣式和行為的影響。
  • Templates:
  • Attributes:
  • Slots:
  • Life cycle methods:

接下來,跟隨我的腳步在例子中逐個實現這些概念,逐個擊破理論。

4.Custom Elements

Custom Elements是Web Components?中的一個重要特性,可以提供給開發者將html的功能封裝為自定義標簽,方便進行復用。也就是說,Custom Elements?本質上是用戶用于實現在html?中有效使用的,類似<div>、<button>?等自定義標簽。最大區別在于,自定義標簽有著自己的模板、行為和標簽名稱,通過Javascript的API實現的。

Custom Elements?總是使用連字符-?進行自定義標簽的標識,即<one-button/>?,各大瀏覽器公司達成公司不在創建任何新的標簽元素,來防止元素沖突。熟悉vue框架的開發者應該知道,在vue中的自定義組件命令有<OneButton/>或<one-button/>?這種結構,官方推薦的是<one-button/>這種使用方式。

通過customElements.define來簡單注冊自定義組件,下面就來簡單實踐下:

// one-button.js
// 1、創建自定義組件的類
class OneButton extends HTMLElement{
constructor(){
super()
// 2、創建組件內容
this.innerHTML = `<button>hello onechuan</button>`
}
}

// 3、進行自定義組件的注冊
customElements.define("one-button", OneButton)

// index.html
// 4、html中進行使用
<one-button></one-button>
<script src="./one-button.js"></script>

運行展示:

圖片

5.Shadow DOM

Shadow DOM?與原生DOM的區別就是用戶自定義封裝的DOM,本質上還是DOM元素。不同的是,Shadow DOM?可以將自定義的DOM片段與其他DOM進行隔離,可以實現樣式不受外部DOM的影響,類似于使用iframe?內嵌了一個html。也正是Shadow DOM的存在,能夠進行DOM隔離、實現獨立的組件王國,使得自定義組件跨域框架的約束,不再耦合,確保在任何無框架和任何框架中正常使用。

如圖所示:

圖片

圖示來自MDN文檔

一些 Shadow DOM 特有的術語:

  • Shadow host:一個常規 DOM 節點,Shadow DOM 會被附加到這個節點上。
  • Shadow tree:Shadow DOM 內部的 DOM 樹。
  • Shadow boundary:Shadow DOM 結束的地方,也是常規 DOM 開始的地方。
  • Shadow root: Shadow tree 的根節點。

Shadow DOM ?并不是新生事物,在原生<video>?標簽中其實就有內置的Shadow DOM ?,包含一系列的按鈕和其他控制器等。而Web Components?只不過是允許用戶根據需要使用Shadow DOM來實現自定義標簽。

那么,就接著上面的例子一起來實現下:

// one-button.js
// 1、創建自定義組件的類
class OneButton extends HTMLElement{
constructor(){
super()
// 2、創建shadow dom
this.attachShadow({mode: 'open'})
this.shadowRoot.innerHTML = `<button>hello onechuan</button>`
}
}

// 3、進行自定義組件的注冊
customElements.define("one-button", OneButton)

運行得到:

圖片

在上面運行結果中,實現的展示效果是一樣,但是渲染的dom節點卻有所不同,在使用shadow dom?實現的標簽中會有#shadow-root字樣標識。

圖片

接下來,我們給他們添加上樣式,進行對比:

<button>hello yichuan</button>
<one-button></one-button>
<style>
button{
font-size: 15px;
padding: 12px;
background-color: #e02727;
color: #fff;
line-height: 15px;
cursor: pointer;
border: none;
}
</style>
<script>
// 1、創建自定義組件的類
class OneButton extends HTMLElement{
constructor(){
super()
// 2、創建shadow dom
this.attachShadow({mode: 'open'})
this.shadowRoot.innerHTML = `<button>hello onechuan</button>`
}
}

// 3、進行自定義組件的注冊
customElements.define("one-button", OneButton)
</script>

運行結果:

圖片

在上面代碼片段中,在全局對button?標簽進行設置樣式,運行結果表明并未影響到shadow dom中的樣式。

6.Template

見到template?模板,使用過vue框架的開發者就再熟悉不過了,template?標簽本身不會在html?中進行立即渲染,而是用于對待使用的代碼進行標記,在需要被使用的時候才會進行渲染。也正是因為template?的特性,使得我們可以將一些可重復使用的代碼用template?進行組織,通過javascript獲取它的引用,再添加到DOM中。

For Example:

<one-button></one-button>
<template>
<button>hello yichuan</button>
</template>
<script>
const template = document.createElement("template")
template.innerHTML = `<button>hello onechuan</button>`
// 1、實現自定義組件的類
class OneButton extends HTMLElement{
// 2、定義自定義組件的內容
constructor(){
super()
// 2-1、創建影子DOM
this.attachShadow({mode: "open"})
// 2-2、設置影子DOM的內容

this.shadowRoot.appendChild(template.content.cloneNode(true))
}
}
// 3、注冊自定義組件
customElements.define("one-button", OneButton)
</script>

圖片

在上面代碼片段中,可以看到在需要使用的時候將模板內容追加到shadow dom中,即模板內容不會立即被渲染,而是在被調用后才會在頁面進行渲染。

注意:

為什么這里使用Node.cloneNode() 方法添加了模板的拷貝到陰影的根結點上?

這是因為在添加模板內容到shadow dom?時,后續可以添加樣式信息到模板的style標簽上,也會將其封裝到自定義標簽中,倘若直接將模板添加到原生DOM元素中不起作用的。

7.Slots

插槽由其name屬性標識,并且允許您在模板中定義占位符,當在標記中使用該元素時,該占位符可以填充所需的任何 HTML 標記片段。使用過vue框架的開發者,對這部分內容再熟悉不過了。

<one-button>
<button>hello yichuan</button>
</one-button>
<script>
const template = document.createElement("template")
template.innerHTML = `
<div>
<slot><button>hello onechuan</button></slot>
</div>
`
class OneButton extends HTMLElement{
constructor(){
super()
this.attachShadow({mode:"open"})
this.shadowRoot.appendChild(template.content.cloneNode(true))
}
}
customElements.define("one-button",OneButton)
</script>

運行結果:

圖片

在上面片段中,在使用自定義標簽的時候,如果<one-button>?中沒有插入任何內容,展示的將是hello onechuan?,倘若在在使用時插入了自定義內容,則展示自定義內容hello yichuan。

當然,當自定義組件中有多個地方使用插槽,可以通過給每個插槽命名進行標識,即:命名插槽。

類似于:vue中的mount。

<one-button>
<button>hello yichuan</button>
<span slot="desc">
slot 這個我熟呀
</span>
</one-button>
<script>
const template = document.createElement("template")
template.innerHTML = `
<div>
<slot>
<button>hello onechuan</button>
</slot>
<slot name="desc"></slot>
</div>
`
class OneButton extends HTMLElement{
constructor(){
super()
this.attachShadow({mode:"open"})
this.shadowRoot.appendChild(template.content.cloneNode(true))
}
}
customElements.define("one-button",OneButton)
</script>

運行結果:

圖片

?connectedCallback

connectedCallback?方法會在自定義組件插入DOM的首次渲染時調用一次。此時 shadow dom?已經掛載到DOM樹上,對此可以通過connectedCallback?方法來訪問shadow dom上的屬性、子元素以及監聽事件。倘若組件被移除或被移動,將會再次被調用。

<one-button></one-button>
<script>
customElements.define("one-button",class extends HTMLElement{
constructor(){
super()
this.attachShadow({mode:"open"})
this.shadowRoot.innerHTML = `
<button>登錄</button>
`
}
connectedCallback(){
console.log("初始化");
this.addEventListener("click",()=>{
console.log("this id a click handler");
})
}
})
</script>

運行結果:

圖片

在上面代碼片段中,看到在進行渲染初始化后,會進行執行一次connectedCallback的內容。

?attributeChangedCallback

監聽custom element?自身屬性的增刪改,當發生狀態改變時調用此方法,在使用前必須在一個observedAttributes() ?的靜態方法中定義要觀察的屬性。該方法返回一個屬性名稱的數組。一旦observedAttributes?返回了屬性值數組,則attributeChangedCallback方法會在每次該屬性變化時調用。

這個方法有三個參數:屬性名稱被改變,該屬性的舊值,以及更新的值。當this.setAttribute()觸發時,屬性會被更新。

disconnectedCallback

當 custom element? 從文檔 DOM? 中刪除時,disconnectedCallback被調用。

<script>
customElements.define(
"one-button",
class extends HTMLElement {
//...
disconnectedCallback() {
this.removeEventListener("click", ()=>{
console.log("clicked handled");
});
}
}
);

</script>

8.寫在最后

在我們上述實現的自定義組件,可以在整個項目中重復使用。簡而言之,在構建Web Components時,步驟如下:

  • 首先,必須使用customElements.define()注冊自定義元素;
  • 構造函數會調用,將節點添加到shadow dom中
  • 然后,進行一次初始化,執行connectedCallback方法;
  • 當元素的屬性被更新時,它的attributeChangedCallback()被觸發;
  • 當一個事件從元素中被移除時,disconnectedCallback()方法被調用以清理事件監聽器。
  • shadow dom - 是DOM的一個封裝版本,用于防止CSS泄露。
  • Slots ?- 用于添加和訪問自定義元素組件的子元素,也有一種特殊的方式來訪問使用命名為Slot的子元素。

本文參考和整理了許多文檔資料,學而知不足,繼續前行。

9.參考文章

《Web Components Basic to Advanced》

《MDN文檔》

《重磅!哈啰 Quark Design 正式開源,下一代跨技術棧前端組件庫》

責任編輯:武曉燕 來源: 前端一碼平川
相關推薦

2010-06-23 20:31:54

2010-11-19 16:22:14

Oracle事務

2022-08-26 13:48:40

EPUBLinux

2020-09-21 09:53:04

FlexCSS開發

2009-08-25 16:27:10

Mscomm控件

2010-07-13 09:36:25

2020-07-20 06:35:55

BashLinux

2011-07-18 15:08:34

2010-11-15 11:40:44

Oracle表空間

2022-06-03 10:09:32

威脅檢測軟件

2010-11-08 13:54:49

Sqlserver運行

2018-06-22 13:05:02

前端JavaScript引擎

2021-04-28 10:13:58

zookeeperZNode核心原理

2021-01-19 12:00:39

前端監控代碼

2010-09-27 09:31:42

JVM內存結構

2013-04-16 10:20:21

云存儲服務云存儲SLA服務水平協議

2019-03-05 10:52:13

2009-09-24 16:22:50

Hibernate自動

2019-08-02 08:59:21

Token認證服務器
點贊
收藏

51CTO技術棧公眾號

欧美性极品xxxx做受| 麻豆国产精品官网| 欧美r级在线观看| 成年人午夜免费视频| 十九岁完整版在线观看好看云免费| 久久久久.com| 欧美精品午夜视频| 欧美老熟妇乱大交xxxxx| 午夜不卡一区| 欧美日韩国产一区二区三区| 一区二区三区国产福利| 午夜视频免费看| 国内外成人在线视频| 97免费视频在线播放| 中文字幕乱码av| 亚洲黄色录像| 精品乱码亚洲一区二区不卡| 在线免费观看av的网站| h片在线观看视频免费免费| 国产精品麻豆欧美日韩ww| 国产在线一区二区三区欧美| 91精品国产乱码久久久| 久久精品亚洲| 久久免费国产精品1| 四虎地址8848| 欧美理论电影大全| 日韩经典第一页| 亚洲色图欧美另类| 国产精品va视频| 欧美性大战久久久久久久蜜臀| 九色在线视频观看| 影音先锋男人资源在线| 国产精品国产三级国产| 国产.欧美.日韩| 茄子视频成人在线| 久久精品国产亚洲av无码娇色 | 国产精品久久波多野结衣| 亚洲男人第一av| 亚洲高清成人| 九九热99久久久国产盗摄| 超碰人人干人人| 国产永久精品大片wwwapp| 日韩av在线高清| 亚洲欧美综合视频| av综合网址| 日韩欧美中文一区二区| 国产人妻精品久久久久野外| avtt久久| 91精品国产综合久久小美女| 男人午夜视频在线观看| 自拍偷拍亚洲图片| 欧美日韩国产小视频在线观看| 91网址在线播放| 97欧美成人| 精品视频在线视频| 午夜激情av在线| 精品女同一区二区三区在线观看| 欧美亚洲国产一区二区三区 | 这里只有精品66| av电影在线网| 国产精品色婷婷久久58| 亚洲国产成人不卡| 日本在线免费| 亚洲日本丝袜连裤袜办公室| 一区精品在线| 高潮毛片在线观看| 亚洲欧美激情插| www国产免费| 精品日韩av| 天天色天天爱天天射综合| 精品无码一区二区三区在线| 午夜不卡影院| 欧美日韩一区高清| 欧美亚洲国产成人精品| 1024精品视频| 九色porny自拍视频在线观看| 精品福利免费观看| 欧美日韩亚洲一二三| 视频精品导航| 欧美一区二区三区四区五区| 色哟哟网站在线观看| 精品国产午夜肉伦伦影院| 亚洲毛片在线观看| 91视频免费看片| 亚洲影视一区二区三区| 久久久久免费视频| 伦av综合一区| 免费高清在线一区| 亚洲综合日韩中文字幕v在线| 亚洲a视频在线观看| 91一区二区三区在线播放| 欧美久久综合性欧美| 日韩在线资源| 亚洲国产精品久久不卡毛片| 青青在线视频免费| 一区二区三区在线资源| 亚洲丝袜在线视频| 亚洲国产精品免费在线观看| 国产日韩免费| 91精品久久久久久久久久另类| 精品区在线观看| 久久久另类综合| 7777在线视频| 原纱央莉成人av片| 5月丁香婷婷综合| 国产精品一级黄片| 91精品国产自产拍在线观看蜜| 久久久人成影片一区二区三区观看 | 污污网站免费观看| 国产一区调教| 日韩视频中文字幕| 日本一级片免费看| 国产一区二区三区在线观看免费视频| 久久草视频在线看| 18av在线视频| 欧美三级中文字| 国产亚洲色婷婷久久99精品91| 99久久99热这里只有精品| 欧美亚洲国产bt| 国产精品网址在线| 国产人妖一区二区| 久久精品夜夜夜夜久久| 成年人网站国产| 97久久精品一区二区三区的观看方式| 精品爽片免费看久久| 黄色一级片在线| 麻豆91小视频| 日本不卡久久| 日韩伦理在线一区| 亚洲电影中文字幕| 久久久久久久久毛片| 麻豆91小视频| 亚洲激情一区二区| 一本大道色婷婷在线| 精品蜜桃在线看| 午夜69成人做爰视频| 精品中文字幕一区二区小辣椒| 欧美一级日本a级v片| 蜜桃视频动漫在线播放| 日韩美女一区二区三区四区| 婷婷国产成人精品视频| 日韩高清不卡一区二区| 欧美精品二区三区四区免费看视频 | 天堂一区在线观看| 成人免费看片39| 国产精品999| 免费在线看v| 欧美丝袜第一区| 一区二区三区免费在线观看视频| 亚洲激情av| 国内外成人免费视频| 美女精品导航| 亚洲成人久久电影| 国产精品999久久久| 粉嫩aⅴ一区二区三区四区五区| 日韩中文字幕亚洲精品欧美| 精品国产亚洲一区二区三区大结局| 日韩网站免费观看高清| 国产欧美一区二区三区视频在线观看 | 亚洲www在线| shkd中文字幕久久在线观看| 欧美午夜精品一区| 肉色超薄丝袜脚交69xx图片| 国产精品成人**免费视频| 中文字幕不卡在线观看| 欧美 日韩 激情| 久久99精品久久久久久园产越南| 国产成人avxxxxx在线看| 国产福利电影在线| 欧美日产在线观看| 久久99久久久| 91蜜桃网址入口| 午夜免费精品视频| 五月开心六月丁香综合色啪| av色综合网| 国产伦久视频在线观看| 亚洲免费视频网站| 亚洲性在线观看| 亚洲欧美日本在线| 国产a√精品区二区三区四区| 一本色道久久| 午夜精品一区二区三区在线观看| 91麻豆精品国产综合久久久 | 亚欧美一区二区三区| 欧美日韩精品一本二本三本 | 免费在线观看黄色| 日韩欧美国产精品一区| 中文字幕视频网| 国产精品天干天干在观线| 可以看的av网址| 亚洲影院在线| 国产高潮呻吟久久久| 久久99国产精品久久99大师| 国产精品jvid在线观看蜜臀 | 欧洲s码亚洲m码精品一区| 91在线不卡| 精品噜噜噜噜久久久久久久久试看| 探花视频在线观看| 日韩久久一区二区| 少妇真人直播免费视频| 国产麻豆视频精品| 18岁视频在线观看| 欧美三级特黄| 亚洲综合欧美日韩| 秋霞影视一区二区三区| 91精品久久久久久久久久| 美女av在线免费看| 欧美成人久久久| 婷婷五月色综合| av高清一区| 欧美极品美女视频网站在线观看免费| 黄色av网址在线免费观看| 日韩欧美精品在线视频| 成人免费一区二区三区| 精品久久在线播放| 欧美日韩在线视频免费播放| 国产欧美一区二区精品婷婷| 挪威xxxx性hd极品| 久久爱www久久做| www.亚洲天堂网| 黄色综合网站| 强伦女教师2:伦理在线观看| 国产精品一区二区av交换| 国产精品.com| 久久国产精品免费一区二区三区| 久久91亚洲精品中文字幕奶水 | 国产毛片久久久久久| 99ri日韩精品视频| 国产狼人综合免费视频| 中文字幕影音在线| 久久久爽爽爽美女图片| a在线免费观看| 欧美激情一区三区| 992kp快乐看片永久免费网址| 日韩天堂av| www.激情网| 亚洲网色网站| 99re99热| 999国产精品| 亚洲精品一区二区三区蜜桃久| 你懂的一区二区三区| 国产一区二区视频在线免费观看| 一区二区三区四区视频免费观看 | 国产精品无遮挡| 波多野结衣片子| 久久青草欧美一区二区三区| 精品黑人一区二区三区观看时间| 成人一区二区三区视频| 国产成人精品一区二区三区在线观看| 国产精品99久久久久久似苏梦涵| 九九九九九九九九| 国产在线不卡一区| 黄色片子免费看| 国产成人亚洲综合a∨婷婷图片 | 8x国产一区二区三区精品推荐| 亚洲自拍在线观看| 亚洲精品在线播放| 动漫一区二区在线| 盗摄牛牛av影视一区二区| 免费成人小视频| 欧美一级中文字幕| 亚洲日韩视频| 无码人妻h动漫| 日日嗨av一区二区三区四区| 亚洲成人福利在线观看| 久久成人麻豆午夜电影| 亚洲三级在线观看视频| 国产精品123区| 久久久高清视频| 99精品一区二区三区| av女人的天堂| 国产精品美女久久久久高潮| 乱h高h女3p含苞待放| 一卡二卡三卡日韩欧美| 亚洲精品国产精品乱码| 色婷婷综合久久久| 国产伦理吴梦梦伦理| 欧美岛国在线观看| 三级毛片在线免费看| 中文字幕欧美专区| 欧美女同一区| 国产成人精品免费久久久久 | 老牛影视一区二区三区| 在线观看岛国av| 成人国产精品免费网站| 亚洲午夜久久久久久久国产| 一区二区三区欧美亚洲| 天天爱天天做天天爽| 欧美一级日韩不卡播放免费| 性xxxx18| 欧美美最猛性xxxxxx| 另类专区亚洲| 亚洲男人天堂古典| 国产免费无码一区二区视频| 精品久久久一区| 一卡二卡三卡在线| 欧美精品一区男女天堂| 三区四区电影在线观看| 欧美性受xxxx黑人猛交| 91精品视频一区二区| 久久99欧美| 一区二区三区在线观看免费| 欧美 日韩精品| 国产69精品久久久久777| 中国女人特级毛片| 亚洲国产一区二区a毛片| 成人一级免费视频| 亚洲成人黄色在线观看| 日本电影在线观看网站| 欧美亚洲另类在线| 日韩免费一级| 亚洲精品tv久久久久久久久| 1024日韩| 五月天六月丁香| 国产精品天干天干在观线| 国产精品500部| 日韩欧美三级在线| av在线中文| 日本久久久久久| 成人av综合网| 浴室偷拍美女洗澡456在线| 国产日产精品久久久久久婷婷| 亚洲欧美日韩国产成人| 黄色小说在线播放| 成人免费视频97| 成人国产精品一级毛片视频| 欧美日韩二三区| 国产成人免费高清| 成人黄色短视频| 在线欧美小视频| 日本黄在线观看| 性色av一区二区三区| 伊人久久大香线蕉av超碰| 正在播放精油久久| 麻豆视频观看网址久久| 中文字幕av久久爽一区| 91久久精品一区二区二区| 天堂成人在线| 欧美理论片在线观看| 国产亚洲高清一区| 日韩人妻精品一区二区三区| 麻豆精品新av中文字幕| 日韩欧美视频免费观看| 在线一区二区三区四区五区 | 成av人片一区二区| 欧美丰满艳妇bbwbbw| 日韩精品一区二区三区视频在线观看 | 成人18视频在线观看| 视频一区国产精品| 日本不卡不码高清免费观看| 久久久久无码精品国产sm果冻| 色视频成人在线观看免| 毛片在线播放网站| 国产ts人妖一区二区三区 | 国产盗摄一区二区三区| 强乱中文字幕av一区乱码| 日韩三级免费观看| 好吊日av在线| 久草一区二区| 日本美女视频一区二区| 在线观看日本黄色| 欧美一区二区三区小说| 日韩免费影院| 国产一区免费观看| 久久aⅴ国产紧身牛仔裤| 国产精品20p| 欧美日韩国产综合久久| 国产精品久久麻豆| 国产66精品久久久久999小说| 亚洲性图久久| 国产又粗又猛又爽又黄av| 精品视频在线免费看| www.欧美日本韩国| 国产精品视频入口| 久久精品官网| 国产一区在线观看免费| 欧美va在线播放| 亚洲最大成人| 亚洲欧洲三级| 丁香另类激情小说| 福利网址在线观看| 久久亚洲国产精品成人av秋霞| 日韩成人18| 毛片一区二区三区四区| 国产精品美女www爽爽爽| 亚洲第一页在线观看| 奇米四色中文综合久久| 天天干天天干天天| 久久国产麻豆精品| 91系列在线播放| 激情五月综合| 国产精品igao网网址不卡| 午夜国产精品一区| 成年人视频在线看| 国产精品果冻传媒潘| 青青草伊人久久| 久久99爱视频| 不卡亚洲精品| 美日韩免费视频| 精品一区免费av|