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

Webpack 打包太慢?來試試 Bundleless

開發 開發工具
Webpack 將各個資源打包整合在一起形成 bundle,當資源越來越多時,打包的過程也將越來越慢。

 ????一 引言

Webpack 最初是為了解決前端模塊化以及使用 Node.Js 生態的問題而出現,在過去的 8 年時間里,Webpack 的能力越來越強大。

??

??

 

但因為多了打包構建這一層,隨著項目的增長,打包構建速度越來越慢,每次啟動都要等待幾十秒甚至幾分鐘,然后啟動一輪構建優化,隨著項目的進一步增大,構建速度又會降低,陷入不斷優化的循環。

??

??

 

在項目達到一定的規模時,基于 Bundle 的構建優化的收益變得越來越有限,無法實現質的提升。我們從另一個角度思考,webpack 之所以慢,主要的原因還是在于他將各個資源打包整合在一起形成 bundle,如果我們不需要 bundle 打包的過程,直接讓瀏覽器去加載對應的資源,我們將有可能可以跳出這個循環,實現質的提升。

??

??

 

在 Bundleless 的架構下,我們不再需要構建一個完整的 bundle,同時在修改文件時,瀏覽器也只需要重新加載單個文件即可。由于沒有了構建這一層我們將能夠實現以下的目標:

  • 極快的本地啟動速度,只需要啟動本地服務。
  • 極快的代碼編譯速度,每次只需要處理單個文件。
  • 項目開發構建的時間復雜度始終為 O(1),使得項目能夠持續保持高效的構建。
  • 更加簡單的調試體驗,不再強依賴 sourcemaps 即可實現穩定的單文件的 debug。

基于以上的可能性 Bundleless 將重新定義前端的本地開發,讓我們重新找回前端在 10 年前修改單個文件之后,只需要刷新即可即時生效的體驗,同時疊加上前端的 HotModuleReplace 相關技術,我們可以把刷新也省去,最終實現保存即生效。

實現 Bundleless 一個很重要的基礎能力是模塊的動態加載能力,這一主要的思路會有兩個:

  • System.js 之類的 ES 模塊加載器,好處是具有較高的兼容性。
  • 直接利用 Web 標準的 ESModule,面向未來,同時整體架構也更加簡單。

在本地開發過程中兼容性的影響不是特別大,同時 ESModule 已經覆蓋了超過 90% 的瀏覽器,我們完全可以利用 ESModule 的能力讓瀏覽器自主加載需要的模塊,從而更加低成本同時面向未來實現 Bundleless。

社區中在近一兩年也出現了很多基于 ESModule 的開發工具,如 Vite、Snowpack、es-dev-server 等。本文將主要分享基于瀏覽器的 ESModule 能力實現 Bundless 本地開發的相關思路、核心技術點以及 Vite 的相關實現和在供應鏈 POS 場景下的落地實踐。

二 從資源加載看 Bundle 和 Bundleless 的不同

下面以大家最熟悉的 create-react-app 默認項目為例,從實際的頁面渲染資源的加載過程對比 Bundle 和 Bundleless 的區別。

??

??

 

基于 Webpack 的 bundle 開發模式

??

??

 

上面的圖具體的模塊加載機制可以簡化為下圖:

??

??

 

在項目啟動和有文件變化時重新進行打包,這使得項目的啟動和二次構建都需要做較多的事情,相應的耗時也會增長。

基于 ESModule Bundleless 模式

??

??

 

從上圖可以看到,已經不再有一個構建好的 bundle、chunk 之類的文件,而是直接加載本地對應的文件。

??

??

 

從上圖可以看到,在 Bundleless 的機制下,項目的啟動只需要啟動一個服務器承接瀏覽器的請求即可,同時在文件變更時,也只需要額外處理變更的文件即可,其他文件可直接在緩存中讀取。

對比總結

??

??

 

Bundleless 模式可以充分利用瀏覽器自主加載的特性,跳過打包的過程,使得我們能在項目啟動時獲取到極快的啟動速度,在本地更新時只需要重新編譯單個文件。下面將分享如何基于瀏覽器 ESModule 的能力實現 Bundleless 的開發。

