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

復盤!如何設計可視化搭建平臺的組件商店?

開發 前端
“商店”大家也許并不陌生,對用戶而言,其基本用途是滿足正常的消費需求;對供應商而言,商店提供了一種銷售自身產品的營銷推廣渠道;對商店自身而言,一方面獲得了客流和利潤,另一方面還能提供自身價值在空間上的延伸。

之前一直在做 lowcode 和可視化相關的項目,也圍繞可視化技術輸出了一系列技術文章,今天我繼續和大家來聊聊可視化平臺相關的話題——組件商店。這個需求其實很早在我開源 H5-Dooring 之后就有網友提出過 issue ,如下:

正好最近也做了一系列的重構和優化,覺得是時侯著手組件商店了,所以借此機會和大家詳細聊聊如何設計可視化搭建平臺的組件商店。

按照我一向的寫作風格,我會在下面列出文章的大綱,以便大家有選擇且高效率的閱讀和學習:

  • 什么是組件商店,為什么要設計組件商店
  • 組件商店工作流設計
  • 組件商店工作流具體方案實現
  • 實現在線代碼編輯器
  • 組件提交方案設計
  • 組件審批方案設計
  • 組件上架更新方案
  • 可視化搭建平臺組件商店總結及后期規劃

文章視圖如下,大家在平時在工作中也可以通過思維導圖的方式來整理思路。

什么是組件商店, 為什么要設計組件商店

“商店”大家也許并不陌生,對用戶而言,其基本用途是滿足正常的消費需求;對供應商而言,商店提供了一種銷售自身產品的營銷推廣渠道;對商店自身而言,一方面獲得了客流和利潤,另一方面還能提供自身價值在空間上的延伸。

通過以上的圖例說明,我們很容易想到一個詞——生態。因為每一個環節都在相互促進,相互影響。那么對于商店這個實體有了具象的認知之后,我們再來看看技術領域的“組件商店”。

對于可視化搭建平臺而言,其中一個核心的環節就是組件資產。用戶在設計搭建頁面時會消費各種各樣的組件,但是對于不同的用戶而言,組件的需求往往是不一樣的,大部分的 lowcode 或者 nocode 平臺都不能很好的解決用戶這些定制化的組件需求,所以為了解決這一問題,組件商店就孕育而生。

我們需要在平臺中提供一種機制,支撐生產者生產組件,定義組件,同時管理者可以對生產者生產的組件進行分類管理(比如上架/下架/刪除/排序等)。做過電商系統的朋友可能會發現,它和電商平臺的商品發布上線是一個邏輯流程:

那么接下來我就帶大家一起設計一個這樣的流程,供大家參考。

組件商店工作流設計

根據上面的介紹和分析,我們要想實現完整的組件商店工作流,需要滿足以下幾點:

  • 組件線上編輯(上傳)模塊
  • 組件審核模塊
  • 組件更新/發布模塊
  • 組件管理(上架/下架/刪除/下載)

有了以上4塊的支持,基本的組件商店就可以 work 了。具體流程如下:

組件商店工作流具體方案實現

在有了具體的規劃和設計之后,我們就可以一步步來實現了。

1.實現在線代碼編輯器

在線代碼編輯器目前市面上有幾種成熟的方案,比如:

  • react-monaco-editor
  • react-codemirror2
  • ace | 性能和功能上可以媲美本地代碼編輯器

大家可以選擇以上任意一種方案,這里筆者采用 react-codemirror2 來實現。實現后的效果如下:

由上圖可以看到我們可以在線編寫React,Css,Js 代碼,并且可以配置組件信息。首先我們來安轉一下插件:

yarn add react-codemirror2 codemirror2

codemirror 給我們提供了很多語言支持和不同風格的代碼主題,我們可以很輕松的制作不同語言的編輯面板。接下來我帶大家實現一個React代碼編輯器:

import {UnControlled as CodeMirror} from 'react-codemirror2';
require('codemirror/mode/jsx/jsx');

const react_code = `import styles from './index.less';
import React, { memo, useState } from 'react';
import ReactDOM from 'react-dom';

const MenuCp = memo((props) => {
  const { visible, list, bgColor, top } = props;
  return ReactDOM.createPortal(
    <div className={styles.menuWrap} style={{display: visible ? 'block' : 'none', backgroundColor: bgColor, top: (top + 6) + 'px'}}>
      H5-Dooring
    </div>,
    (document as any).querySelector('.react-grid-layout').parentNode,
  )
})`

