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

我們從 UmiJS 遷移到了 Vite

開發 前端
我們從 UmiJS 遷移到 Vite 已經上線半年多了。目前很多人對 Vite 躍躍欲試,Vite 開發體驗到底怎么樣,今天來敘敘遷移到 Vite 的親身經歷。

[[437242]]

我們從 UmiJS 遷移到 Vite 已經上線半年多了。遷移過程中也遇到了不少問題,好在 Vite 足夠優秀,繼承自 Rollup 的插件系統,使我們有了自由發揮空間。目前很多人對 Vite 躍躍欲試,Vite 開發體驗到底怎么樣,今天來敘敘遷移到 Vite 的親身經歷。

先說結論,Vite 已經很成熟,強烈建議有條件的可以從 webpack 遷移過來。

為什么要放棄 UmiJS

2019 年底,在 Webpack 橫行霸道,各種腳手架琳瑯滿目的時代選擇了 UmiJS。它配置少、功能多、文檔齊全、持續更新。一整套的解決方案,非常適合一個大部分非 React 技術棧的團隊。經過不斷地磨合,團隊很快適應了這種 React 開發模式,開發效率也是水漲船高。

凡事總有個原因,為什么要遷移。2021 年初,為適應公司的發展,前端架構也需要做調整與升級。在項目日益增長的情況下,一次項目啟動需要耗費一分多鐘,熱更新也慢得基本無法使用。差點的機器配置啟動項目要么好幾分鐘、要么內存溢出。這種模式極大地降低了開發效率。無論是自定義修改內部 webpack 插件、從各種角度如多核編譯、緩存等方式優化,依然是杯水車薪。雖然 UmiJS 提供了 webpack5 插件,不過在當時處于不可用的狀態。

我們主要的矛盾是:

  1. 啟動時間長
  2. 熱更新慢
  3. 太臃腫
  4. 框架 BUG 修復不及時
  5. 過度封裝,自定義插件難度大
  6. 約定式功能太單一

適應業務的要求,我們也需要上微前端。UmiJS 也提供了微前端插件 “乾坤”。但依然解決不了根本開發體驗問題。因此,在基礎腳手架上,我們尋求更多的是可控性及透明性。(盡管UmiJS 現在已經支持Module Federation 的打包提速方案)

為什么是 Vite

市面上的腳手架很多,陣營卻很少,大部分是基于 webpack 的上層封裝。webpack 的缺點很明顯,當冷啟動開發服務器時,基于打包器的方式啟動必須優先抓取并構建你的整個應用,然后才能提供服務。

在瀏覽器 ESM 支持得很普遍得今天,Vite 這種可以稱得上是下一代前端開發與構建工具。在 Vite 中,HMR 是在原生 ESM 上執行的。當編輯一個文件時,無論應用大小如何,HMR 始終能保持快速更新。

Vite 這種方式在我們習慣 webpack 的陰影下顯得尤為驚艷,可以說 Vite 完美地解決了我們所有的痛點。不過 Vite 也是剛發布 2.0 不久,踩過坑的人也是相當少。我們便試試 Vite。

前期調研

遷移的必要條件是在原有的功能下找到替代方案,我們便統計用到了 UmiJS 中的 API 及特性