三 如何實現 Bundleless

如何使用 ESModule 模塊加載

實現 Bundleless 的第一步是要讓瀏覽器自主加載對應的模塊。

使用 type="module" 開啟 ESModule

<div id="root"></div> 
<script type="module">
// 直接在 script 標簽中使用 type="module" 即可使用 ESModule 的方式
import React from 'https://cdn.pika.dev/react'
import ReactDOM from 'https://cdn.pika.dev/react-dom'

ReactDOM.render('Hello World', document.getElementById('root'))
</script>

利用 import-maps 支持 bare import

分享一個在 chrome 中已經實現了的 import-maps 的標準 ,可以讓我們直接用 import React from 'react' 這樣的寫法,未來我們可以利用此能力實現線上的 Bundleless 部署。

<div id="root"></div> 
<!-- 開啟 chrome://flags/#enable-experimental-productivity-features -->
<script type="importmap">
{
"imports": {
"react": "https://cdn.pika.dev/react",
"react-dom": "https://cdn.pika.dev/react-dom"
}
}
</script>
<script type="module">
// 支持 bare import
import React from 'react'
import ReactDOM from 'react-dom'

ReactDOM.render('Hello World!', document.getElementById('root'))
</script>

以上我們介紹了瀏覽器中原生的 ESModule 是如何使用的。面向本地開發的場景,我們只需要啟動一個本地的 devServer 承載瀏覽器的請求映射到對應的本地文件,同時動態地將項目中 import 的資源路徑指向我們的本地地址,即可讓瀏覽器直接加載本地的文件,比如可以使用下面的寫法,將入口 JS 文件直接指向本地的路徑,然后 devServer 再攔截相應的請求返回對應的文件。

<div id="root"></div> 
<!-- 直接指向本地路徑 -->
<script type="module" src="/src/main.jsx"></script>

如何加載非 JS 的文件資源

通過 ESModule 我們借助瀏覽器的能力實現了 JS 的自主加載,但實際的項目代碼中我們不僅僅會 import JS 文件,也會有下面的寫法:

// main.jsx 
import React from 'react'
import ReactDOM from 'react-dom'
import './index.css' // import css 文件
import App from './App' // import jsx 文件

// 使用 JSX 語法
ReactDOM.render(<App />, document.getElementById('root'))

而瀏覽器在處理文件時是依據 Content-Type 的,不關心具體的文件類型,所以我們需要在瀏覽器發起請求時,將對應的資源轉化為 ESModule 格式,同時設置對應的 Content-Type 為 JS,返回給瀏覽器執行,瀏覽器就會按照 JS 的語法進行解析處理,整體的流程可見下圖:

??

??

 

以下是 Vite 的相關實現,在請求返回的過程中,對不同的文件進行動態處理:

??

??

 

 

如何實現 HotModuleReplace

HotModuleReplace 能夠在我們修改代碼后,不需要刷新頁面,直接在當前場景下生效,結合 Bundleless 極快的生效速度,我們能夠實現幾乎沒有延遲的保存即生效的體驗。對于 React,在 Webpack 場景下目前只能通過使用 react-hot-loader 來實現,但這一塊受限于具體的實現,有一些場景會存在 bug,作者也建議遷移到 React 團隊實現的 react-refresh,而這一塊在 Webpack 中還沒有相應的實現。在 Bundleless 場景下,因為我們的每個組件都是獨立加載的,所以要集成 react-refresh,我們只需要在瀏覽器請求返回時在文件的頂部和底部加上相應的腳本即可完成集成。

??

??

 

要完整的實現 HotModuleReplace 會比上面畫得更加復雜,還需要有一套依賴分析機制來判斷當一個文件發生變更之后要替換哪些文件以及是否需要 reload。在 Bundleless 的場景下,因為不再需要打包為一個完整的 bundle,同時我們也能更加靈活地對單個文件進行修改,這一塊相關的實現會更加容易。

以下是在 Vite 中的相關實現:

??

??

 

如何優化大量請求導致頁面加載慢

