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

webpack的異步加載原理及分包策略

開發 前端
webpack ensure 有人稱它為異步加載,也有人稱為代碼切割,他其實就是將 js 模塊給獨立導出一個.js 文件。

 webpack 異步加載原理

webpack ensure 有人稱它為異步加載,也有人稱為代碼切割,他其實就是將 js 模塊給獨立導出一個.js 文件,然后使用這個模塊的時候,再創建一個 script 對象,加入到 document.head 對象中,瀏覽器會自動幫我們發起請求,去請求這個 js 文件,然后寫個回調函數,讓請求到的 js 文件做一些業務操作。

舉個例子

需求:main.js 依賴兩個 js 文件:A.js 是點擊 aBtn 按鈕后,才執行的邏輯,B.js 是點擊 bBtn 按鈕后,才執行的邏輯。

webpack.config.js,我們先來寫一下 webpack 打包的配置的代碼 

  1. const path = require('path') // 路徑處理模塊  
  2. const HtmlWebpackPlugin = require('html-webpack-plugin')  
  3. const { CleanWebpackPlugin } = require('clean-webpack-plugin') // 引入CleanWebpackPlugin插件  
  4. module.exports = {  
  5.   entry: { 
  6.      index: path.join(__dirname, '/src/main.js'),  
  7.   },  
  8.   output: { 
  9.      path: path.join(__dirname, '/dist'),  
  10.     filename: 'index.js',  
  11.   },  
  12.   plugins: [  
  13.     new HtmlWebpackPlugin({  
  14.       template: path.join(__dirname, '/index.html'),  
  15.     }),  
  16.     new CleanWebpackPlugin(), // 所要清理的文件夾名稱  
  17.   ],  

index.html 代碼如下 

  1. <!DOCTYPE html>  
  2. <html lang="en">  
  3.   <head>  
  4.     <meta charset="UTF-8" />  
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0" />  
  6.     <title>webpack</title>  
  7.   </head>  
  8.   <body>  
  9.     <div id="app">  
  10.       <button id="aBtn">按鈕A</button>  
  11.       <button id="bBtn">按鈕B</button>  
  12.     </div>  
  13.   </body>  
  14. </html> 

入口文件 main.js 如下 

  1. import A from './A'  
  2. import B from './B'  
  3. document.getElementById('aBtn').onclick = function () {  
  4.   alert(A)  
  5.  
  6. document.getElementById('bBtn').onclick = function () {  
  7.   alert(B)  

A.js 和 B.js 的代碼分別如下 

  1. // A.js  
  2. const A = 'hello A'  
  3. module.exports = A  
  4. // B.js  
  5. const B = 'hello B'  
  6. module.exports = B 

此時,我們對項目進行 npm run build, 打包出來的只有兩個文件

  •  index.html
  •  index.js

由此可見,此時 webpack 把 main.js 依賴的兩個文件都同時打包到同一個 js 文件,并在 index.html 中引入。但是 A.js 和 B.js 都是點擊相應按鈕才會執行的邏輯,如果用戶并沒有點擊相應按鈕,而且這兩個文件又是比較大的話,這樣是不是就導致首頁默認加載的 js 文件太大,從而導致首頁渲染較慢呢?那么有能否實現當用戶點擊按鈕的時候再加載相應的依賴文件呢?

webpack.ensure 就解決了這個問題。

require.ensure 異步加載

下面我們將 main.js 改成異步加載的方式 

  1. document.getElementById('aBtn').onclick = function () {  
  2.   //異步加載A  
  3.   require.ensure([], function () {  
  4.     let A = require('./A.js')  
  5.     alert(A)  
  6.   })  
  7.   
  8. document.getElementById('bBtn').onclick = function () {  
  9.   //異步加載b  
  10.   require.ensure([], function () {  
  11.     let B = require('./B.js')  
  12.     alert(B)  
  13.   })  

此時,我們再進行一下打包,發現多了 1.index.js 和 2.index.js 兩個文件。而我們打開頁面時只引入了 index.js 一個文件,當點擊按鈕 A 的時候才引入 1.index.js 文件,點擊按鈕 B 的時候才引入 2.index.js 文件。這樣就滿足了我們按需加載的需求。

require.ensure 這個函數是一個代碼分離的分割線,表示回調里面的 require 是我們想要進行分割出去的,即 require('./A.js'),把 A.js 分割出去,形成一個 webpack 打包的單獨 js 文件。它的語法如下 

  1. require.ensure(dependencies: String[], callback: function(require), chunkName: String) 

我們打開 1.index.js 文件,發現它的代碼如下 

  1. (windowwindow.webpackJsonp = window.webpackJsonp || []).push([  
  2.   [1],  
  3.   [  
  4.     ,  
  5.     function (o, n) {  
  6.       o.exports = 'hello A'  
  7.     },  
  8.   ],  
  9. ]) 

由上面的代碼可以看出:

  1.  異步加載的代碼,會保存在一個全局的 webpackJsonp 中。
  2.  webpackJsonp.push 的的值,兩個參數分別為異步加載的文件中存放的需要安裝的模塊對應的 id 和異步加載的文件中存放的需要安裝的模塊列表。
  3.  在滿足某種情況下,會執行具體模塊中的代碼。

import() 按需加載

webpack4 官方文檔提供了模塊按需切割加載,配合 es6 的按需加載 import() 方法,可以做到減少首頁包體積,加快首頁的請求速度,只有其他模塊,只有當需要的時候才會加載對應 js。

import()的語法十分簡單。該函數只接受一個參數,就是引用包的地址,并且使用了 promise 式的回調,獲取加載的包。在代碼中所有被 import()的模塊,都將打成一個單獨的包,放在 chunk 存儲的目錄下。在瀏覽器運行到這一行代碼時,就會自動請求這個資源,實現異步加載。

下面我們將上述代碼改成 import()方式。 

  1. document.getElementById('aBtn').onclick = function () {  
  2.   //異步加載A  
  3.   import('./A').then((data) => {  
  4.     alert(data.A)  
  5.   })  
  6.  
  7. document.getElementById('bBtn').onclick = function () {  
  8.   //異步加載b  
  9.   import('./B').then((data) => {  
  10.     alert(data.B)  
  11.   })  

此時打包出來的文件和 webpack.ensure 方法是一樣的。

路由懶加載

為什么需要懶加載?

像 vue 這種單頁面應用,如果沒有路由懶加載,運用 webpack 打包后的文件將會很大,造成進入首頁時,需要加載的內容過多,出現較長時間的白屏,運用路由懶加載則可以將頁面進行劃分,需要的時候才加載頁面,可以有效的分擔首頁所承擔的加載壓力,減少首頁加載用時。

vue 路由懶加載有以下三種方式

  •  vue 異步組件
  •  ES6 的 import()
  •  webpack 的 require.ensure()

vue 異步組件

這種方法主要是使用了 resolve 的異步機制,用 require 代替了 import 實現按需加載 

  1. export default new Router({  
  2.   routes: [  
  3.     {  
  4.       path: '/home',',  
  5.       component: (resolve) => require(['@/components/home'], resolve),  
  6.     },  
  7.     {  
  8.       path: '/about',',  
  9.       component: (resolve) => require(['@/components/about'], resolve),  
  10.     },  
  11.   ],  
  12. }) 

require.ensure

這種模式可以通過參數中的 webpackChunkName 將 js 分開打包。 

  1. export default new Router({  
  2.   routes: [ 
  3.      {  
  4.       path: '/home',  
  5.       component: (resolve) => require.ensure([], () => resolve(require('@/components/home')), 'home'), 
  6.     },  
  7.     {  
  8.       path: '/about',  
  9.       component: (resolve) => require.ensure([], () => resolve(require('@/components/about')), 'about'),  
  10.     },  
  11.   ],  
  12. }) 

ES6 的 import()

vue-router 在官網提供了一種方法,可以理解也是為通過 Promise 的 resolve 機制。因為 Promise 函數返回的 Promise 為 resolve 組件本身,而我們又可以使用 import 來導入組件。 

  1. export default new Router({  
  2.   routes: [  
  3.     {  
  4.       path: '/home',  
  5.       component: () => import('@/components/home'),  
  6.     },  
  7.     {  
  8.       path: '/about',  
  9.       component: () => import('@/components/home'),  
  10.     },  
  11.   ], 
  12. }) 

webpack 分包策略

在 webpack 打包過程中,經常出現 vendor.js, app.js 單個文件較大的情況,這偏偏又是網頁最先加載的文件,這就會使得加載時間過長,從而使得白屏時間過長,影響用戶體驗。所以我們需要有合理的分包策略。

CommonsChunkPlugin

在 Webapck4.x 版本之前,我們都是使用 CommonsChunkPlugin 去做分離 

  1. plugins: [  
  2.   new webpack.optimize.CommonsChunkPlugin({  
  3.     name: 'vendor',  
  4.     minChunks: function (module, count) {  
  5.       return (  
  6.         module.resource &&  
  7.         /.js$/.test(module.resource) &&  
  8.         module.resource.indexOf(path.join(__dirname, './node_modules')) === 0  
  9.       )  
  10.     },  
  11.   }),  
  12.   new webpack.optimize.CommonsChunkPlugin({  
  13.     name: 'common',  
  14.     chunks: 'initial',  
  15.     minChunks: 2,  
  16.   }),  

我們把以下文件單獨抽離出來打包

  •  node_modules 文件夾下的,模塊
  •  被 3 個 入口 chunk 共享的模塊

optimization.splitChunks

webpack 4 最大的改動就是廢除了 CommonsChunkPlugin 引入了 optimization.splitChunks。如果你的 mode 是 production,那么 webpack4 就會自動開啟 Code Splitting。

它內置的代碼分割策略是這樣的:

  •  新的 chunk 是否被共享或者是來自 node_modules 的模塊
  •  新的 chunk 體積在壓縮之前是否大于 30kb
  •  按需加載 chunk 的并發請求數量小于等于 5 個
  •  頁面初始加載時的并發請求數量小于等于 3 個

雖然在 webpack4 會自動開啟 Code Splitting,但是隨著項目工程的最大,這往往不能滿足我們的需求,我們需要再進行個性化的優化。

應用實例

我們先找到一個優化空間較大的項目來進行操作。這是一個后臺管理系統項目,大部分內容由 3-4 個前端開發,平時開發周期較短,且大部分人沒有優化意識,只是寫好業務代碼完成需求,日子一長,造成打包出來的文件較大,大大影響性能。

我們先用 webpack-bundle-analyzer 分析打包后的模塊依賴及文件大小,確定優化的方向在哪。

然后我們再看下打包出來的 js 文件

看到這兩張圖的時候,我內心是崩潰的,槽點如下

  •  打包后生成多個將近 1M 的 js 文件,其中不乏 vendor.js 首頁必須加載的大文件
  •  xlsx.js 這樣的插件沒必要使用,導出 excel 更好的方法應該是后端返回文件流格式給前端處理
  •  echart 和 iview 文件太大,應該使用 cdn 引入的方法

吐槽完之后我們就要開始做正事了。正是因為有這么多槽點,我們才更好用來驗證我們優化方法的可行性。

抽離 echart 和 iview

由上面分析可知,echart 和 iview 文件太大,此時我們就用到 webpack4 的 optimization.splitChunks 進行代碼分割了,把他們單獨抽離打包成文件。(為了更好地呈現優化效果,我們先把 xlsx.js 去掉)

vue.config.js 修改如下: 

  1. chainWebpack: config => {  
  2.     config.optimization.splitChunks({  
  3.       chunks: 'all',  
  4.       cacheGroups: {  
  5.         vendors: {  
  6.           name: 'chunk-vendors',  
  7.           test: /[/]node_modules[/]/,  
  8.           priority: 10,  
  9.           chunks: 'initial'  
  10.         },  
  11.         iview: {  
  12.           name: 'chunk-iview',  
  13.           priority: 20,  
  14.           test: /[/]node_modules[/]_?iview(.*)/  
  15.         },  
  16.         echarts: {  
  17.           name: 'chunk-echarts',  
  18.           priority: 20,  
  19.           test: /[/]node_modules[/]_?echarts(.*)/  
  20.         },  
  21.         commons: {  
  22.           name: 'chunk-commons',  
  23.           minChunks: 2,  
  24.           priority: 5,  
  25.           chunks: 'initial',  
  26.           reuseExistingChunk: true  
  27.         }  
  28.       }  
  29.     })  
  30.   }, 

此時我們再用 webpack-bundle-analyzer 分析一下

打包出來的 js 文件

從這里可以看出我們已經成功把 echart 和 iview 單獨抽離出來了,同時 vendor.js 也相應地減小了體積。此外,我們還可以繼續抽離其他更多的第三方模塊。

CDN 方式

雖然第三方模塊是單獨抽離出來了,但是在首頁或者相應路由加載時還是要加載這樣一個幾百 kb 的文件,還是不利于性能優化的。這時,我們可以用 CDN 的方式引入這樣插件或者 UI 組件庫。

    1.  在 index.html 引入相應 cdn 鏈接 

  1. <head>  
  2.   <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/iview/3.5.4/styles/iview.css" /> 
  3. </head>  
  4. <body>  
  5.   <div id="app"></div>  
  6.   <script src="https://cdn.bootcss.com/vue/2.6.8/vue.min.js"></script>  
  7.   <script src="https://cdn.bootcdn.net/ajax/libs/iview/3.5.4/iview.min.js"></script>  
  8.   <script src="https://cdn.bootcdn.net/ajax/libs/xlsx/0.16.8/xlsx.mini.min.js"></script>  
  9.   <script src="https://cdn.bootcdn.net/ajax/libs/xlsx/0.16.8/cpexcel.min.js"></script>  
  10. </body> 

    1.  vue.config.js 配置 externals 

  1. configureWebpack: (config) => {  
  2.   config.externals = {  
  3.     vue: 'Vue',  
  4.     xlsx: 'XLSX',  
  5.     iview: 'iView',  
  6.     iView: 'ViewUI',  
  7.   }  

    1.  刪除之前的引入方式并卸載相應 npm 依賴包 

  1. npm uninstall vue iview echarts xlsx --save 

此時我們在來看一下打包后的情況

打包出來的 js 文件

well done ! 這時基本沒有打包出大文件了,首頁加載需要的 vendor.js 也只有幾十 kb,而且我們還可以進一步優化,就是把 vue 全家桶的一些模塊再通過 cdn 的方法引入,比如 vue-router,vuex,axios 等。這時頁面特別是首頁加載的性能就得到大大地優化了。 

 

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2021-11-09 09:57:46

Webpack 前端分包優化

2021-12-17 00:02:28

Webpack資源加載

2020-08-05 08:21:41

Webpack

2021-06-07 05:32:53

Webpack Chunk 前端

2022-02-27 10:13:42

分包Uiniapp項目

2017-03-28 10:11:12

Webpack 2React加載

2022-08-26 13:24:03

version源碼sources

2021-12-20 00:03:38

Webpack運行機制

2021-09-13 09:40:35

Webpack 前端HMR 原理

2023-06-29 07:48:35

異步加載JavaScript

2024-10-14 13:12:59

2021-05-31 05:36:43

WebpackJavaScript 前端

2021-04-19 10:45:52

Webpack熱更新前端

2021-12-24 08:01:44

Webpack優化打包

2021-08-26 10:30:29

WebpackTree-Shakin前端

2021-12-25 22:29:04

WebpackRollup 前端

2021-12-15 23:42:56

Webpack原理實踐

2023-03-13 17:18:09

OkHttp同步異步

2021-12-16 22:02:28

webpack原理模塊化

2013-06-27 11:16:27

Android異步加載
點贊
收藏

51CTO技術棧公眾號

国产在线精品播放| www.亚洲成人| 中文字幕欧美人妻精品一区| av在线女优影院| 国产一区二区0| 国内精品视频一区| 国产亚洲精品精品精品| 欧美黄色一级| 在线观看av一区二区| 少妇久久久久久被弄到高潮| 蜜桃视频在线免费| 国产成人免费av在线| 日韩av免费一区| 久草网在线观看| 欧美手机视频| 四虎成人精品永久免费av九九| 精品国产不卡一区二区三区| 在线观看免费视频高清游戏推荐| caoprom在线| 日韩美女啊v在线免费观看| 久久riav二区三区| 亚洲a视频在线| 美女诱惑一区二区| 欧美最猛黑人xxxx黑人猛叫黄| 三级黄色在线观看| 国产午夜一区| 亚洲第一区第二区| 一个人看的视频www| 99只有精品| 一本色道久久综合亚洲91| 国产精品www在线观看| 美女写真理伦片在线看| 国产欧美精品一区| 狠狠久久综合婷婷不卡| 亚洲国产精品久久久久久久| 蜜臀久久99精品久久久画质超高清| 97视频在线观看网址| 美国黄色小视频| 午夜av一区| 中文字幕国产日韩| 少妇无套高潮一二三区| 丝袜久久网站| 亚洲精品久久久久久久久久久久| 中文字幕第22页| 欧美成人xxxx| 欧美日韩精品一区视频| 日韩在线第三页| 欧美aa视频| 色综合天天综合给合国产| 国产玉足脚交久久欧美| 国产蜜臀在线| 一区二区三区鲁丝不卡| 亚洲天堂av免费在线观看| seseavlu视频在线| 国产精品美女一区二区三区| 日韩在线电影一区| 1769在线观看| 中文字幕一区二区三区四区 | 国产99久一区二区三区a片| 久久99精品国产麻豆不卡| 91精品久久久久| 国产精品久久欧美久久一区| 国产一区二区三区观看| 91在线免费观看网站| aaa一区二区| 国产·精品毛片| 九九热久久66| 成人高潮成人免费观看| 国产精品超碰97尤物18| 日本老太婆做爰视频| 福利成人导航| 色婷婷综合久久久中文一区二区| 国产自偷自偷免费一区| 宅男噜噜噜66国产精品免费| 91精品国产综合久久福利| 日本泡妞xxxx免费视频软件| 精品国产影院| 国产一级揄自揄精品视频| 国产小视频你懂的| 欧美日韩p片| 欧美中文字幕精品| 亚洲综合精品视频| 岛国精品一区二区| 欧美日韩一区在线播放| 波多野结衣在线影院| 亚洲视频每日更新| 欧美深夜福利视频| 老司机精品视频网| 亚洲第一区中文字幕| 久久久久亚洲av成人无码电影| 日韩欧美高清在线播放| 欧美精品电影在线| 中文字幕精品一区二| 国产呦萝稀缺另类资源| 久久波多野结衣| 久cao在线| 一本色道亚洲精品aⅴ| 两性午夜免费视频| 国产成人3p视频免费观看| 久久成人一区二区| 中文字幕xxxx| 成人免费毛片aaaaa**| 欧洲亚洲一区二区| 密臀av在线| 欧美亚洲日本一区| 日批在线观看视频| 1024精品久久久久久久久| 69视频在线免费观看| 一级特黄aaa大片| 2022国产精品视频| 欧美黄色免费网址| 久久精品超碰| 国产婷婷97碰碰久久人人蜜臀 | 亚洲a一区二区三区| 日本久久精品视频| 亚洲老妇色熟女老太| 亚洲国产成人一区二区三区| 国产91xxx| 亚洲免费一区三区| 精品国内亚洲在观看18黄| 免费黄色av片| 91免费视频网址| 国产免费一区二区视频| 高清一区二区中文字幕| 在线观看国产精品日韩av| 丁香六月婷婷综合| av一本久道久久综合久久鬼色| 男女h黄动漫啪啪无遮挡软件| 你懂得影院夜精品a| 日韩高清av一区二区三区| 波多野结衣亚洲色图| 精品一区二区三区免费| 性刺激综合网| 精品视频在线一区二区在线| 亚洲女人天堂av| 亚洲久久在线观看| 99久久精品一区二区| 日本一本中文字幕| 成人福利一区| 久久久久久一区二区三区| 99久久久久成人国产免费| 国产精品久久久久aaaa樱花| 污污的网站18| 99精品美女| 成人乱色短篇合集| 成年人网站在线| 制服丝袜中文字幕亚洲| 欧美丰满熟妇bbbbbb| 国产真实精品久久二三区| 黄色高清视频网站| 白嫩亚洲一区二区三区| 欧美成年人视频网站| 国产a级免费视频| 一区二区三区鲁丝不卡| 国产一级黄色录像| 日韩图片一区| 欧美极品视频一区二区三区| 亚洲成人看片| 日韩在线观看你懂的| 国产精品高潮呻吟av| 亚洲欧美综合色| 老司机av网站| 国产亚洲精品v| 欧美性大战久久久久| www.精品国产| 久久国产精品首页| 日本黄色不卡视频| 欧美午夜精品久久久久久浪潮| 成人免费看aa片| 日韩av在线发布| 在线电影看在线一区二区三区| 国产高清日韩| 久久久午夜视频| 久久av少妇| 制服丝袜一区二区三区| 精品处破女学生| 国产日韩精品一区二区三区在线| 天天干在线影院| 欧美在线高清| 欧美高清一区二区| 日日夜夜精品| 久久久久亚洲精品成人网小说| 日韩av免费观影| 欧美日韩五月天| 国产在线观看成人| 欧美极品另类videosde| 九九热视频免费| 久久综合九色| 成人手机在线播放| 亚洲深夜福利在线观看| 92国产精品久久久久首页 | 成a人片在线观看www视频| 91麻豆精品国产无毒不卡在线观看| 久久久久久久久久一区二区三区| 久久午夜羞羞影院免费观看| 黄色a级三级三级三级| 校园激情久久| 大陆极品少妇内射aaaaaa| 要久久爱电视剧全集完整观看| 91久久精品国产| 黄色综合网址| 欧美激情一级二级| 午夜视频在线看| 日韩国产高清污视频在线观看| 在线观看免费高清视频| 精品女厕一区二区三区| 日韩黄色免费观看| 中文在线免费一区三区高中清不卡| 国产一级免费片| 紧缚捆绑精品一区二区| 免费日韩视频在线观看| 欧美日韩网站| av电影一区二区三区| 国产精品亚洲二区| 久久超碰亚洲| silk一区二区三区精品视频| 国产免费一区二区三区在线能观看| 捆绑调教日本一区二区三区| 久久国产色av| 巨大荫蒂视频欧美大片| 一个人www欧美| 日韩精品福利| 日韩av在线导航| 亚洲精品久久久久久动漫器材一区 | 草草视频在线一区二区| 成人精品视频99在线观看免费| 成人免费看黄| 91av在线网站| 91超碰免费在线| 久久久久久久电影一区| 亚洲制服国产| 欧美成人黑人xx视频免费观看| av在线1区2区| 最新中文字幕亚洲| 春暖花开成人亚洲区| 亚洲视频自拍偷拍| 黄色av网站在线看| 亚洲欧洲中文天堂| 可以在线观看的av| 亚洲欧美日韩国产中文| 四虎影视2018在线播放alocalhost| 精品捆绑美女sm三区| 亚洲第九十九页| 精品久久久久一区| 国产综合视频在线| 亚洲高清久久网| 欧洲精品久久一区二区| 亚洲国产精品电影| 天天综合在线视频| 日韩精品在线免费| 国产一二三在线观看| 一区二区三区无码高清视频| 国产二区视频在线观看| 宅男66日本亚洲欧美视频| 999在线视频| 久久精品免费播放| 91麻豆免费在线视频| 欧美黑人又粗大| а√天堂中文资源在线bt| 97在线视频免费| 成人性生交大片免费网站| 国产成人亚洲精品| 高清欧美日韩| 亚洲伊人久久大香线蕉av| 亚洲综合网狠久久| 精品国产一区二区三区日日嗨| 偷拍精品福利视频导航| 亚洲v欧美v另类v综合v日韩v| 97久久视频| 日韩免费在线观看av| 日韩一区二区久久| 丁香婷婷激情网| 国产一区三区三区| 免费a v网站| 国产婷婷色一区二区三区在线| 成年人视频软件| 一区二区三区四区不卡在线| 久久亚洲天堂网| 精品视频一区二区三区免费| 国产伦精品一区二区三区免.费 | 日韩免费啪啪| 欧美精品videosex性欧美| 欧美一级大片| 亚洲综合中文字幕68页| 欧美影院天天5g天天爽| 亚洲午夜精品久久久中文影院av| 日韩精品久久久毛片一区二区| 亚洲草久电影| 日日橹狠狠爱欧美超碰| 免费不卡在线视频| 香港三日本8a三级少妇三级99| 欧美激情一区不卡| 国产亚洲精品码| 欧美在线免费播放| 囯产精品一品二区三区| 色哟哟入口国产精品| wwww亚洲| 成人羞羞国产免费| 免费视频国产一区| 日韩中文在线字幕| 老**午夜毛片一区二区三区| 国产黑丝在线视频| 国产欧美日韩中文久久| 四虎永久在线精品| 欧美丰满少妇xxxbbb| 日本v片在线免费观看| 九九热视频这里只有精品| 四虎影视4hu4虎成人| 狠狠久久综合婷婷不卡| 一区二区中文字| 国产精品入口免费软件| 99亚偷拍自图区亚洲| 波多野结衣亚洲色图| 欧美日韩大陆一区二区| 狠狠v欧美ⅴ日韩v亚洲v大胸| 欧美激情亚洲激情| 国产精一区二区| 亚洲美女搞黄| 亚洲欧美日韩视频二区| jjzzjjzz欧美69巨大| 亚洲欧美视频一区| 91 中文字幕| 中文字幕在线日韩 | 日韩一区二区三| 自拍视频在线免费观看| 日本国产欧美一区二区三区| 老司机aⅴ在线精品导航| 久久www视频| 国产乱国产乱300精品| 美女视频久久久| 欧美影院精品一区| 国产高清一区在线观看| 91成人国产在线观看| 日韩mv欧美mv国产网站| 中文字幕无码精品亚洲资源网久久| 国产综合色视频| 午夜剧场免费在线观看| 欧美久久高跟鞋激| bbbbbbbbbbb在线视频| 国产精品久久久久久久久久久久久| 秋霞影院一区二区三区| 无码专区aaaaaa免费视频| 成人天堂资源www在线| 国产无码精品视频| 亚洲福利精品在线| 蜜桃视频在线网站| 欧美三日本三级少妇三99| 欧美亚洲视频| 99久久精品免费视频| 欧美亚洲禁片免费| 日本在线免费播放| 91在线视频精品| 韩国亚洲精品| 国产一级免费片| 日韩欧美亚洲成人| 韩日视频在线| 国产一区在线播放| 亚洲精品一二三区区别| 色婷婷一区二区三区在线观看| 一区二区三区免费在线观看| 亚洲av无码一区二区乱子伦| 国模吧一区二区| 亚洲性视频大全| 91插插插插插插插插| 亚洲欧美日韩小说| 国精品人妻无码一区二区三区喝尿| 午夜精品久久久久久久久久久久久 | 黄色片子在线观看| 日韩欧美亚洲国产另类| 99re6在线精品视频免费播放| 激情视频一区二区| 日韩va欧美va亚洲va久久| 很污很黄的网站| 欧美videossexotv100| 成人午夜视屏| 亚洲综合第一| 大陆成人av片| 波多野结衣午夜| 久久这里有精品| 久久九九热re6这里有精品| 日韩精品一区二区三区不卡| 最好看的中文字幕久久| 色哟哟国产精品色哟哟| 国产精品高清免费在线观看| 亚洲精品国产成人影院| www.88av| 8x8x8国产精品| 九色porny丨国产首页在线| 亚洲福利av| 岛国精品在线观看| 中文字幕视频免费观看| 久久99国产精品自在自在app| 五月天亚洲一区| 99精品999| 一本大道久久a久久精二百 | 韩国精品美女www爽爽爽视频| 精品久久中文| 亚洲图片欧美另类| 欧美精品777| 亚洲黄色免费看|