UmiJS 配置

  • alias - 配置別名(對應 resolve.alias)
  • base - 設置路由前綴(對應 base)
  • define - 用于提供給代碼中可用的變量(對應 define)
  • outputPath - 指定輸出路徑(對應 build.outDir)
  • hash - 配置是否讓生成的文件包含 hash 后綴 (Vite 自帶)
  • antd - 整合 antd 組件庫 (無需框架提供,Vite 中可自己引用)
  • dva - 整合 dva 數據流(此庫已經很久沒有更新了,在 hooks 時代使用顯得格格不入。我們沒有大量使用,重寫一個文件很輕松)
  • locale - 國際化插件,用于解決 i18n 問題(需要自己實現國際化邏輯,都是基于 react-intl 封裝,在 Vite 中實現無壓力)
  • fastRefresh - 快速刷新(對應 @vitejs/plugin-react-refresh 插件)
  • dynamicImport - 是否啟用按需加載(路由級的按需加載,在 Vite 中用 React.lazy 封裝)
  • targets - 配置需要兼容的瀏覽器最低版本(對應 @vitejs/plugin-legacy 插件)
  • theme - 配置 less 變量(對應 css.preprocessorOptions.less.modifyVars 配置)
  • lessLoader - 設置 less-loader 配置項(與 theme 配置相同)
  • ignoreMomentLocale - 忽略 moment 的 locale 文件(可以通過 alias 設置別名方式解決)
  • proxy - 配置代理能力(對應 server.proxy)
  • externals - 設置哪些模塊可以不被打包(對應 build.rollupOptions.external)
  • copy - 設置要復制到輸出目錄的文件或文件夾(對應 rollup-plugin-copy)
  • mock - 配置 mock 屬性(對應 vite-plugin-mock)
  • extraBabelPlugins - 配置額外的 babel 插件(對應 @rollup/plugin-babel)

通過配置分析,基本上所有的 UmiJS 配置都可以在 Vite 中找到替代方案。除了配置還有一些約定