const ReactEditPanel = () => {
  const codeEditorChange = (
      _editor: CodeMirror.Editor,
      _data: CodeMirror.EditorChange,
      value: string, 
      type: string
      ) => {
      console.log(_data, value, type)
    }
  return <CodeMirror
          value={react_code}
          className={styles.codeWrap}
          optinotallow={{
              mode: 'jsx',
              theme: 'material',
              lineNumbers: true
          }}
          notallow={(editor, data, value) => codeEditorChange(editor, data, value, 'react')}
      />
}

以上就實現了一個簡單的React代碼編輯器,是不是很簡單呢? 同理對于 css ,js 代碼編輯器,也是同樣的方式,我們只需要定義 CodeMirror 屬性的mode 為 css ,javascript 即可。我們還可以設置 theme 來切換到我們喜歡的代碼主題,這里筆者使用的material風格。

單純實現在線代碼編輯器還不夠,我們還需要對代碼進行處理,保存,對組件進行定義,接下來我們就來看看組件是如何提交的。

2.組件提交方案設計

當“ 生產者 ”編寫好組件代碼之后,需要對組件自身進行定義。因為可視化平臺組件物料很依賴平臺的組件開發協議,我們需要按照平臺的規范去上傳規范的自定義組件,這樣平臺才能更好的理解應用組件,保持用戶認知的一致性。

組件描述信息筆者這里設計了如下字段:

  • 組件名稱 (中文)
  • 組件名 (英文,方便存庫)
  • 組件分類 (基礎,可視化,營銷,媒體等)
  • 組件默認大小 (寬高)
  • 組件圖標 (方便用戶認知,查找)

大家也可以根據自己的平臺特性來定義和規范,這樣我們就可以提交一個完整的組件數據了。

目前我的做法是將用戶提交的完整的組件數據存在庫中,以便審核轉化為可視化平臺可以消費的組件,當然大家也可以用更智能的方式,自動對組件代碼信息進行提取轉化,其缺點就是誤差率無法控制,以及無法對組件進行準確的描述。以下是我提交的效果:

組件提交邏輯也很簡單:

form.validateFields().then(values => {
  codeRef.current['form'] = {
    ...values,
    icon: values.icon[0].url
  };
  req.post('/visible/cp/save', codeRef.current).then(res => {
    setIsModalVisible(false);
  })
}).catch(errorInfo => {
  console.log(errorInfo)
  setCurTab("4")
})

我們只需要用 antd 的Form 將用戶填寫的數據收集起來提交給后臺接口即可。由于我的后臺采用 nodejs 實現,上傳接口無非就是保存組件數據,實現比較簡單,這里就不一一介紹了。對 nodejs 感興趣的朋友可以參考我之前的開源項目從零搭建全棧CMS系統。

3.組件審批方案設計

組件審批主要由網站管理人員來操作,當用戶組件提交成功之后,客戶端會通過消息信令通知管理員,管理員收到消息后會審核組件。那么整個過程也很簡單,我們可以使用 websocket 來實現消息雙向通信,完整流程如下:

我們先來實現 socket 通信,這里我就采用市面比較成熟的 socket.io,來簡單打通一個客戶端, 服務端的雙向通信流程。

首先我們先按照一下依賴:

# 服務端
yarn add socket.io

# 客戶端
yarn add socket.io-client

對于服務端,我們需要進行如下改寫:

import koa from 'koa';
import http from 'http';

const app = new koa();
const server = http.createServer(app.callback());
const io = require('socket.io')(server);

// 一些業務邏輯...

// socket通信
io.on('connection', (socket) => {
    console.log('a user connected');
    socket.on('component upload success', (msg) => {
      // 通知審批
      io.emit('component review', msg)
    })
  });

server.listen(config.serverPort, () => {
    console.log(`服務器地址:xxx.xxx.xxx`)
});

對于客戶端,邏輯如下:

import io from 'socket.io-client'
import { serverUrl } from '@/utils/tool'

const socket = io(serverUrl);

// ... 一些邏輯
useEffect(() => {
   socket.on('connect', function(){
     console.log('connect')
   });
   socket.on('htmlWorked', function(data){
     const { result, message } = data
     if(result !== 'error') {
       // ...
     }else {
       // ...
     }
     
   });
   socket.on('disconnect', function(e){
     console.log('disconnect', e)
   });
 }, [])