Bundleless 的模式不再打包,提升了啟動的速度,但對于一些有較多外部依賴或者自身文件數量較多的模塊,需要發起大量請求才能獲取到全部的資源,這個會降低開發過程中頁面加載的時間。比如下面是直接在瀏覽器中 import lodash-es 會并發出大量的請求:

??

??

 

在這一塊上我們可以做相應的優化,將外部的依賴提前打包成單個文件來減少在開發過程中由于外部依賴過多而發起過多的網絡請求。

在 Vite 的啟動流程中有一個 vite optimize 的過程會自動將 package.json 中的 depenencies 借助 Rollup 打包成 ES6 Module。

??

??

 

提前打包帶來的好處除了能夠提升頁面的加載速度,借助 @rollup/plugin-commonjs 我們能夠將 commonjs 的外部依賴打包為 ESModule 的形式引入,進一步擴大 Bundleless 的適用范圍。

四 在供應鏈 POS 場景下落地實踐

我們團隊負責的供應鏈 POS 業務主要可分為面向建材家居的家裝行業和線下小店的零售行業,在技術架構上采用了各個域 bundle 獨立開發,然后最終借助底層的 sdk 合并為一個大的 SPA 的形式。由于項目的復雜性,在日常開發過程中,有以下的一些痛點:

  • 項目的啟動和耗時相對較長。
  • 改動后二次編譯時間長。
  • 缺少穩定的 HMR 能力,開發過程中需要重復造場景。
  • debug 依賴 sourcemaps 能力,有時會出現不穩定的情況。

基于以上的問題,借助 Vite 的相關實現,我們對本地開發環境進行了 Bundleless 的嘗試和落地,在實驗的一些項目中對于本地的開發體驗有了很大的提升。

在啟動以及修改生效的速度上帶來極大的提升

目前已實現單 bundle 維度的開發,打包構建速度:

??

??

 


 

 

Webpack


 

??

??

 

Vite Bundleless

從上面的可以看出,在啟動單個 bundle 時,Webpack 需要 10s 左右的時間,而基于 Bundleless 的 Vite 只需要 1s 左右,提升 10 倍。

??

??

 

整體的頁面加載時間在 4s 左右,仍然比 Webpack 的打包構建時間要短,同時從上面的視頻中也可以看到 HMR 的速度達到了毫秒級的響應,實現了基本無感的保存即生效。

不依賴 sourcemap 調試單個文件

??

??

 

落地過程中遇到的問題和解決

在實際落地過程中,遇到的問題主要是相關模塊不符合 ESModule 規范以及一些寫法上的標準化:

  • 部分模塊沒有 ESModule 的打包。
  • less 依賴 node_modules 的寫法的規范。
  • jsx 文件后綴規范。
  • babel-runtime 的處理。

部分模塊沒有 ESModule 的打包

對于沒有 ESModule 打包輸出或者輸出的錯誤的包,根據不同的類型使用不同的策略:

  • 內部的包:通過升級腳手架,發布帶有 ESModule 的包的新版本。
  • 外部依賴:通過 issue、pull request 等形式,推動了 number-precision 等模塊的升級。
  • 同時有一些由于歷史原因無法打出 ESModule 的包可以借助 @rollup/plugin-commonjs 打包為 ESModule。

less 依賴 node_modules 的寫法的規范

@import '~@ali/pos-style-mixin/style/lst.less';  
// ~ 只在 webpack 中 less-loader 的支持,在原生的 less 中不支持

// 統一遷移為下面的模式
@import '@ali/pos-style-mixin/style/lst.less';

// 同時在原先的 webpack 構建中的 less-laoder 中配置 lessOptions,用于最后的打包
/*
{
loader: 'less-loader',
options: {
lessOptions: {
javascriptEnabled: true,
paths: [path.resolve(cwd, 'node_modules')],
}
}
}
*/

JSX 文件后綴規范

Vite 在運行的過程中會依據文件不同的后綴名進行對應的編譯處理,而在 Webpack 模式下我們通常會將 JSX、JS 等文件都丟給 babel-loader 進行處理,這使得有一些原本是 JSX 的文件沒有寫JSX 后綴。Vite 只會對 /\.(tsx?|jsx)$/ 的文件進行 esbuild 編譯,對于純 JS 會直接跳過 esbuild 的過程。對于這種情況我們是逐步將錯誤的原先沒有寫 JSX 的文件遷移為 JSX 文件。

