Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 在线亚洲激情,在线观看国产91,在线播放第一页

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          如何編寫一個(gè)原生 Web Components 組件

          如何編寫一個(gè)原生 Web Components 組件

          今前端編程中,利用語(yǔ)義化的 HTML 結(jié)合 CSS 來(lái)完一個(gè)組件并不是一件難事,這也意味著無(wú)論在 ReactVue 中都可以插入,不過(guò)它倆不是今天的主角,接下來(lái)我將用一個(gè)例子來(lái)介紹如何封裝一個(gè)完整的原生 HTMLWeb Components 組件,讓我們開始吧!

          HTML結(jié)構(gòu)

          首先我們來(lái)了解下 HTML 中的 <details> 元素,它可以用于創(chuàng)建一個(gè)小部件,其中包含僅在小部件處于“打開”狀態(tài)時(shí)才可見的附加信息,<details>元素內(nèi)可以包含的內(nèi)容沒有任何限制。

          默認(rèn)情況下,元素創(chuàng)建的小部件<details>處于“關(guān)閉”狀態(tài)(open標(biāo)簽可使其打開)。通過(guò)單擊小部件在“打開”和“關(guān)閉”狀態(tài)之間切換,以顯示或隱藏標(biāo)簽中包含的附加信息,內(nèi)部標(biāo)簽 <summary> 元素則可為該部件提供概要。

          一個(gè)簡(jiǎn)單的例子如下:

          <details>
              <summary> 不能說(shuō)的秘密 </summary>
              藏的這么深,可還是被你發(fā)現(xiàn)了
          </details>
          details {
              border: 1px solid #aaa;
              border-radius: 4px;
              padding: .5em .5em 0;
          }
          
          summary {
              font-weight: bold;
              margin: -.5em -.5em 0;
              padding: .5em;
          }
          
          details[open] {
              padding: .5em;
          }
          
          details[open] summary {
              border-bottom: 1px solid #aaa;
              margin-bottom: .5em;
          }

          使用語(yǔ)義化 HTML 的優(yōu)點(diǎn):頁(yè)面內(nèi)容結(jié)構(gòu)更清晰,方便開發(fā)者閱讀,更利于瀏覽器的理解與加載,搜索引擎解析與SEO優(yōu)化。

          添加億點(diǎn)樣式

          原生元素默認(rèn)的樣式很簡(jiǎn)陋,因此我們需要為其定制一下樣式,這塊內(nèi)容我們簡(jiǎn)單帶過(guò),只講解關(guān)鍵部分,樣式內(nèi)容有省略,具體可以在文末的碼上掘金中看到呈現(xiàn)效果。

          .ContentWarning > summary {
            position: relative;
            list-style: none; /** 去除默認(rèn)樣式 **/
            user-select: none; 
            cursor: pointer;
            /** 為其添加一個(gè)斜線背景 **/
            --stripe-color: rgb(0 0 0 / 0.1);
            background-image: repeating-linear-gradient(45deg,
                transparent,
                transparent 0.5em,
                var(--stripe-color) 0.5em,
                var(--stripe-color) 1em);
          }
          
          /** 通過(guò)var變量調(diào)整懸停時(shí)的顏色樣式 **/
          .ContentWarning>summary: hover,
          .ContentWarning>summary: focus {
            --stripe-color: rgb(150 0 0 / 0.1);
          }

          封裝模板

          現(xiàn)在我們來(lái)把它封裝成一個(gè)完整的組件,這需要先將 HTML 編寫在模板 template 當(dāng)中,并設(shè)置一個(gè) id,如下所示:

          <template id="warning-card">  
            <details class="ContentWarning">
              <summary>
                <strong>?? 注意:</strong> 以下為隱藏內(nèi)容
              </summary>
              <slot name="desc"> 藏的這么深,可還是被你發(fā)現(xiàn)了 </slot>
            </details>
          </template>

          熟悉 Vue 的小伙伴應(yīng)該很容易理解上面的代碼,結(jié)構(gòu)很相似,不過(guò)網(wǎng)頁(yè)不會(huì)直接渲染它包裹的內(nèi)容。此外我們還對(duì)此模板設(shè)置了一個(gè)插槽 slot,后面會(huì)講到它的作用。

          定義組件

          有了上面封裝好的模板,我們就需要在 JS 中定義成可用組件來(lái)讓其能夠被使用,調(diào)用 window 下的 customElements.define 方法,第一個(gè)參數(shù)是傳入組件名稱,我們定義組件名為: warning-card ,第二個(gè)參數(shù)傳入一個(gè)繼承了 HTMLElement 的類,在其構(gòu)造方法當(dāng)中獲取并克隆一個(gè)新的 HTML 節(jié)點(diǎn),它會(huì)通過(guò) appendChild 渲染到頁(yè)面當(dāng)中。

          window.customElements.define('warning-card',
            class extends HTMLElement {
              constructor() {
                super();
                var templateElem=document.getElementById('warning-card');
                var content=templateElem.content.cloneNode(true);
                this.appendChild(content);
              }
            })

          接著我們就可以在頁(yè)面中把它當(dāng)作組件那樣使用了:

          <warning-card> </warning-card>

          插槽與傳參

          回頭看看上面我們模板中設(shè)置的插槽 slot,此時(shí)還是沒有生效的,我們需要稍微改寫一下構(gòu)造函數(shù)中的渲染方式,將 web 組件定義為一個(gè) Shadow DOM,這樣構(gòu)造的是一個(gè)可以將標(biāo)記結(jié)構(gòu)、樣式和行為隱藏起來(lái),并與頁(yè)面上的其他代碼相隔離,保證不同的部分不會(huì)混在一起的獨(dú)立元素,并在最后使用 Node.cloneNode() 方法添加了模板的拷貝到 Shadow 的根結(jié)點(diǎn)上。

          window.customElements.define('warning-card',
            class extends HTMLElement {
              constructor() {
                super();
                var template=document.getElementById('warning-card').content;
                this.attachShadow({ mode: 'open' }).appendChild(template.cloneNode(true));
              }
            })

          現(xiàn)在我們嘗試使用下組件,往其內(nèi)容添加一個(gè)圖片,指向名為 descslot 插槽中:

          <warning-card>
            <img slot="desc" src="https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ba825ffee78c4a1b9c0232e5d2f1d048~tplv-k3u1fbpfcp-watermark.image?" />
          </warning-card>

          這時(shí)你會(huì)發(fā)現(xiàn),圖片插入到 details 元素的隱藏區(qū)域當(dāng)中了,slot 已經(jīng)成功生效,但是樣式卻消失了,這時(shí)因?yàn)榻M件已經(jīng)被完全隔離,我們需要將樣式作用在其內(nèi)部才會(huì)生效。

          <template id="warning-card">
            <style>
              <!-- TODO: 組件的樣式 -->
            </style>
            
            <details class="ContentWarning">
              <summary>
                <strong>?? 注意:</strong>
              </summary>
              <slot name="desc">THE DESCRIPTION</slot>
            </details>
          </template>

          這樣組件就正常了:

          除了定制模板中的插槽,我們也可以通過(guò) HTML 標(biāo)簽屬性來(lái)實(shí)現(xiàn)一些簡(jiǎn)單的傳參,例如在 summary 標(biāo)簽中顯示一個(gè)標(biāo)題:

          <warning-card title="前方高能">
          </warning-card>

          我們只需要在模板中定義好這個(gè)標(biāo)題的位置:

          <template id="warning-card">
            <details class="ContentWarning">
              <summary>
                  <!-- TODO: 模板中加入一個(gè)span標(biāo)簽 -->
                <strong>?? 注意:</strong> <span id="title"></span>
              </summary>
            </details>
          </template>

          最后在構(gòu)造函數(shù)中我們通過(guò) document 的原生方法寫入模板中就可以了:

          window.customElements.define('warning-card',
            class extends HTMLElement {
              constructor() {
                super();
                var template=document.getElementById('warning-card').content;
                // TODO: 找到title標(biāo)簽,寫入傳入組件的title屬性值
                template.querySelector('#title').innerText=this.getAttribute('title');
                this.attachShadow({ mode: 'open' }).appendChild(template.cloneNode(true));
              }
            })

          結(jié)束

          至此,我們通過(guò)一個(gè)簡(jiǎn)單的原生組件學(xué)習(xí)了如何編寫 Web Components,可以在此代碼片段中查看具體源碼:原生Web Components組件 - 碼上掘金原生Web Components組件 - 碼上掘金。

          以上就是文章的全部?jī)?nèi)容,希望對(duì)你有所幫助!如果覺得文章寫的不錯(cuò),可以點(diǎn)贊收藏,也歡迎關(guān)注,我會(huì)持續(xù)更新更多前端有用的知識(shí)與實(shí)用技巧,我是茶無(wú)味de一天,希望與你共同成長(zhǎng)~

          業(yè)門戶系統(tǒng)是企業(yè)信息化系統(tǒng)建設(shè)的一個(gè)重要支撐,以企業(yè)業(yè)務(wù)系統(tǒng)為基礎(chǔ)搭建門戶系統(tǒng)作為統(tǒng)一入口和應(yīng)用中心可以有效支撐系統(tǒng)整合,打造一體化信息整合平臺(tái)。Portal門戶集成平臺(tái)能夠基于企業(yè)的實(shí)際需要,通過(guò)應(yīng)用集成、數(shù)據(jù)集成、菜單集成等集成方式構(gòu)建企業(yè)門戶網(wǎng)站、應(yīng)用門戶、數(shù)據(jù)門戶、知識(shí)中心等,滿足企業(yè)對(duì)外展示、內(nèi)部業(yè)務(wù)、數(shù)據(jù)統(tǒng)計(jì)、文檔分享等場(chǎng)景需要。

          Portlet組件是Portal中重要的組成部分,在頁(yè)面中注冊(cè)、配置相應(yīng)的Portlet組件,通過(guò)Portal的聚合機(jī)制,從而實(shí)現(xiàn)數(shù)據(jù)的動(dòng)態(tài)展現(xiàn),同時(shí)Portlet組件之間支持通訊,可以實(shí)現(xiàn)組件之間的聯(lián)動(dòng),在Portal中Portlet有全動(dòng)態(tài)和普通組件兩種,全動(dòng)態(tài)Portlet直接在Portal平臺(tái)進(jìn)行開發(fā),而普通的Portlet組件需要借助DP進(jìn)行擴(kuò)展開發(fā),二者的應(yīng)用場(chǎng)景也是有所不同的,本篇文檔主要介紹兩種組件的開發(fā)步驟及配置過(guò)程。

          整體介紹

          Portal門戶集成平臺(tái)作為構(gòu)建企業(yè)門戶和統(tǒng)一入口的集成配置平臺(tái),提供了靈活的前端展現(xiàn)和后臺(tái)配置功能,根據(jù)企業(yè)的實(shí)際需要,可用通過(guò)Portal平臺(tái)的配置構(gòu)建企業(yè)門戶、應(yīng)用中心、數(shù)據(jù)門戶、知識(shí)中心等各類門戶,同時(shí)也能基于企業(yè)架構(gòu)分別為集團(tuán)和子公司、板塊獨(dú)立構(gòu)建門戶。

          1.功能架構(gòu)

          Portal門戶平臺(tái)主體功能包括門戶展現(xiàn)后臺(tái)管理兩部分,門戶展現(xiàn)主要是呈現(xiàn)給最終用戶的顯示效果,即各類應(yīng)用門戶,后臺(tái)管理主要作用是對(duì)Portal的門戶展現(xiàn)進(jìn)行配置,包括各類導(dǎo)航、主題、頁(yè)面、組件、數(shù)據(jù)等。

          Portal門戶集成平臺(tái)可以根據(jù)最終用戶或使用場(chǎng)景的不同構(gòu)建面對(duì)管理層、普通員工、外部人員等不同角色的門戶,基于Portal平臺(tái)預(yù)置的各類組件和功能可以實(shí)現(xiàn)不同門戶的動(dòng)態(tài)配置,包括展現(xiàn)方式、主題樣式、顯示內(nèi)容等。同時(shí)平臺(tái)支持CAS認(rèn)證、群組管理、角色管理、用戶管理、權(quán)限管理等機(jī)制,可以構(gòu)建統(tǒng)一的認(rèn)證和授權(quán)中心,控制相關(guān)的訪問(wèn)權(quán)限。

          2.集成架構(gòu)

          Portal門戶集成平臺(tái)作為應(yīng)用的統(tǒng)一入口,支持應(yīng)用集成、菜單集成、頁(yè)面集成、數(shù)據(jù)集成等不同的集成方式,可以將業(yè)務(wù)系統(tǒng)的訪問(wèn)地址、功能菜單、頁(yè)面等統(tǒng)一集成到門戶中,從而實(shí)現(xiàn)在門戶的統(tǒng)一訪問(wèn)和業(yè)務(wù)操作。

          根據(jù)實(shí)際業(yè)務(wù)需要,Portal平臺(tái)支持建立多種門戶,并支持不同角色、不同終端的訪問(wèn)需要,同時(shí)可以將業(yè)務(wù)系統(tǒng)的功能、業(yè)務(wù)、數(shù)據(jù)等集中到一個(gè)平臺(tái)進(jìn)行查看和操作,借助于ESB企業(yè)應(yīng)用集成平臺(tái)的應(yīng)用集成、數(shù)據(jù)集成,將業(yè)務(wù)系統(tǒng)的相關(guān)數(shù)據(jù)匯總呈現(xiàn)到Portal門戶中。

          3.組件說(shuō)明

          Portlet是基于Java的Web組件,在Portal門戶中,Portlet作為可插拔的組件實(shí)現(xiàn)Portal中數(shù)據(jù)的展現(xiàn)。在Portal中Portlet有全動(dòng)態(tài)和普通組件兩種。

          1.全動(dòng)態(tài)Portlet:全動(dòng)態(tài)Portlet組件不需要進(jìn)行后端的代碼開發(fā),只需要在后臺(tái)管理中定義好HTML的模板代碼,在配置頁(yè)面組件時(shí)選擇“全動(dòng)態(tài)Portlet”,最后在展現(xiàn)頁(yè)面通過(guò)“編輯組件”配置組件的html模板,以及構(gòu)建組件的數(shù)據(jù)URL,從而實(shí)現(xiàn)全動(dòng)態(tài)Portlet的構(gòu)建。

          2.普通Portlet:開發(fā)時(shí)需要通過(guò)DP開發(fā)平臺(tái)進(jìn)行代碼開發(fā),一般適用于代碼比較復(fù)雜,缺少直接獲取數(shù)據(jù)接口的組件,需要通過(guò)代碼開發(fā)來(lái)構(gòu)建組件,以及進(jìn)行數(shù)據(jù)的獲取與處理。

          功能介紹

          在開發(fā)組件時(shí)主要涉及到的后臺(tái)功能有:組件設(shè)置、組件模板和靜態(tài)數(shù)據(jù),下面主要介紹以上三塊功能。

          1.組件設(shè)置

          1.在組件設(shè)置中可以引入普通Portlet組件的相關(guān)信息。

          2.配置完組件信息后,可以直接在“導(dǎo)航管理”模塊引用該組件。

          2.組件模板

          1.在組件模板中可以配置全動(dòng)態(tài)Portlet組件的HTML模板代碼。

          2.配置成功后,可以通過(guò)編輯頁(yè)面的接口地址獲取該模板信息。

          3.靜態(tài)數(shù)據(jù)

          1.在“靜態(tài)數(shù)據(jù)”模塊可以配置組件所需的靜態(tài)數(shù)據(jù),可以配置json、xml等。

          全動(dòng)態(tài)Portlet

          全動(dòng)態(tài)Portlet組件不需要進(jìn)行后端的代碼開發(fā),只需要在后臺(tái)管理中定義好HTML的模板代碼,在配置頁(yè)面組件時(shí)選擇“全動(dòng)態(tài)Portlet”,最后在展現(xiàn)頁(yè)面通過(guò)“編輯組件”配置組件的html模板,以及構(gòu)建組件的數(shù)據(jù)URL,從而實(shí)現(xiàn)全動(dòng)態(tài)Portlet的構(gòu)建。下面主要介紹全動(dòng)態(tài)Portlet的開發(fā)過(guò)程。

          1.組件數(shù)據(jù)

          1.首先需要確認(rèn)組所需數(shù)據(jù)的格式,數(shù)據(jù)可以通過(guò)接口或者在Portal的靜態(tài)數(shù)據(jù)中獲取。

          2.明確獲取數(shù)據(jù)的地址。

          2.組件模板

          1.確認(rèn)完組件所需數(shù)據(jù)格式后,需要在“組件模板”中添加模板信息。

          2.可以在模板明細(xì)頁(yè)面獲取該模板的地址信息。

          3.展現(xiàn)配置

          1.首先在“導(dǎo)航管理”模塊的頁(yè)面布局中配置一個(gè)全動(dòng)態(tài)Portlet。

          2.在展現(xiàn)頁(yè)面中對(duì)添加的組件切換為EDIT狀態(tài),定義Html模板和數(shù)據(jù)URL。

          3.頁(yè)面展現(xiàn)效果如下:

          普通Portlet

          普通Portlet在開發(fā)時(shí)需要通過(guò)DP開發(fā)平臺(tái)進(jìn)行代碼開發(fā),一般適用于代碼比較復(fù)雜,缺少直接獲取數(shù)據(jù)的接口的組件,需要通過(guò)代碼開發(fā)來(lái)構(gòu)建組件,以及進(jìn)行數(shù)據(jù)的獲取與處理。下面主要介紹普通Portlet組件的開發(fā)過(guò)程。

          1.開發(fā)組件

          普通Portlet組件后臺(tái)代碼中主要包括以下方法:view、edit、saveConfig和getAjaxData。

          1.view方法:用于組件展現(xiàn)的方法。

          2.edit方法:顯示組件配置頁(yè)面,用來(lái)定義組件的各種屬性。

          3.saveConfig方法:保存組件屬性時(shí)調(diào)用該方法。

          4.getAjaxData:獲取組件所需數(shù)據(jù)方法。

          2.配置組件

          1.在DP中開發(fā)完組件后,需要在“組件設(shè)置”模塊添加該組件。

          3.展現(xiàn)配置

          1.首先在“導(dǎo)航管理”模塊的頁(yè)面布局中配置配置該組件。

          2.然后在展現(xiàn)頁(yè)面中對(duì)添加的組件切換為EDIT狀態(tài),配置組件相關(guān)屬性。

          3.配置成功后頁(yè)面展現(xiàn)效果如下:

          心得總結(jié)

          在學(xué)習(xí)portal產(chǎn)品的過(guò)程中,自己的技術(shù)能力及意識(shí)形態(tài)等多方面都得到了很大提升,并且有了很多感悟,現(xiàn)在將我在本工作中的收獲總結(jié)如下。

          1.應(yīng)用場(chǎng)景

          Portal作為構(gòu)建企業(yè)門戶和應(yīng)用中心的集成平臺(tái),提供了豐富的配置功能,可以根據(jù)業(yè)務(wù)需要配置各類門戶,同時(shí)支持定制化擴(kuò)展開發(fā),滿足企業(yè)業(yè)務(wù)的靈活展現(xiàn),構(gòu)建企業(yè)的統(tǒng)一訪問(wèn)入口。基于Portal門戶平臺(tái)可以將各個(gè)業(yè)務(wù)系統(tǒng)的訪問(wèn)入口、功能頁(yè)面、數(shù)據(jù)等統(tǒng)一集中展現(xiàn),支撐同一平臺(tái)進(jìn)行多業(yè)務(wù)的操作,或者跳轉(zhuǎn)到各個(gè)平臺(tái)進(jìn)行操作。

          2.發(fā)展趨勢(shì)

          隨著數(shù)字化和移動(dòng)互聯(lián)網(wǎng)時(shí)代的來(lái)臨,云計(jì)算、大數(shù)據(jù)、微服務(wù)、移動(dòng)互聯(lián)等各種新興技術(shù)為企業(yè)業(yè)務(wù)不斷發(fā)展帶來(lái)支撐,門戶平臺(tái)理念技術(shù)也根據(jù)新技術(shù)的發(fā)展進(jìn)行對(duì)應(yīng)的改造與升級(jí),以不斷支撐企業(yè)內(nèi)外部業(yè)務(wù)的處理。新時(shí)期互聯(lián)網(wǎng)環(huán)境下,構(gòu)建連接一切、集成一切的集中化、多層級(jí)、高服務(wù)、高創(chuàng)新的中臺(tái)戰(zhàn)略出現(xiàn),而門戶搭建做為信息化建設(shè)重要階段,也在此背景下重新定位。

          3.集成方案

          由于Portal平臺(tái)是作為統(tǒng)一應(yīng)用入口存在的,所以在各個(gè)解決方案中都可以結(jié)合Portal平臺(tái)構(gòu)建統(tǒng)一的入口,這樣無(wú)論是使用還是進(jìn)行方案演示,都可以通過(guò)Portal統(tǒng)一訪問(wèn),提高操作過(guò)程的流暢性,更能體現(xiàn)出方案的一體化特性,提高方案的演示效果。

          后續(xù)隨著Portal產(chǎn)品更多的應(yīng)用于集成方案和門戶網(wǎng)站建設(shè),產(chǎn)品的相關(guān)功能也會(huì)更加全面和完善,同時(shí)隨著后續(xù)云平臺(tái)模式的不斷深化,不斷推動(dòng)直接面向客戶的多租戶、云平臺(tái)的SaaS模式,Portal的使用場(chǎng)景也會(huì)更加的豐富和靈活,支撐更多的業(yè)務(wù),更全面的支持產(chǎn)品方案的一體化融化。

          本文由@數(shù)通暢聯(lián)原創(chuàng),歡迎轉(zhuǎn)發(fā),僅供學(xué)習(xí)交流使用,引用請(qǐng)注明出處!謝謝~

          能:純VUE,純前端實(shí)現(xiàn)文件上傳,支持文件上傳,大文件上傳,文件夾上傳,100G超大文件斷點(diǎn)續(xù)傳,MD5校驗(yàn),文件秒傳,云存儲(chǔ),比如阿里云,七牛云,華為云,百度云,騰訊云,

          核心優(yōu)勢(shì):使用簡(jiǎn)單,配置簡(jiǎn)單,集成簡(jiǎn)單,維護(hù)簡(jiǎn)單。提供前端源代碼,提供后端源代碼,提供7*24小時(shí)專業(yè)工程師技術(shù)支持。


          代碼:https://gitee.com/xproer/up6-vue-cli

          1.引入up6組件

          2.配置接口地址

          接口地址分別對(duì)應(yīng):文件初始化,文件數(shù)據(jù)上傳,文件進(jìn)度,文件上傳完畢,文件刪除,文件夾初始化,文件夾刪除,文件列表

          參考:http://www.ncmem.com/doc/view.aspx?id=e1f49f3e1d4742e19135e00bd41fa3de

          3.定義事件


          主站蜘蛛池模板: 国产精品一区二区不卡| 无码av免费一区二区三区| 亚洲一区影音先锋色资源| 国产精品综合一区二区三区| 无码人妻精品一区二区三区在线| 日韩在线视频一区| 亚洲综合在线一区二区三区| 无码精品一区二区三区免费视频| 日韩少妇无码一区二区三区| 国产成人欧美一区二区三区| 日韩人妻一区二区三区蜜桃视频| 国产在线精品一区二区夜色| 日韩有码一区二区| 国产乱子伦一区二区三区| 韩国精品一区视频在线播放| 伊人久久大香线蕉AV一区二区| 中文字幕一区二区三区在线观看| 国产日韩AV免费无码一区二区| 国产日韩AV免费无码一区二区| 国产一区三区二区中文在线| 丰满岳妇乱一区二区三区| 无码8090精品久久一区| 国产一区二区三区四| 精品乱码一区内射人妻无码| 精品女同一区二区| 亚洲av成人一区二区三区在线观看| 精品人妻一区二区三区四区在线 | 国产一区中文字幕| 国产成人综合亚洲一区| 国产成人精品一区二三区在线观看| 国产成人一区在线不卡| 丰满爆乳一区二区三区| 无码视频一区二区三区在线观看| 色婷婷一区二区三区四区成人网| 久久一区二区精品| 欧美日韩精品一区二区在线观看| 国产日韩精品一区二区三区| 国产一区二区三区高清视频| 国产精品毛片VA一区二区三区| 日韩一区二区在线播放| 加勒比无码一区二区三区|