通過以上的實現方式客戶端和服務端就可以隨時進行通信了。接下來我們看看審批的效果:

用戶在 H5-Dooring 平臺提交的組件都會流入管理后臺,管理員可以對組件進行審查以及下載源碼等操作。審批同樣會用到 codemirror 這個庫,主要是將存到數據庫的字符串代碼進行回顯。當然還可以實現線上預覽組件上線后的效果,這塊大家感興趣的可以自己嘗試一下實現方案,原理也很簡單。我們來看看審批的演示:

4. 組件上架更新方案

組件上架的方案也有很多,比如可以手動上架更新,也可以用程序自動化的完成。那么這里我介紹一下我的線上自動化上架的方案,這里還是需要借助上面介紹的 socket.io 和 nodejs。原理大致如下:

完整的流程就是平臺管理員對組件審批通過之后,會自動用 socket 向服務端發送審批通過信號,服務器會對組件數據進行解析,寫入對應類別下的組件庫里(也就是組件入庫),并將組件信息元寫入到編輯器基座,此時為了更新基座拿到最新的效果,需要 nodejs 解析構建指令線上打包基座,基座更新完之后會用 socket 發送消息給 H5-Dooring,通知用戶組件庫已更新,提示用戶是否刷新組件列表,至此,一個完整的組件上架更新流程就完成了。這里我們實現一下如何線上打包編輯器基座。

首先我們需要對 nodejs 的父子進程有一定的了解,比如 child_process。我會使用child_process 的 exec 實現解析并執行命令行指令,如果大家對 nodejs 的父子進程不太熟悉,也可以參考我之前的文章 基于NodeJS從零構建線上自動化打包工作流。

因為整個過程需要自動化的去處理,不能像我們之前打包項目一樣,手動執行 npm run build 或者 yarn build 。我們需要程序自動幫我們執行這個命令行指令,具體方案如下:

import { exec } from 'child_process'
const outWorkDir = resolve(__dirname, '../h5_base_frame')
const fid = uuid(8, 16)
const cmdStr = `cd ${outWorkDir} && yarn build ${fid}`

router.post(api.generalConfig,
    auth,
    ctx => {
      // ...
      exec(cmdStr, function(err, stdout, stderr){
       if(err) {
         console.log('api error:'+stderr);
         io.emit('htmlWorked', { result: 'error', message: stderr })
       } else {
         io.emit('component update success', { result: 'success', message: 'xxxx' })
       }
      })
      // ...
    }
);

通過以上的方式,我們就可以線上打包更新我們的項目基座,并植入任何參數,如果需要動態寫入文件,我們只需要用 fs 模塊處理即可,通過這樣的線上工作流,我們還可以實現更復雜的邏輯,甚至實現一個小型的前端CI工作流。那么大家如果有更優雅更好的方案,也是可以隨時在評論區交流。

可視化搭建平臺組件商店總結及后期規劃

以上所有的設計方案實現都是基于實際需求來設計的,當然還有很多細節需要處理和優化,隨著需求和,業務的復雜,后期還會做組件統計,組件數據分析,組件監控等能力,大家也可以參考以上的設計方案,設計自己的組件商店。

責任編輯:姜華 來源: 趣談前端
相關推薦

2021-11-19 08:30:39

H5-Dooring 可視化組件商店

2021-07-27 08:29:33

可視化組件商店H5-Dooring

2020-12-29 08:04:16

可視化地圖組件日歷組件

2021-02-28 07:42:40

可視化網格線H5-Dooring

2021-06-16 08:30:36

Dooring可視化數據源設計剖析

2021-06-16 07:05:03

安全

2021-01-09 09:48:10

可視化自然流布局 LowCode

2022-01-14 07:56:38

流布局設計拖拽

2023-03-16 20:46:40

可視化平臺迭代

2022-06-29 08:28:58

數據可視化數據可視化平臺

2024-02-05 13:40:00

Mathlive開源庫Web 組件

2023-12-01 08:09:08

2021-07-12 17:23:47

零設計可視化引擎

2023-12-06 08:07:13

拖拽庫可視化

2023-09-28 08:00:53

2023-01-05 07:39:28