babel-runtime 的處理

在使用了 babel-plugin-transform-runtime 之后,打包的輸出結果會是下面這樣:

??

??

 

上面所引用的 @babel/runtime/helpers/extends 是 commonjs 的格式無法直接使用,針對這個情況,有兩種解法:

1)針對內部自己打包的模塊,可以在進行 es6 打包時添加 useModules 配置,這樣打包出來的代碼就會是直接引用@babel/runtime/helpers/esm/extends<br />:

??

??

 

2)針對重新打包成本較高的模塊,可以通過 Vite 的插件機制進行轉換,將 @babel/runtime/helpers 在運行時替換為 @babel/runtime/helpers/esm 可以通過 alias 配置實現:

??

??

 

以上是在 Vite 開發環境的遷移過程中遇到的一些問題和處理的分享,這一塊的更大范圍的落地還在進行中。Bundleless 的落地不僅僅是為了適配 Vite 的開發模式,同時也是面向未來規范各個模塊代碼的過程,將我們的模塊進行標準的 ESModule 化,在有新的工具和思想出現時可以用更低成本進行落地。

五 直接使用 Bundleless 進行部署的可行性

受限于網絡請求和瀏覽器的解析速度,對于較大型的應用,bundle 在加載速度上還是能夠帶來較大的收益。V8 在 2018 年也給出了相關性能上的建議:在本地開發和小型的 Web 應用中使用。在今天的場景下,隨著瀏覽器和網絡性能的不斷提升,結合 ServiceWorker 之類的緩存能力,網絡加載的影響和越來越小,對于一些不需要考慮兼容性問題的場景可以進行內部的嘗試,直接部署通過 ESModule 加載的代碼。

六 總結

本文主要分享了 Bundleless 架構下,如何提升前端的研發效率、實現思路以及在具體業務場景下落地實踐。Bundleless 本質上是將原先 Webpack 中模塊依賴解析的工作交給瀏覽器去執行,使得在開發過程中代碼的轉換變少,極大地提升了開發過程中的構建速度,同時也可以更好地利用瀏覽器的相關開發工具。

站在當前的背景下,Web 各個領域 JavaScript/CSS/HTML 相關的標準都已成熟,同時瀏覽器內核也趨于統一,前端工程化的核心重點已逐步遷移到研發提效上,而 Bundleless 的模式能夠帶來長效的啟動和 HMR 的速度,是未來的一大發展趨勢。隨著瀏覽器內核和 Web 標準的不斷統一,前端的代碼可以不再打包直接運行將成為可能,這將進一步提高整體的研發效率。

最后非常感謝 ESModule、Vite、Snowpack 等標準和工具的出現,讓前端的開發體驗往前跨了一大步。

 

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2022-06-17 11:10:43

PandasPolarsPython

2020-08-25 08:03:59

測試Sharness結構

2020-11-04 16:34:45

單元測試技術

2020-12-02 08:31:47

Elasticsear

2025-06-04 01:02:00

MySQL索引

2020-12-15 10:24:05

2012-07-03 09:38:42

前端

2021-09-28 08:08:32

Snowpack前端工具

2018-09-05 10:43:47

MySQL診斷思路工具

2021-10-12 09:52:30

Webpack 前端多進程打包

2024-05-27 00:00:01

2016-09-23 18:32:42

iTunesIOS 10蘋果

2021-01-27 11:36:34

代碼開發工具

2018-03-20 16:20:29

LinuxChromiumLibreOffice

2022-02-10 14:23:16

WebpackJavaScript

2022-01-06 08:34:32

數據庫Spark查詢

2023-02-01 10:40:01

2021-12-16 22:02:28

webpack原理模塊化

2021-06-28 05:59:17

Webpack 前端打包與工程化

2021-01-28 11:40:34

Dubbo異步配置
點贊
收藏

51CTO技術棧公眾號