UmiJS 中 @/* 路徑,代替方式

  1. defineConfig({ 
  2.   resolve: { 
  3.     alias: { 
  4.       '@/': `${path.resolve(process.cwd(), 'src')}/`, 
  5.     }, 
  6.   }, 
  7. }); 

遷移

Review 現有的代碼,找出可能出問題的點并統計。做前期準備。跑起來優先:

從頭 Vite 官方模板中創建一個項目,安裝所需依賴包。UmiJS 內置封裝了 react-router、antd react-intl,這里我們需要手動加上 BrowserRouter、ConfigProvider、LocaleProvider

  1. // App.tsx 
  2. exportdefaultfunction App() { 
  3.   return ( 
  4.     <AppProvider> 
  5.       <BrowserRouter> 
  6.         <ConfigProvider locale={currentLocale}> 
  7.           <LocaleProvider> 
  8.             <BasicLayout> 
  9.               <Routes /> 
  10.             </BasicLayout> 
  11.           </LocaleProvider> 
  12.         </ConfigProvider> 
  13.       </BrowserRouter> 
  14.     </AppProvider> 
  15.   ); 

根據之前約定式路由,添加相應的路由配置

  1. exportconst basicRoutes = [ 
  2.   { 
  3.     path: '/'
  4.     exact: true
  5.     trunk: () =>import('@/pages/index'), 
  6.   }, 
  7.   { 
  8.     path: '/login'
  9.     exact: true
  10.     trunk: () =>import('@/pages/login'), 
  11.   }, 
  12.   { 
  13.     path: '/my-app'
  14.     trunk: () =>import('@/pages/my-app'), 
  15.   }, 
  16.   // ... 
  17. ]; 

路由渲染組件,通過 React.lazy 實現 UmiJS 中的 dynamicImport

  1. const routes = basicRoutes.map(({ trunk, ...config }) => { 
  2.   const Trunk = React.lazy(() => trunk()); 
  3.   return { 
  4.     ...config, 
  5.     component: ( 
  6.       <React.Suspense fallback={<Spinner />}> 
  7.         <Trunk /> 
  8.       </React.Suspense> 
  9.     ), 
  10.   }; 
  11. }); 
  12.  
  13. exportdefaultfunction Routes() { 
  14.   return ( 
  15.     <Switch> 
  16.       {routes.map((route) => ( 
  17.         <Route key={route.key || route.path} path={route.path} exact={route.exact} render={() => route.component} /> 
  18.       ))} 
  19.     </Switch> 
  20.   ); 

從原先的約定式路由遷移完成,項目中主要不兼容的地方就是從 umi 導入的成員

  1. import { useIntl, history, useLocation, useSelector } from'umi'

我們需要將所有 umi 中導入的變量,通過編輯器的正則替換批量修改替換。

  • 國際化的 useIntl 通過將語言文件和 react-intl 封裝,導出一個全局的 formatMessage 方法
  • 路由相關的 API 用 react-router-dom 導出替換
  • Redux 相關的,用 react-redux 導出替換
  • 查找項目中使用 require 的地方,替換為動態 import
  • 查找項目中使用 process.env.NODE_ENV,替換為 import.meta.env.DEV,因為再 Vite 中不再有 node.js 相關的 API

將 antd 添加進項目后,發現 babel-plugin-import 對應的 Vite 插件似乎有問題,某些樣式在 dev 模式下缺失,打包后正常。排查發現是組件包里面引用了 antd,在 dev 模式下包名被“依賴預構建” 混淆,導致插件無法正確插入 antd 的樣式。為此,我們自己寫了個插件,在 dev 模式下全量引入樣式,prod 才走插件。

很輕松,第一個頁面成功運行。

由于遷移之后需要使用微前端,因此我們將公共配置通過外置插件統一管理。

  1. exportdefault defineConfig({ 
  2.   server: { 
  3.     // 每個項目配置不同的端口號 
  4.     port: 3001, 
  5.   }, 
  6.   plugins: [ 
  7.     reactRefresh(), 
  8.     // 公共配置插件 
  9.     baseConfigPlugin(), 
  10.     // AntD 插件 
  11.     antdPlugin(), 
  12.   ], 
  13. }); 

遷移后發現 Vite 需要配置的其實很少,抽取的公共配置,封裝成 Vite 插件。

  1. import path from'path'
  2. import LessPluginImportNodeModules from'less-plugin-import-node-modules'
  3.  
  4. exportdefaultfunction vitePluginBaseConfig(config: CustomConfig): Plugin { 
  5.   return { 
  6.     enforce: 'post'
  7.     name'base-config'
  8.     config() { 
  9.       return { 
  10.         cacheDir: '.vite'
  11.         resolve: { 
  12.           alias: { 
  13.             '@/': `${path.resolve(process.cwd(), 'src')}/`, 
  14.             lodash: 'lodash-es'
  15.             'lodash.debounce''lodash-es/debounce'
  16.             'lodash.throttle''lodash-es/throttle'
  17.           }, 
  18.         }, 
  19.         server: { 
  20.           host: '0.0.0.0'
  21.         }, 
  22.         css: { 
  23.           preprocessorOptions: { 
  24.             less: { 
  25.               modifyVars: { 
  26.                 '@primary-color''#f99b0b'
  27.                 ...config.theme, 
  28.                 // 自定義 ant 前綴 
  29.                 '@ant-prefix': config.antPrefix || 'ant'
  30.               }, 
  31.               plugins: [new LessPluginImportNodeModules()], 
  32.               javascriptEnabled: true
  33.             }, 
  34.           }, 
  35.         }, 
  36.       }; 
  37.     }, 
  38.   }; 

遷移的整個過程沒有想象中那么繁雜,反而相對容易。幾乎常用的功能 Vite 都有方案支持,這也許是 Vite 的厲害之處吧。其實本質上的復雜度在于業務,項目的復雜度就是代碼量的體現,通過 IDE 的搜索替換,很快便完成了遷移并成功的運行。

現在,我們所有的項目都基于 Vite,完全沒有了等待而摸魚的煩惱。

問題/解決

轉換 less 文件 @import '~antd/es/style/themes/default.less' 中的 ~ 別名報錯

配置 less 插件less-plugin-import-node-modules

SyntaxError: The requested module 'xxx' does not provide an export named 'default'

我們將公共組件作為獨立的 npm 包之后使用時遇到的錯誤。本想著公共組件包自己不編譯,統一交給使用方編譯。所以導出了 TS 源文件。而這種情況常規下沒有問題,Vite 一旦遇到 CommonJS 或 UMD 的包才導致無法解析。雖然可以將無法解析的包放入 optimizeDeps.include 。但是架不住包的數量多啊,還是將它 tsc 轉譯為 JS 文件再發布。

打包提速

首次打包發現需要 70 多秒,我們來優化打包結構

  • 通過 build.minify 改為 esbuild(最新版 Vite 已經默認 esbuild) 。Esbuild 比 terser 快 20-40 倍,壓縮率只差 1%-2%。開啟后降低到 30 多秒
  • babel-plugin-import 的類似 babel 插件嚴重拖后腿,總共不到 40 秒的時間,它就要占 10 秒。我們通過正則的方式做了個插件,完美解決
  • 通過分析 rollup 對 @ant-design/icons 、lodash 包的 transform 數量非常多。我們將這些包也加入到剛剛做的插件中

通過一頓操作下來,提速到 16 秒,先這樣吧。

為什么將 cacheDir 放在根目錄

cacheDir 作為存儲緩存文件的目錄。此目錄下會存儲預打包的依賴項或 vite 生成的某些緩存文件,使用緩存可以提高性能。在某些情況下需要聯調 node_modules 里包,從而導致修改后未生效。這時需要使用 --force 命令行選項或手動刪除目錄,放在根目錄便于刪除。

兼容性問題

Vite 的兼容性可以通過官方的插件 @vitejs/plugin-legacy 解決。我們已經放棄支持 IE 11,無限制在生產使用 ESM,羨慕嗎?

結語

如果你是新的項目,完全不必考慮 Webpack 了,Vite 及 rollup 的完全生態足夠支撐上生產。如果你是 Webpack 生態老項目,不忍體驗上的折磨,滿足遷移條件的話,不妨試試 Vite,肯定會帶給你驚喜。

后面我會分享 Vite 和自己實現的微前端搭配組合,以及Vite 相關的插件,請持續關注。

 

責任編輯:姜華 來源: 前端星辰
相關推薦

2011-04-25 09:35:31

TwitterJava

2020-09-09 09:38:47

GoLangNodeJS編程語言

2023-12-07 07:14:36

WebpackVite

2022-11-01 08:55:55

編譯工具MavenSpring

2020-10-13 18:16:19

微服務架構數據

2010-09-29 11:06:21

活動目錄OpenLDAP

2013-06-21 13:49:08

MariaDB

2012-05-21 10:23:36

2010-07-20 09:48:33

2020-03-12 08:00:34

MySQL遷移TiDB

2020-10-13 09:25:27

ESClickHouse搜索引擎

2016-10-26 16:44:44

WatchfinderAWS云計算

2024-03-29 09:13:58

MochaNode.js測試

2020-04-13 08:46:22

MongoDBES服務器

2009-02-06 10:32:00

UnixLinux服務器

2013-05-03 09:49:38

MySQLMariaDB

2011-06-24 10:10:35

SVN

2025-10-29 08:06:49

2020-07-27 11:35:26

GitHub代碼開發者

2022-06-06 07:24:09

Caddy開源Ubuntu
點贊
收藏

51CTO技術棧公眾號

日韩动漫一区| 四虎影视成人| 麻豆成人久久精品二区三区红 | 综合av在线| 亚洲精品狠狠操| 黄色一级二级三级| 黄色片网站在线| av亚洲精华国产精华精| 国产精品69av| 欧洲猛交xxxx乱大交3| 成人性生交大片免费看96| 色综合色狠狠综合色| 亚洲人成人77777线观看| 国产三级第一页| 亚洲在线播放| 蜜臀久久99精品久久久无需会员| 中文人妻一区二区三区| 亚洲欧洲日韩精品在线| 欧美日韩在线视频一区二区| 欧美爱爱视频网站| 嫩草在线播放| 成人小视频免费在线观看| 国产精品一香蕉国产线看观看 | 亚洲一区二区三区四区av| 成人午夜精品| 婷婷激情综合网| ijzzijzzij亚洲大全| 免费a级毛片在线观看| 国产精品538一区二区在线| 国产精品444| 综合激情网五月| 国产精品mv在线观看| 亚洲一区二区精品| 91黄色免费视频| 中文字幕日韩高清在线| 在线播放国产精品二区一二区四区| 97成人在线免费视频| 国产视频中文字幕在线观看| 中文字幕免费不卡| 欧美高清视频一区| 少妇荡乳情欲办公室456视频| 国产一区二区三区免费在线观看| 国产精品电影网站| 精品国产午夜福利| 国产精品久久久免费| 欧美激情xxxxx| 欧美成人三级在线观看| 91精品亚洲| 精品国产一区二区三区在线观看| 丰满的亚洲女人毛茸茸| 久久综合色占| 国产亚洲欧美一区| www.黄色在线| 精品久久中文| 在线播放精品一区二区三区 | 亚洲第一二三区| 亚洲国产中文字幕久久网 | 国产无遮挡又黄又爽又色视频| 日韩亚洲国产欧美| 97免费在线视频| 四虎成人精品永久免费av| 亚洲视频一二| 国产69精品久久久久久| 特级西西444www大精品视频免费看| 影音先锋中文字幕一区二区| 久久久久久久久久久人体| 久草中文在线视频| 99成人在线| 日本人成精品视频在线| 久久精品五月天| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产99久久精品一区二区永久免费| 国产精品suv一区| 日韩高清在线观看| 国产精品扒开腿做| 一二区在线观看| 国产精品一区二区在线观看不卡| 69174成人网| 无码精品黑人一区二区三区| 久久久另类综合| 亚洲福利av| 亚洲丝袜一区| 精品日本高清在线播放| 99视频在线免费| 999精品视频在线观看| 日韩欧美国产不卡| 国内精品久久99人妻无码| 国产一区二区亚洲| 久久久久999| 日本一区二区免费在线观看| 久久亚洲二区| 97超碰在线播放| 免费黄色在线视频网站| 国产精品久久久久久久久免费相片 | 午夜精品久久久久久不卡8050| 国产白丝袜美女久久久久| av在线不卡精品| 日韩精品一区二区三区蜜臀| 右手影院亚洲欧美| 亚洲色图国产| 日韩暖暖在线视频| 国产成人精品亚洲精品色欲| 91麻豆精品视频| 欧美一级免费在线观看| 日本蜜桃在线观看视频| 欧美精品日韩综合在线| 亚洲综合自拍网| 99精品小视频| 国产ts一区二区| 99在线无码精品入口| 久久丝袜美腿综合| wwwwww欧美| 激情中国色综合| 日韩精品在线观| 欧美 日韩 国产 一区二区三区| 鲁大师成人一区二区三区| 91美女高潮出水| 国产精品四虎| 精品国产成人av| 性猛交╳xxx乱大交| 日韩中文在线电影| 青青草一区二区| 亚洲精品97久久中文字幕| 国产精品久久久久影院老司| 国产91在线免费| 色悠久久久久综合先锋影音下载| 在线播放国产一区中文字幕剧情欧美| 四虎成人精品永久免费av| 国内精品第一页| 亚洲欧美成人一区| 成人啊v在线| 国产视频欧美视频| 日本一级淫片色费放| 国产成人免费xxxxxxxx| 在线观看视频黄色| 日本精品久久| 深夜精品寂寞黄网站在线观看| 东京热一区二区三区四区| 99久久婷婷国产综合精品| 欧洲精品在线播放| 一区二区三区四区精品视频| 欧美成人在线影院| 99热这里只有精品在线| 国产精品成人免费在线| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 牛牛视频精品一区二区不卡| 欧美激情一区二区三区久久久| 国产又粗又猛又黄又爽| 国产精品伦一区| 911福利视频| 五月开心六月丁香综合色啪 | 国产欧美日韩卡一| 欧美日韩大尺度| 精品国产一区二区三区久久久蜜臀| 日韩免费在线观看视频| 看电影就来5566av视频在线播放| 色哟哟精品一区| 免费看黄色av| 经典一区二区三区| 欧美a级黄色大片| 亚洲视频国产| 欧美影院久久久| 男人的天堂在线| 欧美视频你懂的| 99精品中文字幕| 国产福利视频一区二区三区| 国产视频在线观看网站| 精品国产乱子伦一区二区| 91精品国产91久久久久久不卡| 日本不卡免费播放| 欧美性受xxxx黑人xyx性爽| 国产精品久久久免费看| 国产精品66部| 亚洲色欲综合一区二区三区| 欧美中文一区二区| 92看片淫黄大片看国产片| 免费在线观看的电影网站| 日韩av在线资源| 瑟瑟视频在线免费观看| 亚洲美女偷拍久久| 国产女人18毛片水真多18| 蜜桃伊人久久| 男人j进女人j| 欧美日韩夜夜| 国产精品久久久精品| wwwav在线| 日韩精品在线观看视频| 亚洲一卡二卡在线观看| 夜夜嗨av一区二区三区网页| 免费看黄色aaaaaa 片| 蜜臀av一区二区| 日本a在线免费观看| 红桃视频在线观看一区二区| 亚洲自拍小视频免费观看| 中文在线8资源库| www.日韩av.com| 香蕉视频免费看| 7799精品视频| 日本熟女毛茸茸| 一区二区三区丝袜| 精品人妻一区二区三区蜜桃视频| 国产麻豆9l精品三级站| 可以免费观看av毛片| 国语精品一区| 亚洲欧美国产不卡| 免费电影一区二区三区| 丁香婷婷久久久综合精品国产 | 亚洲欧美视频一区二区| 亚洲国产99精品国自产| 91中文字幕在线视频| 欧美视频在线观看免费| 欧美精品videos极品| 欧美激情一区二区三区在线| 天天躁日日躁狠狠躁av麻豆男男| 蜜桃91丨九色丨蝌蚪91桃色| 久久久久久久中文| 欧美日韩理论| 青少年xxxxx性开放hg| 精品在线手机视频| 国产精品免费一区二区| 精品视频在线观看网站| 国产精品视频免费在线| 久久毛片亚洲| 97碰在线观看| 操喷在线视频| 欧美黑人xxxx| www在线免费观看视频| 中文字幕精品av| 国产原创av在线| 日韩精品高清在线| 色窝窝无码一区二区三区成人网站| 911精品产国品一二三产区| 国产裸体美女永久免费无遮挡| 午夜久久久久久久久| 久草资源在线视频| 一区二区三区91| 免费人成年激情视频在线观看| 亚洲视频狠狠干| 欧美色视频一区二区三区在线观看| 日本一区二区三区在线观看| 91成人在线免费视频| 久久你懂得1024| 麻豆精品免费视频| 久久这里只有精品视频网| 在线观看av中文字幕| 91在线观看一区二区| 午夜av免费看| 久久天天做天天爱综合色| 在线免费看黄视频| 国产亚洲综合在线| 成人激情五月天| 中文字幕不卡在线| 亚洲区一区二区三| 亚洲日本在线a| 天天操天天操天天操天天操天天操| 中文字幕日本不卡| 国产97免费视频| 午夜视频一区在线观看| 久久一区二区三区视频| 色先锋久久av资源部| 看黄色一级大片| 欧美性极品少妇| 国产又粗又黄又爽视频| 91精品国产一区二区| 国产99999| 亚洲高清av在线| 国产中文字幕在线看| 日韩在线视频中文字幕| 中文字幕在线播放网址| 亚洲91精品在线| 性欧美hd调教| 91亚洲永久免费精品| 91精品短视频| 久久久久免费网| 日本久久综合| 国产欧美精品aaaaaa片| 亚洲制服av| 污污网站在线观看视频| 国产成人av电影在线| 中国av免费看| 国产精品久久久久久户外露出| 国产十六处破外女视频| 欧美日韩人人澡狠狠躁视频| 真实新婚偷拍xxxxx| 日韩欧美一区二区视频| 日本亚洲欧美| 久久久精品2019中文字幕神马| av电影在线地址| 国产精品视频大全| 精品视频高潮| 中国成人在线视频| 亚洲女优在线| 原创真实夫妻啪啪av| 久久免费视频一区| 男人的天堂久久久| 色哟哟国产精品| 亚洲欧美另类综合| 中文字幕在线观看亚洲| av影院在线| 成人xxxx视频| 国模吧精品视频| 青草网在线观看| 美女性感视频久久| 精品国产人妻一区二区三区| 亚洲欧洲99久久| 午夜婷婷在线观看| 欧美第一区第二区| 91精品国产91久久久久游泳池| 久久久久这里只有精品| 亚洲国产91视频| 日本一区二区三不卡| 激情综合中文娱乐网| 国产一伦一伦一伦| www国产精品av| 国产精彩视频在线| 91精品国产欧美日韩| 草碰在线视频| 日本精品一区二区三区在线| 99热这里只有精品首页| 精品国产无码在线| 麻豆久久一区二区| 六月婷婷七月丁香| 欧美日韩中文字幕在线| 欧美一级淫片aaaaaa| 欧美乱人伦中文字幕在线| 婷婷丁香久久| 亚洲人成人77777线观看| 日韩电影一区二区三区四区| 中文字幕5566| 午夜激情久久久| 欧美视频xxx| 欧美激情视频三区| 日韩在线视频一区二区三区| 黄色一级片网址| 国产一区二区三区在线看麻豆| av片在线免费看| 欧美性生交片4| 番号集在线观看| 国产成人精品亚洲精品| 亚洲小说图片视频| 日韩欧美精品在线观看视频| 91看片淫黄大片一级在线观看| 天海翼一区二区| 日韩成人中文字幕| 久久影院午夜精品| 久久涩涩网站| 久久精品欧洲| 中国美女黄色一级片| 精品视频一区二区不卡| www 日韩| 国产在线视频不卡| 91精品国产91久久综合| 久久6免费视频| 亚洲精品国产成人久久av盗摄| 99久久精品日本一区二区免费| 久久国产精品久久久久久| 亚洲国产欧美在线观看| 男人添女荫道口喷水视频| 成+人+亚洲+综合天堂| 国产精品黄色网| 亚洲免费av网址| 99re久久| 肉大捧一出免费观看网站在线播放| 国产精品一二三四| 国产一级一片免费播放放a| 亚洲精品成人免费| 韩国三级一区| 国产精品一区在线免费观看| 福利一区二区在线观看| 日韩经典在线观看| 亚洲无av在线中文字幕| 2020国产精品小视频| 国产自产在线视频| 91麻豆免费视频| 国产精品热久久| 97久久国产精品| sdde在线播放一区二区| 五月天六月丁香| 欧美性猛交xxxx乱大交极品| 在线观看国产原创自拍视频| 99在线视频首页| 久久aⅴ国产紧身牛仔裤| 亚洲精品久久久久久国| 精品欧美黑人一区二区三区| 亚洲女色av| 欧美日韩在线免费观看视频| 成人免费观看视频| 中文字幕 日韩有码| 欧美黑人一级爽快片淫片高清| 午夜先锋成人动漫在线| 性欧美在线视频| 欧美性xxxx极品hd满灌| 麻豆tv免费在线观看| 久久精品日韩精品| 国模一区二区三区白浆| 精品人妻一区二区色欲产成人| 久久精品人人爽| 九九综合九九| 蜜臀aⅴ国产精品久久久国产老师| 91久久精品一区二区|