2022-10-14 07:25:49

2022-10-14 16:25:50

數據可視化大屏搭建BI平臺

2021-09-27 08:31:01

數據可視化柱狀圖折現圖

2010-07-30 14:00:41

Flex組件
點贊
收藏

51CTO技術棧公眾號

精品国产青草久久久久福利| 免费日韩一级片| 中文字幕人妻精品一区| 亚洲一区二区三区中文字幕在线观看 | 精品一区不卡| 亚洲动漫第一页| 成人性生交xxxxx网站| 亚洲第一综合网| 黄色亚洲网站| 91麻豆国产精品久久| 欧美大荫蒂xxx| 亚洲av毛片在线观看| 色影视在线观看| 日韩欧美中文| 国偷自拍第113页| 五月天婷婷综合网| 亚洲肉体裸体xxxx137| 亚洲国产成人av网| 亚洲一区二区三区四区在线免费观看 | 色婷婷综合成人av| 9久久婷婷国产综合精品性色 | 亚洲午夜女主播在线直播| 啊啊啊一区二区| 五月激情婷婷网| 欧美精品一卡| 欧美mv和日韩mv国产网站| 美女在线免费视频| 精品国产18久久久久久| 欧美三区视频| 日韩在线观看你懂的| 一卡二卡三卡四卡| 欧美性理论片在线观看片免费| 久久免费看少妇高潮| 国产国语videosex另类| 免费视频91蜜桃| 欧美jizz19性欧美| 日韩欧美高清视频| 丝袜足脚交91精品| 国产又粗又猛又爽又黄的| 女主播福利一区| 欧美va亚洲va| 亚洲在线观看网站| cao在线视频| 久久综合九色综合欧美98| 福利视频一区二区三区| 天天操中文字幕| 在线不卡亚洲| 在线观看久久久久久| 999这里有精品| 美女航空一级毛片在线播放| 97久久超碰国产精品| 国产福利精品在线| 久久99国产综合精品免费| 欧美一级本道电影免费专区| 欧美一区二区三区婷婷月色| 免费一级特黄特色毛片久久看| 日韩精品系列| 精品一二三四区| 97人人模人人爽人人喊中文字| 日韩精品电影一区二区| 亚洲成a人片777777久久| 亚洲一区在线播放| 欧美国产视频一区| www.91在线| 国产福利91精品| 国产成人亚洲综合91精品| √资源天堂中文在线| 久久精品123| 欧美成人激情视频免费观看| 久久精品老司机| 香蕉久久精品| 日韩精品最新网址| 国产精品久久久毛片| 国产精品论坛| 一区二区三区精品| 亚洲欧洲精品一区| 你懂的好爽在线观看| 懂色av噜噜一区二区三区av | 久久久一本精品| 亚洲免费在线观看视频| 精品欧美日韩| 国产精品欧美激情在线| 国产一区日韩二区欧美三区| 国产99久久精品一区二区| 精品亚洲永久免费| 永久亚洲成a人片777777| 中国日韩欧美久久久久久久久| 国产性生活毛片| 国产一区二区三区| 激情综合中文娱乐网| 麻豆视频网站在线观看| 国产男男gay体育生白袜| 欧美va天堂在线| 欧美第一黄色网| 免费污污视频在线观看| 亚洲伦伦在线| 欧美成人免费va影院高清| 欧美人妻精品一区二区免费看| 北条麻妃国产九九九精品小说| 久热精品视频在线| 午夜三级在线观看| 色综合色综合| 欧美激情精品久久久久久黑人| 国产高清中文字幕| 国产精品亚洲人在线观看| 日韩免费在线免费观看| 国产黄色一区二区| 国产日韩精品一区| 日韩国产精品一区二区三区| 久久久资源网| 亚洲综合图片区| 91制片厂毛片| 香蕉久久夜色精品国产更新时间| 久久精品亚洲国产| 日韩福利小视频| 亚洲成人99| 日韩在线观看免费av| 久久噜噜色综合一区二区| 99精品国产99久久久久久福利| 性欧美办公室18xxxxhd| 亚洲一线在线观看| 激情深爱一区二区| 日韩精品一区二区三区丰满| 成人bbav| 欧美精品在线一区二区三区| 中文字幕第一页在线视频| 国产精久久久| 亚洲网站在线播放| 国产免费观看av| 成人精品一区二区三区四区| 成人免费网站在线| 国产小视频免费在线网址| 国产一区二区在线影院| 色噜噜色狠狠狠狠狠综合色一| 高清精品在线| 亚洲国产成人91精品| 国产又粗又猛又色| 国产精品入口久久| 久久精品国产亚洲7777| 成人免费一级片| 国产一区二区三区久久久| 亚洲国产精品视频一区| 欧美成人精品三级网站| 国产一区二区三区丝袜| wwwxxx亚洲| 久久婷婷综合激情| 成人免费观看毛片| 色噜噜成人av在线| 神马久久桃色视频| 亚洲天堂久久久久| 国产精品三级电影| 日韩一级片免费视频| 黑人精品一区| 亚洲丝袜一区在线| 黄色一级片在线免费观看| 国产综合色产在线精品| 国产日本欧美在线| 天堂中文在线播放| 欧美日韩国产综合草草| 日本一区二区在线观看视频| 精品国产一区二区三区av片| 国产精品成人观看视频国产奇米| a天堂在线视频| 一区二区三区小说| 欧美午夜性生活| av中文字幕一区二区| 国产精品私拍pans大尺度在线| 亚洲精品综合网| 国产欧美精品一区二区色综合| 亚洲精品少妇一区二区| 欧美日韩五区| 亚洲精品白浆高清久久久久久| 九九热久久免费视频| 一本久道综合久久精品| 日本不卡久久| av资源在线播放| 日韩精品中文字| 国产av 一区二区三区| 天堂久久久久va久久久久| 懂色中文一区二区三区在线视频| 3344国产永久在线观看视频| 亚洲欧美激情另类校园| 久久免费视频6| 91丨九色丨蝌蚪富婆spa| 99久久国产宗和精品1上映| 欧美一级色片| 国产精品久久久久久久7电影| 国产精品久久久久久福利| 午夜成人免费视频| 亚洲在线观看网站| 99精品视频免费观看视频| 亚洲精美视频| 精品国产午夜肉伦伦影院| 欧美国产亚洲视频| 天堂在线中文| 大桥未久av一区二区三区| 久久免费精品国产| 奇米影视一区二区三区| 欧美亚洲另类在线一区二区三区| 国产一二三在线| 色999日韩欧美国产| 色哟哟国产精品色哟哟| 亚洲国产成人tv| 成年人看的免费视频| 国产**成人网毛片九色| 国产a级黄色大片| 国产成人久久| 国产免费一区| 国产亚洲成av人片在线观看 | 888久久久| 久久综合一区| 人狥杂交一区欧美二区| 日韩精品视频免费在线观看| 国产一级片毛片| 亚洲久本草在线中文字幕| 公肉吊粗大爽色翁浪妇视频| 99精品视频免费在线观看| 国产黄色一区二区三区| 日本不卡高清视频| 欧美一级在线免费| 精品美女在线播放| 视频在线一区二区三区| 日韩亚洲精品在线观看| 精品999在线播放| xxav国产精品美女主播| 国产精品乱子乱xxxx| 波多野结衣家庭主妇| 一区二区三区四区不卡在线| 中文字幕一区二区人妻在线不卡| 欧美人妻精品一区二区免费看| 天天射天天操天天干| 亚洲精品国产a| av免费播放网站| 亚洲一区欧美激情| 久久综合九色综合网站| 日韩精品三级| 91在线网站视频| 成人三级高清视频在线看| 91老师国产黑色丝袜在线| 亚洲一级片在线观看| 欧美大片网站在线观看| 一级日韩一区在线观看| 99久久自偷自偷国产精品不卡| 中文字幕你懂的| 疯狂蹂躏欧美一区二区精品| 你懂的国产视频| 性久久久久久久久久久久| 激情综合网五月天| 久久精品欧美日韩| 亚洲美女高潮久久久| 国产色综合网| 国内精品一区二区| 久久99精品久久久野外观看| 欧美巨大黑人极品精男| 天堂资源中文在线| 亚洲国产欧美日韩精品| 污视频在线免费观看| 日韩经典中文字幕在线观看| 亚洲av成人精品日韩在线播放| 日韩精品免费综合视频在线播放| 天天射天天色天天干| 亚洲老司机av| eeuss影院www在线播放| 色诱女教师一区二区三区| 国产午夜在线视频| 亚洲免费专区| 蜜臀91精品一区二区三区| 亚洲综合三区| 欧美色xxxx| 亚洲图片第一页| 亚洲欧洲性图库| 久国产精品视频| 狠狠色狠狠色合久久伊人| 91欧美一区二区三区| 成人性生交大片免费看视频在线| 中国xxxx性xxxx产国| 久久婷婷国产综合国色天香| 国产aaaaaaaaa| 一区二区三区在线观看视频| 国产高潮久久久| 欧美日韩中文精品| 青草视频在线观看免费| 欧美亚洲国产bt| 日韩视频免费观看高清| 一本色道久久综合亚洲精品按摩| 久久97人妻无码一区二区三区| 天天射综合影视| 欧美片一区二区| 色综合久久久网| 国产精品嫩草影院桃色| 亚洲国产欧美一区二区三区同亚洲 | 一本大道av伊人久久综合| 亚洲综合精品视频| 欧美精品一区二区三区在线播放| 91美女视频在线| 日韩精品在线观看视频| 国产黄色片在线观看| 欧美人交a欧美精品| 激情开心成人网| 国产精品xxxx| 亚洲青青久久| 午夜伦理一区二区| 久久青青草视频| 69久久夜色精品国产69蝌蚪网| 欧美性猛交xxxx乱大交hd| 欧美一区二区三区日韩视频| 日韩a在线观看| 欧美日韩福利电影| 国产一区高清| 成人精品视频在线| 天堂99x99es久久精品免费| 亚洲天堂第一区| 欧美一区二区三区另类| 熟女人妇 成熟妇女系列视频| 国产精品一二三四五| 亚洲AV无码成人精品区明星换面| 亚洲一二三专区| 国产精品免费无遮挡| 国产一区二区日韩精品欧美精品| √天堂8资源中文在线| 亚洲japanese制服美女| 清纯唯美亚洲综合一区| 免费无码av片在线观看| 99国产欧美久久久精品| 国产小视频在线看| 91精品免费观看| 中文字幕在线视频区| 日韩免费在线视频| 亚洲视频分类| 日日摸日日碰夜夜爽av| 成人精品电影在线观看| 麻豆视频在线观看| 日韩一区二区三区免费看 | 伊人久久综合97精品| 国产在线美女| 国产欧美日韩视频一区二区三区| 欧美成人一品| 中文字幕乱妇无码av在线| 国产不卡在线一区| 国产极品国产极品| 91麻豆精品国产综合久久久久久| 中文字幕在线视频区| 国产精品久久久久高潮| 日韩欧美不卡| 艹b视频在线观看| 国产成人在线视频网站| 99热这里只有精品4| 欧美日韩午夜在线| 免费黄网在线观看| 国产日韩在线看片| 豆花视频一区二区| 亚洲国产一区二区三区在线播| 久久三级福利| 日本精品久久久久中文| 欧美日韩精品欧美日韩精品一| 夜级特黄日本大片_在线 | 国产精品欧美综合亚洲| zzijzzij亚洲日本成熟少妇| 24小时成人在线视频| 国产日产欧美一区二区| 国产91丝袜在线18| 日产欧产va高清| 欧美午夜影院一区| 日本美女在线中文版| 91手机在线观看| 日韩精品水蜜桃| 亚洲第一色av| 亚洲午夜久久久久中文字幕久| 特级丰满少妇一级aaaa爱毛片| 国内精品400部情侣激情| 日韩国产一二三区| 亚洲一区二区三区在线观看视频| 九色porny丨国产精品| 精品人妻一区二区三区日产乱码卜| 亚洲欧洲日韩女同| 午夜精品久久久久久久99| 国产亚洲一区二区精品| 欧美jizz18| 亚洲国产精品无码观看久久| 久久九九久久九九| 国产区在线观看视频| 伊人av综合网| 成人精品毛片| 五月天激情图片| 成人av一区二区三区| 国产成人无码专区| 日韩高清欧美高清| 成人福利片在线| 日韩中文一区二区三区| 国产一区视频在线看| 色av性av丰满av| 久热精品视频在线| 欧美人妖在线| 可以在线看的黄色网址| 99re成人精品视频| 一本一道精品欧美中文字幕| 久久久久久久久久久亚洲| 国产成人福利av| 在线观看免费黄网站| 亚洲成人免费电影|