中文av字幕一区| 蜜臀a∨国产成人精品| 亚洲精品在线一区二区| 777久久久精品一区二区三区| 全部免费毛片在线播放网站| 日本在线不卡视频一二三区| 另类视频在线观看| www.超碰97| 亚洲精品一区二区在线播放∴| 一二三四社区欧美黄| 欧美亚州在线观看| 国产不卡精品视频| 日本亚洲视频在线| 欧美激情中文字幕乱码免费| 精品人妻中文无码av在线| 国产一区二区三区国产精品| 日韩欧美第一页| 免费看污污视频| 久香视频在线观看| 成人免费高清视频| 91久久精品国产| 7799精品视频天天看| 欧美日韩国产探花| 中文字幕九色91在线| a天堂视频在线观看| 久久在线观看| 欧美色男人天堂| 成人观看免费完整观看| 欧美巨大xxxx做受沙滩| 国产精品久久久久7777按摩| 免费亚洲精品视频| 人妻一区二区三区| 国产麻豆一精品一av一免费 | 欧美一区二区三区四区五区 | 亚洲精品美女在线| 久久aaaa片一区二区| 精品69视频一区二区三区| 婷婷综合在线观看| 欧美黑人在线观看| 中文字幕有码在线观看| 国产精品福利影院| 神马影院一区二区三区| 精品视频一二区| 久久午夜电影网| 极品尤物一区二区三区| 成人乱码一区二区三区| 国产精品羞羞答答xxdd| 91影院在线免费观看视频| 91麻豆视频在线观看| 日本大胆欧美人术艺术动态| 国产精品国产三级国产aⅴ9色| 国产综合精品视频| 噜噜爱69成人精品| 欧美专区福利在线| www五月天com| 久久精品盗摄| 日韩美女毛茸茸| 中文字幕一区二区人妻视频| 日韩精品久久理论片| 国产999精品久久久| 成人a v视频| 免费在线观看视频一区| 成人黄色av网| 99久久久国产精品无码网爆| 国产精品一区二区你懂的| 亚洲一区二区免费| 亚洲精品国产精品国| gogogo免费视频观看亚洲一| 精品国产一区二区三区麻豆小说| 手机在线精品视频| 久久久亚洲高清| 亚洲精品成人久久久998| 免费av网站在线观看| 亚洲精品成人悠悠色影视| 99久久免费观看| 精精国产xxxx视频在线野外| 日韩欧美黄色动漫| 污污网站免费看| 国产人与zoxxxx另类91| 精品人在线二区三区| 尤物网站在线观看| 国产日韩欧美一区二区三区| 最近2019中文字幕大全第二页| 情侣偷拍对白清晰饥渴难耐| 国产精品va| 欧美亚州一区二区三区| 亚洲精品国产精品乱码视色| 国产一区二区电影| 狠狠久久综合婷婷不卡| www视频在线观看免费| 亚洲精品一二三| 国产成人久久婷婷精品流白浆| 国产亚洲人成a在线v网站| 欧美一区二区不卡视频| 成人h动漫精品一区| 99精品综合| 国内精品久久影院| 正在播放亚洲精品| 成人中文字幕电影| 日韩免费电影一区二区三区| 少妇视频在线| 色8久久人人97超碰香蕉987| 在线免费看v片| 午夜先锋成人动漫在线| 精品国产区一区二区三区在线观看| 免费在线观看日韩| 热久久久久久久| 精品产品国产在线不卡| 成人影院在线观看| 91福利视频久久久久| 国产精品日日摸夜夜爽| 成人午夜av| 5566成人精品视频免费| av中文字幕播放| 国产精品私人影院| 337p粉嫩大胆噜噜噜鲁| 久久99成人| 中文字幕亚洲一区在线观看| 丁香六月婷婷综合| 国产成人精品一区二| 亚洲国产日韩欧美| 校园春色亚洲| 精品免费视频一区二区| 四虎884aa成人精品| 久久中文在线| 精品国产乱码久久久久久久软件 | 777午夜精品福利在线观看| 一级黄色片在线| 久久综合九色欧美综合狠狠| 丰满的少妇愉情hd高清果冻传媒 | 欧美精品成人一区二区在线观看| 日本h片在线| 91.com视频| 国产人与禽zoz0性伦| 久久亚洲风情| 欧美一区二区三区四区五区六区 | 亚洲999一在线观看www| 91福利在线视频| 欧美三区在线观看| 久久久免费看片| 日韩一区精品视频| 日本在线视频一区| 亚洲人免费短视频| 国产午夜精品一区理论片飘花| 天天综合网久久综合网| 91麻豆123| 欧美精品99久久| 欧美成a人免费观看久久| 久久久亚洲精选| 日韩永久免费视频| 精品久久久久人成| 97伦伦午夜电影理伦片| 久久av最新网址| 欧美日韩电影一区二区| 久久uomeier| 中文字幕成人在线| 91精东传媒理伦片在线观看| 一区二区中文视频| 日韩欧美中文视频| 国产精品videosex极品| 精品欧美国产一区二区三区不卡| caoporn视频在线| 亚洲精品ady| 天堂а√在线中文在线新版| 国产欧美视频在线观看| 午夜精品中文字幕| 亚洲综合五月| 国产精品三区在线| 欲香欲色天天天综合和网| 亚洲人成网站在线播| 伊人精品在线视频| 一区二区中文字幕在线| 麻豆精品国产传媒| 国产日韩欧美一区| 亚洲精品国产精品久久| 亚洲高清影院| 欧美精品aaa| 精品三级久久久久久久电影聊斋| 欧美性大战久久久久久久蜜臀| 九九热视频在线免费观看| 国产东北露脸精品视频| www.浪潮av.com| 成人三级视频| 国产精品视频免费一区二区三区| 88xx成人永久免费观看| 美女久久久久久久久久久| 视频一区 中文字幕| 精品视频一区三区九区| 日韩 国产 在线| 中文幕一区二区三区久久蜜桃| 欧美日韩一区二区区别是什么| 国产精品毛片一区二区三区| 中国成人在线视频| 九九热hot精品视频在线播放| 国产精品第2页| 日本高清成人vr专区| 亚洲欧美日韩区| 精品免费久久久| 一本色道a无线码一区v| 欧美黑人猛猛猛| 久久久综合视频| 手机在线播放av| 日韩二区三区在线观看| 亚洲色成人www永久在线观看 | 高清一区二区| 日韩美女视频免费在线观看| 啪啪免费视频一区| 中文字幕日韩电影| 日韩美女一级视频| 日韩三区在线观看| 91禁在线观看| 在线区一区二视频| 日韩欧美视频在线免费观看| 亚洲欧美日韩国产手机在线 | 国产精品久久久久久一区二区 | 91精品亚洲| 日本不卡免费新一二三区| 97se亚洲| 亚洲最大福利视频网站| 国产精品黄色片| 人体精品一二三区| 极品视频在线| 久久免费观看视频| 在线欧美三级| 久热精品视频在线| 幼a在线观看| 一区二区三区天堂av| 欧美老女人性开放| 亚洲国产精品悠悠久久琪琪| 成人h动漫精品一区二区无码| 欧美日韩在线一区二区| 青青国产在线视频| 日韩欧美在线一区| 日韩大片免费在线观看| 亚洲一区二区在线免费观看视频| 色欲人妻综合网| 亚洲欧洲另类国产综合| 五月天免费网站| 国产精品私人自拍| 老司机福利在线观看| 国产视频一区二区在线| 亚洲第一成人网站| 久久久另类综合| 成人精品999| 国产亚洲一区二区在线观看| 亚洲av无码成人精品国产| 91在线看国产| 亚洲黄色小说视频| 国产拍欧美日韩视频二区| 日本人亚洲人jjzzjjz| 国产农村妇女毛片精品久久麻豆 | 亚洲国产一区二区在线观看| 自拍偷拍99| 正在播放日韩欧美一页 | а√天堂官网中文在线| 久热99视频在线观看| 伊人春色在线观看| 欧美激情精品久久久久久黑人| 少妇av在线| 777午夜精品福利在线观看| 韩国成人动漫| 国产精品一区二区久久久久| 91麻豆精品| 俄罗斯精品一区二区| 牛牛影视久久网| 欧美在线一二三区| 欧美黄色录像片| www.国产亚洲| 一本久道久久综合狠狠爱| 国产福利视频在线播放| 久久99热这里只有精品| 风韵丰满熟妇啪啪区老熟熟女| 99久久综合国产精品| 色婷婷在线影院| 亚洲天堂免费看| 国产精彩视频在线| 在线中文字幕一区| 国产女人18毛片水真多| 日韩av在线高清| 3p在线观看| 久久理论片午夜琪琪电影网| 东京一区二区| 亚洲精品免费网站| 亚洲精华一区二区三区| 午夜啪啪免费视频| 亚洲欧洲一区| 中文字幕国产免费| av一二三不卡影片| 一级特黄曰皮片视频| 亚洲制服丝袜在线| 日本欧美www| 精品国产乱码久久久久久蜜臀| 欧美一区二区少妇| 久久久av亚洲男天堂| 三妻四妾完整版在线观看电视剧| 国产日韩精品在线播放| 欧美人与动xxxxz0oz| 伊人情人网综合| 亚洲永久字幕| 精品人妻人人做人人爽夜夜爽| 久久久久久久性| 超碰手机在线观看| 欧美视频三区在线播放| 亚洲精品97久久中文字幕无码| 亚洲图片欧美日产| av电影在线地址| 91久久精品久久国产性色也91| 国产一区二区在线视频你懂的| 色婷婷精品国产一区二区三区| 狠色狠色综合久久| 亚洲怡红院在线| 久久免费国产精品| 亚洲一区欧美在线| 精品久久人人做人人爰| 在线观看美女网站大全免费| 91精品国产高清久久久久久| 国产高清亚洲| 亚洲精品中字| 三级久久三级久久| 亚洲AV无码国产精品| 亚洲国产成人tv| 国产人妖一区二区三区| 中文字幕日韩在线播放| 中文字幕色婷婷在线视频| 国产99视频精品免费视频36| 亚洲成人一区| 亚洲36d大奶网| 国产网站一区二区三区| 男女啊啊啊视频| 亚洲国产成人久久| 成人女同在线观看| 91文字幕巨乱亚洲香蕉| 综合久久99| 国产九九九视频| 国产精品国产三级国产aⅴ原创| 久久久久在线视频| 亚洲色图美腿丝袜| 另类专区亚洲| 欧美色欧美亚洲另类七区| 亚洲欧美日韩国产一区二区| 六十路息与子猛烈交尾| 午夜精品久久久久久久久久久 | 波多野结衣一区二区三区| 久草视频在线资源站| 精品国产91乱码一区二区三区| 色呦呦在线免费观看| 国产精品theporn88| 亚洲精品日本| 黄色国产在线观看| 欧美性高跟鞋xxxxhd| 国产在线日本| 国产精品一区二区三区在线播放| 久久裸体网站| xxx中文字幕| 午夜久久电影网| 日本免费不卡| 国产精品久久久久久久久久| 成人婷婷网色偷偷亚洲男人的天堂| 最新天堂中文在线| 专区另类欧美日韩| 欧美熟女一区二区| 欧美最猛性xxxx| 日韩电影在线视频| 青娱乐国产精品视频| 亚洲一区在线视频| 亚洲欧美日韩成人在线| 国产精品成av人在线视午夜片| 色一区二区三区四区| 欧美日韩一区二区区| 午夜精彩视频在线观看不卡| 毛片免费在线| 成人免费在线视频网站| 欧美午夜一区| 强伦人妻一区二区三区| 欧美精品三级日韩久久| 美足av综合网| 日韩一区不卡| 国产成人一区在线| 久久久久久少妇| 中文字幕亚洲一区在线观看| 视频精品一区二区三区| 午夜肉伦伦影院| 亚洲精品欧美综合四区| 亚洲欧美丝袜中文综合| 国产视频999| 亚洲精华国产欧美| 懂色av粉嫩av浪潮av| 精品国产免费人成电影在线观看四季| 自拍偷拍亚洲视频| 在线免费观看成人| 99视频在线精品| 91成人在线免费| 欧美中文在线字幕| 五月精品视频| 无码人妻精品一区二区三区温州| 欧美日韩国产美| 涩涩在线视频| 国产精品久久国产| 国产精品入口麻豆原神| 天天干免费视频|