精品欧美一区二区三区在线观看 _久久久久国色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| 欧美体内谢she精2性欧美| 精品九九九九| 伊人久久成人网| 国产精品www.| 中文欧美日本在线资源| 亚洲熟女乱综合一区二区| 欧美在线极品| 亚洲欧洲精品一区二区三区不卡 | 2022成人影院| 亚洲欧美综合色| 精品国产乱码久久久久久郑州公司| 无码视频在线观看| 午夜欧美理论片| 色94色欧美sute亚洲线路一ni| 亚洲欧美日本国产有色| 亚洲国产精品久久久久爰性色| 久久免费高清| 欧美激情区在线播放| 成人做爰69片免网站| 成人18夜夜网深夜福利网| 欧美视频一区二区三区四区| 欧美日韩精品久久| 99草在线视频| 日本成人在线电影网| 久久噜噜噜精品国产亚洲综合| 中文字幕第三区| 男人影院在线观看| eeuss国产一区二区三区| 成人妇女免费播放久久久| 国产小视频在线免费观看| 影视一区二区| 波霸ol色综合久久| 日本高清久久久| 91精品论坛| 亚洲国产精品久久不卡毛片 | 亚洲视频在线观看免费视频| 夜夜夜久久久| 久久久久久久久久久人体| 熟女人妻一区二区三区免费看| 日本精品不卡| 亚洲高清久久久| 日韩不卡视频一区二区| 日本中文字幕在线看| 国产偷国产偷亚洲高清人白洁| 九九99玖玖| 免费观看的毛片| 国产成人免费网站| 亚洲一区二区三区乱码aⅴ蜜桃女| 在线免费看91| 精品在线你懂的| 成人av在线天堂| 亚洲一线在线观看| 麻豆精品久久久| 不卡伊人av在线播放| 色婷婷国产精品免| 日韩国产欧美| 精品精品国产国产自在线| 亚洲天堂一区二区在线观看| 日日夜夜综合| 欧美一级高清大全免费观看| 三级黄色片免费观看| 精品亚洲二区| 精品国产免费人成在线观看| 日韩在线xxx| 黄网站视频在线观看| 国产精品久久夜| 久久免费视频2| 污污网站免费在线观看| 日本午夜一区二区| 国产原创欧美精品| 国产v在线观看| 成人av网在线| 欧美日韩在线高清| 日本福利专区在线观看| 亚洲欧美日韩国产中文在线| 大胆欧美熟妇xx| 成人bbav| 欧美亚洲一区二区在线观看| 亚洲天堂av一区二区| 亚洲1区在线| 亚洲老头老太hd| 国产一区二区三区视频播放| 欧美淫片网站| 欧美与欧洲交xxxx免费观看| 国产精华7777777| 国产经典欧美精品| 欧美日韩国产三区| 国产理论在线观看| 欧美日韩亚洲成人| 天天干天天操天天玩| 日韩中文字幕视频网| 亚洲精品一区二区三区不| 影音先锋男人在线| 伊人久久成人| 秋霞午夜一区二区| 国产精品久久久久毛片| 成人h精品动漫一区二区三区| 日本电影一区二区三区| 福利在线视频网站| 欧美色图在线视频| 伊人国产精品视频| 久草成人在线| 欧美激情日韩图片| 在线观看毛片网站| 99久久久国产精品| 欧美精品一区二区性色a+v| 欧美久久天堂| 精品少妇一区二区三区免费观看| 日韩av在线看免费观看| 好吊妞视频这里有精品 | 狠狠爱成人网| 国产精品一区二区三区在线播放| 91精品国产高清一区二区三密臀| 精品一区二区三区视频| 久久综合一区二区三区| av网址在线免费观看| 色就色 综合激情| 美女久久久久久久久| 99精品美女| 国产99久久精品一区二区永久免费 | 亚洲毛茸茸少妇高潮呻吟| 老熟妇高潮一区二区三区| 视频一区二区欧美| 九九九九精品九九九九| 韩国日本一区| 亚洲一区二区精品视频| 亚洲国产精品无码观看久久| 青春草免费在线视频| 亚洲国产精品影院| 中文字幕第一页在线视频| 国产精品一国产精品| 91精品国产777在线观看| 国产微拍精品一区| 高清shemale亚洲人妖| 亚洲欧美日韩精品在线| 免费污视频在线一区| 欧美卡1卡2卡| 日本污视频网站| 久久激情视频| 久久99精品久久久久久久青青日本| 在线观看中文| 日韩欧美一级二级| 国产成人综合在线视频| 精品一区二区日韩| 青春草在线视频免费观看| 四虎国产精品永久在线国在线| 在线观看日韩www视频免费| 一本一道无码中文字幕精品热| 99久久久国产精品| 免费观看精品视频| 亚洲色图丝袜| 国产精品色视频| 1769在线观看| 在线不卡一区二区| 黄色录像二级片| 国产一区二区三区在线观看免费 | 国产日韩久久| free性护士videos欧美| 亚洲精品wwwww| 久久免费激情视频| 国产亚洲欧美中文| 人人干人人干人人| 亚洲一区二区三区| 超碰97国产在线| sm性调教片在线观看| 亚洲男人的天堂网站| 波多野结衣在线电影| 国产精品美女久久久久久久久 | 亚洲熟妇无码久久精品| 中文字幕中文字幕一区二区| 午夜天堂在线视频| 影音先锋久久| 欧洲亚洲一区二区三区四区五区| 国产精品久久久久久妇女| 日韩视频在线免费| 韩国av永久免费| 91黄色在线观看| 182在线观看视频| 成人午夜视频福利| 日韩成人av电影在线| 美女网站视频在线| 亚洲激情视频网| 国产成人精品亚洲| 亚洲精品免费视频| 三级男人添奶爽爽爽视频| 日韩国产欧美在线视频| 天天综合五月天| 午夜精品福利影院| 成人www视频在线观看| 黑人玩欧美人三根一起进| 亚洲老头老太hd| 精品国产亚洲av麻豆| 色欧美片视频在线观看| 2021亚洲天堂| 国产欧美精品区一区二区三区 | 国产精品久久久久久无人区| 精品久久久在线观看| 9.1片黄在线观看| 波波电影院一区二区三区| 亚洲三级视频网站| 日韩午夜激情| 男女h黄动漫啪啪无遮挡软件| 岳的好大精品一区二区三区| 亚洲一区亚洲二区亚洲三区| 成人美女大片| 色综合天天综合网国产成人网 | www.天天射.com| 精品电影一区| 蜜桃视频成人在线观看| 国产日产精品一区二区三区四区的观看方式 | 超碰91人人草人人干| 日中文字幕在线| 精品日韩在线一区| 91福利在线观看视频| 久久久久久久性| 色哟哟在线观看视频| 日韩在线观看一区二区| 久久久亚洲国产精品| 亚洲2区在线| 国产精品自拍偷拍视频| 自拍网站在线观看| 欧美极品少妇xxxxⅹ裸体艺术| 日本中文在线观看| 中文字幕免费精品一区高清| 蜜桃视频在线观看网站| 亚洲国产精久久久久久 | 久久99国产精品成人| av免费在线播放网站| 亚洲人成高清| 欧美高清中文字幕| 欧美1区3d| 伊人久久大香线蕉成人综合网| 综合伊思人在钱三区| 久久国产日韩欧美| 久久aimee| 精品蜜桃传媒| 日韩大胆成人| 久久99精品久久久久久秒播放器 | 亚洲精品狠狠操| 亚洲国产精品18久久久久久| 欧美一区二区成人| 国产麻豆一精品一男同| 制服.丝袜.亚洲.另类.中文| 91福利免费视频| 91精品国产综合久久国产大片 | 国产一区二区精品调教| 国产成一区二区| 第一页在线观看| 亚洲免费一在线| 黄上黄在线观看| 884aa四虎影成人精品一区| 中文字幕乱码中文字幕| 欧美日韩精品系列| 久久精品国产亚洲av高清色欲| 亚洲免费观看高清完整版在线| 在线免费观看亚洲视频| 亚洲激情在线激情| 久久久综合久久| 国产日韩欧美综合在线| 成年人在线观看av| 国产精品18久久久久久久久久久久| 亚洲精品国产一区二区三区| 国产老肥熟一区二区三区| 免费高清在线观看免费| 模特精品在线| 国产又黄又猛又粗| 精品一区二区三区的国产在线播放| 免费国偷自产拍精品视频| 成人免费观看男女羞羞视频| 国产ts丝袜人妖系列视频| 久久精品综合网| 在线观看黄网址| 亚洲国产精品久久久久婷婷884| 久草手机在线视频| 欧美视频在线不卡| 国产av无码专区亚洲av麻豆| 亚洲国产精品一区二区三区| 国产在线资源| 欧美老少配视频| 欧美性videos| 色综合老司机第九色激情| 中文在线аv在线| 91精品在线一区| 欧美freesex8一10精品| 色噜噜一区二区| 极品裸体白嫩激情啪啪国产精品| 黑森林福利视频导航| 国产黄色成人av| a毛片毛片av永久免费| 专区另类欧美日韩| 国产a∨精品一区二区三区仙踪林| 欧美色电影在线| 国产91免费看| 日韩一区二区三区国产| 日韩电影免费看| 91影院未满十八岁禁止入内| 久久不见久久见免费视频7| 国产 国语对白 露脸| 天堂午夜影视日韩欧美一区二区| 手机看片国产精品| 国产午夜精品久久| 日本a在线观看| 欧美精品亚洲一区二区在线播放| 日本xxxx人| 久久精品国产69国产精品亚洲 | 欧美成人中文| 黄色国产小视频| 成人av影院在线| 小泽玛利亚一区| 91国偷自产一区二区开放时间| 亚洲av永久纯肉无码精品动漫| 国产亚洲成av人片在线观看桃| 俺来也官网欧美久久精品| 国产欧美一区二区三区四区| 亚洲精华一区二区三区| 国产美女作爱全过程免费视频| 久久av老司机精品网站导航| 一二三不卡视频| 亚洲国产你懂的| 国产情侣在线播放| 色婷婷久久av| 97成人超碰| 秋霞毛片久久久久久久久| 野花国产精品入口| 国产无套精品一区二区三区| 18欧美乱大交hd1984| 国产精品高清无码| 亚洲欧美中文字幕| 女人高潮被爽到呻吟在线观看| 国产二区不卡| 欧美另类综合| 手机在线观看日韩av| 亚洲欧洲精品成人久久奇米网| 亚洲天堂狠狠干| 中文字幕欧美精品日韩中文字幕| 在线手机中文字幕| 欧美高清性xxxxhd| 久久国产88| av网站免费在线看| 在线精品视频一区二区三四| 牛牛影视精品影视| 国产999精品久久久影片官网| 综合亚洲自拍| 日本成人中文字幕在线| 久久精品免视看| 午夜视频网站在线观看| 一区二区三欧美| av成人在线播放| 国产奶头好大揉着好爽视频| 精品无人区卡一卡二卡三乱码免费卡| 日韩一区二区三区四区视频| 欧美日韩国产小视频在线观看| 思思99re6国产在线播放| 国产欧美一区二区三区久久| 天天射成人网| 中国老熟女重囗味hdxx| 亚洲一区二区中文在线| 无码精品人妻一区二区| 2025国产精品视频| 欧美色图在线播放| 思思久久精品视频| 一区二区成人在线| 天天干,夜夜爽| 在线观看国产精品91| 婷婷成人av| 日本男女交配视频| 91蜜桃网址入口| 一级特黄aaaaaa大片| 久久99热精品这里久久精品| 精品国产午夜肉伦伦影院| 999香蕉视频| 亚洲欧洲av另类| 亚洲欧美强伦一区二区| 欧美一级片久久久久久久| 狠狠综合久久av一区二区蜜桃| 天堂在线中文在线| 亚洲午夜免费视频| 国产免费av高清在线| 亚洲一区二区三区久久| 亚洲免费播放| 国产精品久久久免费看| 亚洲电影在线看| 香蕉成人影院| 精品久久久无码人妻字幂| 91年精品国产| 国产区精品在线| 欧美一区在线直播| 亚洲国产精品成人| 美女又爽又黄视频毛茸茸| 欧美日韩免费高清一区色橹橹| 欧美另类tv| 亚洲成人自拍视频| 成人黄色av电影| 一级日韩一级欧美| 欧美在线激情网| 午夜视频一区| ass极品国模人体欣赏|