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

webpack 性能優(yōu)化

開(kāi)發(fā)
今天我為大家介紹一下webpack 性能優(yōu)化

開(kāi)發(fā)環(huán)境性能優(yōu)化
優(yōu)化打包構(gòu)建速度

HMR優(yōu)化代碼調(diào)試source-map

生產(chǎn)環(huán)境性能優(yōu)化
優(yōu)化打包構(gòu)建速度

oneOf babel 緩存 多進(jìn)程打包 externals dll 優(yōu)化代碼運(yùn)行的性能 緩存(hash,chunkhash,contenthash) tree shaking code split 懶加載和預(yù)加載 pwa

優(yōu)化 開(kāi)發(fā)環(huán)境 打包構(gòu)建速度
HMR hot module replacement 熱模塊替換/模塊熱替換
作用:一個(gè)模塊發(fā)生變化,只會(huì)重新打包這一個(gè)模塊 而不是重新打包所有,極大提升構(gòu)建速度
樣式文件: 可以使用HMR功能,因?yàn)閟tyle-loader內(nèi)部實(shí)現(xiàn)了 js文件: 默認(rèn)不能使用HMR功能 -->解決:需要修改js代碼,添加支持HMR功能的代碼。注意,HMR功能對(duì)js的處理,只能處理非入口js文件的其他文件。

  1. if(module.hot){ 
  2.     //一旦module.hot是true,說(shuō)明開(kāi)啟HMR功能,讓HMR功能代碼生效 
  3.     module.hot.accept('./xxx.js',function(){ 
  4.         //此方法會(huì)監(jiān)聽(tīng)print.js文件的變化,一旦發(fā)生變化,其他默認(rèn)不會(huì)重新打包構(gòu)建 
  5.         //會(huì)執(zhí)行后面的回調(diào)函數(shù) 
  6.         xxx(); 
  7.     }) 

html文件: 默認(rèn)不能使用HMR功能,同時(shí)會(huì)導(dǎo)致問(wèn)題:html文件不能熱更新了 解決:改 entry:['入口js','html'] ,但html文件只有一個(gè),所以不用做HMR功能

  1. devServer:{ 
  2.         //項(xiàng)目構(gòu)建后的目錄 
  3.         contentBase: resolve(__dirname,'build'), 
  4.         //啟用gzip壓縮 
  5.         compress:true
  6.         //端口號(hào) 
  7.         port:3000, 
  8.         //自動(dòng)打開(kāi)瀏覽器 
  9.         open:true 
  10.     } 

優(yōu)化 開(kāi)發(fā)環(huán)境 代碼調(diào)試
source-map 一種提供源代碼到構(gòu)建后代碼映射的技術(shù)
如果構(gòu)建后代碼出錯(cuò)了,通過(guò)映射可以追蹤到錯(cuò)誤的代碼

  1. webpack.config.js 
  2.  
  3. devtools:'source-map' 
  4. //其他 參數(shù) [inline-|hidden-|eval-][nosources-][cheap-[module-]]source-map 
  5.  
  6. source-map : 外部 
  7.     錯(cuò)誤代碼的準(zhǔn)確信息和錯(cuò)誤位置 
  8. inline-source-map : 內(nèi)聯(lián) 
  9.     錯(cuò)誤代碼的準(zhǔn)確信息和錯(cuò)誤位置 
  10. hidden-source-map : 外部 
  11.     錯(cuò)誤代碼的錯(cuò)誤原因 但沒(méi)有錯(cuò)誤位置,不能追蹤到源代碼的錯(cuò)誤,只能提示到構(gòu)建后代碼的位置 
  12. eval-source-map : 內(nèi)聯(lián) 
  13.     每一個(gè)文件都生成對(duì)應(yīng)的source-map,都在eval 
  14.     錯(cuò)誤代碼的準(zhǔn)確信息和錯(cuò)誤位置 
  15. nosources-source-map : 外部 
  16.     能找到錯(cuò)誤代碼的準(zhǔn)確信息 但沒(méi)有任何源代碼信息 
  17. cheap-source-map : 外部 
  18.     錯(cuò)誤代碼的準(zhǔn)確信息和錯(cuò)誤位置 只精確到行,不精確到列 
  19. cheap-module-source-map : 外部 
  20.     錯(cuò)誤代碼的準(zhǔn)確信息和錯(cuò)誤位置 
  21.     module 會(huì)將 loader 的 source-map加入 
  22. 內(nèi)聯(lián) 和 外部的區(qū)別 : 
  23.     1.外部生成了文件但內(nèi)聯(lián)沒(méi)有生成 
  24.     2.內(nèi)聯(lián)構(gòu)建速度更快 

開(kāi)發(fā)環(huán)境:速度快,調(diào)試更友好

  1. 速度快 eval>inline>cheap>... 
  2. 調(diào)試更友好 souce-map>cheap-module-souce-map>cheap-souce-map 
  3. 所以 一般用eval-source-map 

生產(chǎn)環(huán)境:源代碼要不要隱藏,調(diào)試要不要友好??jī)?nèi)聯(lián)會(huì)讓體積編碼,所以一般不用內(nèi)聯(lián)

 

  1. nosources-source-map 隱藏源代碼 
  2. hidden-source-map 只隱藏源代碼,會(huì)提示構(gòu)建購(gòu)代碼錯(cuò)誤信息 
  3. --> source-map /cheap-module-souce-map 

優(yōu)化生產(chǎn)環(huán)境
oneOf
rules里中有許多個(gè)loader,這樣會(huì)導(dǎo)致每個(gè)文件都會(huì)被所有的loader過(guò)一遍,有些能處理,有些處理不了。所以可以利用oneOf達(dá)到以下loader只會(huì)匹配到第一個(gè)。但需要注意,不能有兩個(gè)loader同時(shí)處理同一個(gè)文件

  1. webpack.config 
  2. module.exports={ 
  3.     //.... 
  4.     module:{ 
  5.         rule:[ 
  6.             //正常來(lái)講,一個(gè)文件只能被一個(gè)loader處理 
  7.             //當(dāng)一個(gè)文件要被多個(gè)loader處理,那么一定要指定loader的執(zhí)行順序 
  8.             // 先執(zhí)行eslint 再執(zhí)行babel 
  9.             { 
  10.                 test:/\.js$/, 
  11.                 exclude:/node_modules/, 
  12.                 //優(yōu)先執(zhí)行 
  13.                 enforce:'pre'
  14.                 loader:'eslint-loader'
  15.                 options:{ 
  16.                     fix:true 
  17.                 } 
  18.             }, 
  19.             { 
  20.               oneOf:[ 
  21.                     { 
  22.                         test: /\.css$/, 
  23.                         use:[ 
  24.                             ...commonCssLoader 
  25.                         ] 
  26.                     }, 
  27.                     { 
  28.                         test:/\.less$/, 
  29.                         use:[ 
  30.                             ...commonCssLoader,'less-loader' 
  31.                         ] 
  32.                     }, 
  33.                     { 
  34.                         test:/\.js$/, 
  35.                         exclude:/node_modules/, 
  36.                         loader:'babel-loader'
  37.                         options:{ 
  38.                             // 預(yù)設(shè) :指示babel做怎樣的兼容性處理 
  39.                             presets:[ 
  40.                             [ 
  41.                                     '@babel/preset-env'
  42.                                     { 
  43.                                         //按需加載 
  44.                                         useBuiltIns:'usage'
  45.                                         //指定core-js版本 
  46.                                         corejs:{ 
  47.                                             version:3 
  48.                                         }, 
  49.                                         //指定兼容性做到哪個(gè)版本的瀏覽器 
  50.                                         targerts:{ 
  51.                                             chrome: '40'
  52.                                             fixfox: '50'
  53.                                             ie: '9'
  54.                                             safari: '10'
  55.                                             edge: '17' 
  56.                                         } 
  57.                                     } 
  58.                             ] 
  59.                             ] 
  60.                         } 
  61.                     }, 
  62.                     { 
  63.                         test:/\.(png|jpg|gif)/, 
  64.                         loader:'url-loader'
  65.                         enModule:true
  66.                         options:{ 
  67.                             limit:8*1024, 
  68.                             name'[hash:10].[ext]'
  69.                             outputpath:'' 
  70.                         } 
  71.                     }, 
  72.                     { 
  73.                         test:/\.html$/, 
  74.                         loader:'html-loader' 
  75.                     }, 
  76.                     { 
  77.                         exclude:/\.(js|less|css|png|jpg|gif)/, 
  78.                         loader:'file-loader'
  79.                         options:{ 
  80.                             name:'[hash:10].[ext]' 
  81.                         } 
  82.                     } 
  83.                 ] 
  84.             } 
  85.         ] 
  86.     }, 

緩存
1.babel緩存-->第二次打包更快

  1.     test:/\.js$/, 
  2.     exclude:/node_modules/, 
  3.     loader:'babel-loader'
  4.     options:{ 
  5.         // 預(yù)設(shè) :指示babel做怎樣的兼容性處理 
  6.         presets:[ 
  7.         [ 
  8.             '@babel/preset-env'
  9.             { 
  10.                 //按需加載 
  11.                 useBuiltIns:'usage'
  12.                 //指定core-js版本 
  13.                 corejs:{ 
  14.                     version:3 
  15.                 }, 
  16.                 //指定兼容性做到哪個(gè)版本的瀏覽器 
  17.                 targerts:{ 
  18.                     chrome: '40'
  19.                     fixfox: '50'
  20.                     ie: '9'
  21.                     safari: '10'
  22.                     edge: '17' 
  23.                 } 
  24.             } 
  25.         ] 
  26.         ], 
  27.         //第二次構(gòu)建時(shí),會(huì)讀取之前的緩存 
  28.         cacheDirectory: true 
  29.         } 
  30.     }, 

2.文件資源緩存-->上線緩存優(yōu)化

  1. hash:每次webpack構(gòu)建會(huì)生成一個(gè)唯一hash值 
  2.         問(wèn)題: 因?yàn)閖s和css同時(shí)使用一個(gè)hash值,如果重新打包,會(huì)導(dǎo)致所有緩存失效,可能我卻只改了一個(gè)文件, 
  3.     chunkhash:根據(jù)chunk生成hash值,如果打包來(lái)源于同一個(gè)chunk,那么hash值也一樣 
  4.         問(wèn)題:js和css的hash值還是一樣的。 
  5.             原因:css是由js引入的,所以屬于同一個(gè)chunk 
  6.     contenthash: 根據(jù)文件內(nèi)容生成hash值, 

  1. webpack.config.js 

tree shaking
去除應(yīng)用程序中沒(méi)有使用的代碼

  1. 前提: 
  2. 1.必須使用es6模塊化 
  3. 2.開(kāi)啟production模式 
  4.  
  5. 在package.json中配置 
  6. "sideEffects":false 所有代碼都沒(méi)有副作用,都可以鏡像tree sharking  
  7.     問(wèn)題 可能會(huì)把css/@babel/polyfille 干掉 
  8. "sideEffects": ["*.css","*.less"] 哪些文件不 tree sharking 

code split
1.入口配置

  1. 單入口 //單頁(yè)面應(yīng)用 
  2.     entry:'./src/js/index.js'  
  3.     多入口 //多頁(yè)面應(yīng)用 
  4.     entry:{ 
  5.         index:'./src/js/index.js'
  6.         test:'./src/js/test.js' 
  7.     } 

2.optimization

  1. module.exports={ 
  2.     //... 
  3.     // 可以將nodemudules中的代碼單獨(dú)打包成一個(gè)chunk最終輸出 
  4.     // 還可以自動(dòng)分析多入口chunk中,有沒(méi)有公共的文件,如果有會(huì)打包成一個(gè)單獨(dú)的chunk 
  5.     optimization:{ 
  6.         splitChunks:{ 
  7.             chunks:'all' 
  8.         } 
  9.     } 

3.import 動(dòng)態(tài)導(dǎo)入語(yǔ)法,能將某個(gè)文件單獨(dú)打包
通過(guò)js代碼,讓某個(gè)文件被單獨(dú)打包成一個(gè)chunk,通過(guò)注釋可以固定此文件的名稱

  1. import(/*webpackChunkName: 'xxxName' */'./xx/xxx.js'
  2.     .then(res =>{ 
  3.         //加載成功 
  4.     }) 
  5.     .catch(()=>{ 
  6.         //加載失敗 
  7.     }) 

懶加載和預(yù)加載
1.懶加載 當(dāng)文件需要用時(shí)才加載
import 動(dòng)態(tài)導(dǎo)入語(yǔ)法

  1. document.getElementById('btn').onclick = function(){ 
  2.     import(/*webpackChunkName: 'xxxName' */'./xx/ss.js'
  3.     .then(res=>{ 
  4.         //干啥干啥 
  5.     }) 

2.預(yù)加載 webpackPrefetch:true
./xx/ss.js 已經(jīng)被加載了,點(diǎn)擊的時(shí)候再?gòu)木彺嬷屑虞d,

  1. document.getElementById('btn').onclick = function(){ 
  2.     import(/*webpackChunkName: 'xxxName',webpackPrefetch:true */'./xx/ss.js'
  3.     .then(res=>{ 
  4.         //干啥干啥 
  5.     }) 

正常加載可以認(rèn)為是并行加載(同一時(shí)間加載多個(gè)文件) 預(yù)加載prefectch 等其他資源加載完畢,瀏覽器空閑了,再偷偷加載資源 兼容性比較差 慎用
PWA 漸進(jìn)式網(wǎng)絡(luò)開(kāi)發(fā)應(yīng)用程序
網(wǎng)絡(luò)離線可訪問(wèn)
webbox-->webbox-webpack-plugin

  1. const WebboxWebpackPlugin = require('webbox-webpack-plugin'
  2. module.exports={ 
  3.     plugins:[ 
  4.         new WebboxWebpackPlugin.GenerateSW({ 
  5.             /* 
  6.                 1.幫助 serviceWorker 快速啟動(dòng) 
  7.                 2.刪除舊的 serviceWorker  
  8.  
  9.                 生成一個(gè) serviceWorker 配置文件 
  10.              */ 
  11.             clientsClaim:true
  12.             skipWaiting:true 
  13.         }) 
  14.     ] 
  15.  
  16. index.js 中注冊(cè)serviceworker 
  17. //處理兼容性 
  18. if('serviceWorker' in navigator){ 
  19.     window.addEventListener('load',()=>{ 
  20.         navigator.serviceWorker 
  21.             .register('./service-work.js'
  22.             .then(()=>{ 
  23.                 //成功 
  24.             }) 
  25.             .catch(()=>{ 
  26.                 //失敗 
  27.             }) 
  28.     }) 
  29.  
  30. 1.可能會(huì)出現(xiàn)問(wèn)題 eslint不認(rèn)識(shí)window和navigator 
  31. 解決 package.json中eslintConfig中配置 
  32. "env":{ 
  33.     "browser":true //支持瀏覽器端的變量 
  34.  
  35. 2. sw代碼必須運(yùn)行在服務(wù)器上 
  36.     -->node.js  
  37.         --> npm i serve -g  
  38.             serve -s build 啟動(dòng)一個(gè)服務(wù)器將build下的資源作為靜態(tài)資源暴露出去 

多進(jìn)程打包
thread-loader 一般給babel-loader用
但需要注意
進(jìn)程啟動(dòng)大約需500ms,進(jìn)程間通信也有開(kāi)銷。只有工作消耗時(shí)間比較長(zhǎng),才需要多進(jìn)程打包

  1.     test:/\.js$/, 
  2.     exclude:/node_modules/, 
  3.     use:[ 
  4.         //'thread-loader'
  5.         { 
  6.             loader:'thread-loader'
  7.             options:{ 
  8.                 workers: 2 //進(jìn)程2個(gè) 
  9.             } 
  10.         } 
  11.         { 
  12.             loader:'babel-loader'
  13.             options:{ 
  14.                 // 預(yù)設(shè) :指示babel做怎樣的兼容性處理 
  15.                 presets:[ 
  16.                 [ 
  17.                     '@babel/preset-env'
  18.                     { 
  19.                         //按需加載 
  20.                         useBuiltIns:'usage'
  21.                         //指定core-js版本 
  22.                         corejs:{ 
  23.                             version:3 
  24.                         }, 
  25.                         //指定兼容性做到哪個(gè)版本的瀏覽器 
  26.                         targerts:{ 
  27.                             chrome: '40'
  28.                             fixfox: '50'
  29.                             ie: '9'
  30.                             safari: '10'
  31.                             edge: '17' 
  32.                         } 
  33.                     } 
  34.                 ] 
  35.                 ], 
  36.                 //第二次構(gòu)建時(shí),會(huì)讀取之前的緩存 
  37.                 cacheDirectory: true 
  38.                 } 
  39.         } 
  40.     ] 
  41.     }, 

externals

  1. module.exports={ 
  2.     externals:{ 
  3.         //忽略/拒絕  庫(kù)名 -- npm 包名  
  4.         //可以在index.html中引入cdn 
  5.     } 

dll 動(dòng)態(tài)連接
使用dll技術(shù) 對(duì)某些庫(kù)(第三方庫(kù)) 進(jìn)行單獨(dú)打包

  1. 指令 webpack --config webpack.dll.js 
  2. webpack.dll.js 
  3. const {resolve} = require('path'
  4. const webpack = require('webpack'
  5. module.exports = { 
  6.     entry:{ 
  7.         //最終打包生成的[name]-->jquery 
  8.         //['jquery']-->要打包的庫(kù)是jquery 
  9.         jquery:['jquery'
  10.     }, 
  11.     ouput:{ 
  12.         filename:'[name].js'
  13.         path:resolve(__dirname,'dll'), 
  14.         library:'[name]_[hash]' //打包的庫(kù)里面向外暴露出去的內(nèi)容叫什么名字 
  15.     }, 
  16.     plugin:[ 
  17.         new webpacl.DllPlugin({ 
  18.             //打包生成一個(gè)manifest.json --> 提供和jquery映射 
  19.             name'[name]_[hash]',//映射庫(kù)的暴露內(nèi)容名稱 
  20.             path:resolve(__dirname,'dll/manifest.json'
  21.  
  22.         }) 
  23.     ], 
  24.     mode:'production' 
  25.  
  26. webpack.config.js 
  27. const AddAssetHtmlWebpackPlugin = require('add-asset-html-webpack-plugin'
  28. module.exports={ 
  29.     plugins:[ 
  30.         //告訴webpack哪些庫(kù)不參與打包,同時(shí)名稱也得變 
  31.         new webpack.DllReferencePlugin({ 
  32.             manifest: resolve(__dirname,'dll/manifest.json'
  33.         }), 
  34.         //將某個(gè)文件打包輸出出去,并在html中引入該資源 
  35.         new AddAssetHtmlWebpackPlugin({ 
  36.             filepath:resolve(__dirname,'dll/jquery.js'
  37.         }) 
  38.     ] 

編輯推薦

 

責(zé)任編輯:姜華 來(lái)源: 晨曦大前端
相關(guān)推薦

2019-03-15 15:00:49

Webpack構(gòu)建速度前端

2021-11-09 09:57:46

Webpack 前端分包優(yōu)化

2019-03-26 10:02:16

WebpackJavascript前端

2019-03-05 10:20:49

WebWebpack分離數(shù)據(jù)

2023-04-27 08:35:20

Webpack 4性能優(yōu)化

2021-10-25 10:23:49

Webpack 前端Tree shakin

2021-09-06 06:45:06

Webpack優(yōu)化MindMaster

2017-07-11 15:50:11

前端webpack2優(yōu)化

2023-05-31 08:19:23

Webpack4Webpack 5

2021-09-27 08:16:38

Webpack 前端Cache

2021-10-12 09:52:30

Webpack 前端多進(jìn)程打包

2021-05-08 08:35:33

Webpack前端性能

2025-06-03 00:00:06

性能優(yōu)化性能指標(biāo)響應(yīng)時(shí)間

2021-11-15 09:44:49

Webpack 前端 Scope Hois

2018-04-19 15:13:53

javascriptwebpackvue.js

2014-12-10 10:12:02

Web

2011-08-03 16:51:01

jQuery

2021-11-29 11:13:45

服務(wù)器網(wǎng)絡(luò)性能

2022-02-16 14:10:51

服務(wù)器性能優(yōu)化Linux

2009-09-08 09:45:23

App Engine性
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

丝袜在线观看| 中文字幕av久久爽| 国产成人福利av| 欧美性猛交xxxx富婆| 欧美日韩一区二区视频在线| 久久久久精彩视频| 亚洲国产一成人久久精品| 亚洲精品一线二线三线 | 美女诱惑黄网站一区| 中文字幕亚洲专区| 国产国语老龄妇女a片| 成人软件在线观看| 夜夜精品视频一区二区| 日韩高清三级| 亚洲精品一区二区口爆| 视频一区在线播放| 欧美激情一区二区久久久| 国产av自拍一区| 国产美女亚洲精品7777| 欧美性猛交xxxx免费看| 午夜啪啪福利视频| 神马午夜在线观看| 国产在线精品一区二区三区不卡| 欧洲美女7788成人免费视频| 免费在线观看一级片| 欧美精品一区二区三区中文字幕| 欧美精品在线视频| 虎白女粉嫩尤物福利视频| 天天干在线视频论坛| 日本一区二区三区四区在线视频| 99久久精品无码一区二区毛片| 日本一区二区三区精品| 欧美午夜一区| www.久久久久| 免费成人深夜天涯网站| 视频小说一区二区| 亚洲成人久久久| 男插女视频网站| 亚洲国产91视频| 欧美在线小视频| 欧美亚洲一二三区| av在线加勒比| 亚洲福利视频一区| 免费观看中文字幕| 一级日本在线| 日本一区二区视频在线观看| 欧美一区视久久| 色资源在线观看| 99r国产精品| 精品久久久久久中文字幕动漫| 亚洲成人一二三区| 国产盗摄一区二区三区| 国产欧美精品日韩| 亚洲一区二区影视| 久久成人免费网站| 国产日韩中文在线| 91麻豆一区二区| 精品一区二区免费| 成人在线免费观看视视频| 亚洲无码精品在线观看| 精油按摩中文字幕久久| 成人黄色av网站| 99国产精品久久久久久久成人| 精品午夜久久福利影院| 92看片淫黄大片看国产片| 国产内射老熟女aaaa∵| 国产乱一区二区| 99国产盗摄| 神马午夜在线观看| 久久久美女毛片| 亚洲国产精品久久久久婷婷老年 | 在线观看国产精品视频| 理论片日本一区| 成人在线一区二区| 精品人妻一区二区三区蜜桃| 成人午夜视频福利| 九九九热999| 你懂的在线视频| 国产精品久久久久久久久图文区| 黄色a级在线观看| 毛片大全在线观看| 精品毛片网大全| 亚洲综合在线网站| 99精品国产九九国产精品| 日韩久久久久久| 黄色网址在线视频| 欧美日韩在线二区| 久久国产精品久久久久| 亚洲视频免费播放| 日本麻豆一区二区三区视频| 91社区国产高清| 天天干天天干天天干| 国产免费久久精品| 日本阿v视频在线观看| 中文在线а√在线8| 欧美日韩高清一区| 催眠调教后宫乱淫校园| 精品国产一区二区三区香蕉沈先生 | 久久久久xxxx| 久久97久久97精品免视看秋霞| 国产小视频91| 欧美日韩在线国产| 天堂精品中文字幕在线| 亚洲中国色老太| 欧美精品a∨在线观看不卡 | 日韩乱码在线观看| 美女网站一区二区| 精品国产乱码久久久久软件| 欧美成人xxx| 欧美日韩中文字幕在线| 992tv人人草| 国产一区二区区别| 97免费视频在线播放| 97人妻一区二区精品免费视频 | 亚洲伊人婷婷| 忘忧草在线日韩www影院| 91精品国产入口| 伊人网伊人影院| 伊人激情综合| 成人av.网址在线网站| 五月婷婷在线观看视频| 亚洲乱码日产精品bd| 日韩亚洲在线视频| 久久久精品国产**网站| 久久天天躁狠狠躁夜夜av| 日本黄色一级视频| kk眼镜猥琐国模调教系列一区二区| 亚洲一区二区精品在线观看| 午夜日韩成人影院| 亚洲国产一区二区三区四区| 免费在线观看亚洲| 经典三级在线一区| 亚洲一区二区在| 亚洲国产尤物| 亚洲香蕉伊综合在人在线视看| 日韩xxx高潮hd| 国产·精品毛片| 影音先锋成人资源网站| 欧美黄页免费| 少妇精69xxtheporn| 国产一级片av| 国产婷婷一区二区| 黄色一级免费大片| av资源久久| 国产精品入口福利| jzzjzzjzz亚洲成熟少妇| 日本高清视频一区二区| 一区二区三区免费在线观看视频| 1024日韩| 久久国产精品久久精品国产| 在线看片国产福利你懂的| 亚洲成色www8888| 日韩欧美三级视频| 99久久精品国产网站| 少妇无码av无码专区在线观看| 粉嫩久久久久久久极品| 久久免费视频网| 天堂成人在线视频| 亚洲高清视频中文字幕| 青青草视频网站| 一本色道久久综合亚洲精品不卡 | 日本福利片高清在线观看| 欧美性色19p| 精品人妻中文无码av在线| 免费精品99久久国产综合精品| 亚洲欧洲国产日韩精品| 在线高清欧美| 欧美国产日韩一区| 亚洲av片一区二区三区| 欧美性xxxx18| 蜜桃av免费观看| 国产成人在线看| 国产在线精品91| 极品美女一区二区三区| 成人黄色影片在线| 国产三线在线| 亚洲精品视频网上网址在线观看| 亚洲不卡在线视频| 国产精品久久久久久久岛一牛影视 | 秋霞欧美一区二区三区视频免费| 国产一区二区三区蝌蚪| 久久av综合网| 残酷重口调教一区二区| 91精品视频专区| 偷拍自拍在线看| 久久精品人人做人人爽| 日韩在线观看视频一区二区三区| 色老综合老女人久久久| 欧美日韩黄色网| 91麻豆精品一区二区三区| 久久国产这里只有精品| 1024日韩| 亚洲资源在线网| 欧洲亚洲成人| 成人午夜黄色影院| 97se综合| 欧美成人一二三| 黄网站在线观看| 欧美电影精品一区二区| 成人黄色三级视频| 午夜精品福利一区二区三区av| 黄色片网站免费| 成人免费视频视频| 久久久久久久久久一区二区| 99精品国产在热久久| 婷婷视频在线播放| 自拍偷拍欧美一区| 99九九视频| 免费一级欧美在线观看视频| 国外成人免费在线播放| 久久bbxx| 最近2019中文字幕mv免费看| 五月婷婷在线播放| 精品蜜桃在线看| 国产又大又粗又长| 在线看日韩精品电影| 日韩高清免费av| 樱花草国产18久久久久| 91狠狠综合久久久久久| av午夜一区麻豆| 影音先锋资源av| 国产精品一色哟哟哟| av网站在线不卡| 视频一区视频二区中文字幕| 免费一级特黄毛片| 国产精品jizz在线观看美国| 正在播放久久| 色婷婷热久久| 午夜精品一区二区三区在线观看| 人人精品亚洲| 精品国产一区二区三区四区精华| 日韩成人久久| 91探花福利精品国产自产在线| 日本精品在线中文字幕| 庆余年2免费日韩剧观看大牛| 91福利在线尤物| 欧美激情一区二区三区久久久| 成人日韩欧美| 久久精品国产亚洲一区二区| 在线日本视频| 日韩中文字幕在线视频| √新版天堂资源在线资源| 中文字幕av一区二区| 高清国产福利在线观看| 中文字幕不卡在线视频极品| 成人精品一区二区三区校园激情| 亚洲一区www| 成人免费在线视频网| 正在播放国产一区| eeuss影院www在线播放| 色偷偷综合社区| 黄在线免费观看| 久久99精品久久久久久噜噜| 日本成人不卡| 97视频在线观看亚洲| av日韩亚洲| 国产精品大片wwwwww| 国产69精品久久久久9999人| 国产精品日日做人人爱| 国产一区二区三区亚洲综合| 99精品欧美一区二区三区| 欧美挤奶吃奶水xxxxx| 欧美成人dvd在线视频| 成人在线免费视频观看| 欧美aaa在线观看| 一区视频在线| 北条麻妃在线观看| 高清不卡亚洲| 69av视频在线播放| 日产精品一区| 成人网页在线免费观看| 亚洲一区 二区| 免费国产一区二区| 四虎8848精品成人免费网站| 欧美日韩午夜爽爽| 亚洲精品美女| 五月婷婷六月丁香激情| 国产美女娇喘av呻吟久久| 色呦呦一区二区| 国产精品国模大尺度视频| 亚洲国产精品久| 一本到不卡精品视频在线观看 | 欧美一二三区在线| 欧美 日韩 人妻 高清 中文| 亚洲性视频网站| 先锋成人av| 国产ts人妖一区二区三区| 婷婷精品久久久久久久久久不卡| 俄罗斯精品一区二区三区| 私拍精品福利视频在线一区| 亚洲综合首页| 99视频一区| 亚洲xxx在线观看| 99久久99久久免费精品蜜臀| 亚洲第一视频区| 亚洲成人av中文| 伊人久久国产精品| 亚洲国产小视频在线观看| 日本中文字幕在线观看| 91高清视频免费| 精品伊人久久| 婷婷久久五月天| 亚洲久久一区二区| 亚欧美一区二区三区| 久久久久国产一区二区三区四区| 青娱乐国产在线| 欧美日韩精品福利| 日本大片在线观看| 欧美激情视频免费观看| 久久人体av| 欧美一区三区二区在线观看| 精品白丝av| www.51色.com| 中文字幕av在线一区二区三区| 亚洲黄色一区二区| 欧美xxxxx牲另类人与| 午夜视频在线观看网站| 日韩av成人在线| 精品国产乱子伦一区二区| 9l视频自拍9l视频自拍| 日韩高清欧美激情| 国产亚洲无码精品| 午夜av一区二区三区| www.亚洲欧美| 久久国产精品视频| 欧美成人xxxx| 亚洲 日韩 国产第一区| 性伦欧美刺激片在线观看| 中文字幕乱视频| 亚洲自拍偷拍av| 精品国自产拍在线观看| 久久精品99无色码中文字幕| 123成人网| 亚洲电影一二三区| 日本午夜精品一区二区三区电影| 泷泽萝拉在线播放| 黑人欧美xxxx| 无码国产色欲xxxx视频| 久久久久久欧美| 国产福利资源一区| 欧美视频在线免费播放| 99久久精品国产麻豆演员表| 日韩av无码中文字幕| 亚洲国产97在线精品一区| av漫画网站在线观看| 精品欧美一区二区久久久伦| 国产视频亚洲| 丰满少妇在线观看资源站| 一本久道久久综合中文字幕 | 一级全黄裸体免费视频| 中文字幕一区二区精品| 日韩欧乱色一区二区三区在线| 亚洲一区bb| 国内精品第一页| 免费网站观看www在线观| 日韩视频免费直播| www.色在线| 蜜桃久久精品乱码一区二区| 天堂在线一区二区| 亚洲欧美日韩第一页| 91精品国产入口| 国产美女高潮在线观看| 久中文字幕一区| 蜜臂av日日欢夜夜爽一区| 日本一级片免费| 日韩欧美激情四射| 乱馆动漫1~6集在线观看| 欧洲视频一区二区三区| 久久精品99久久久| 久久免费精彩视频| 日韩美女av在线| 男人亚洲天堂| av网站手机在线观看| 久久久99久久| 国产精品毛片久久久久久久av| 久久91精品国产| 天海翼亚洲一区二区三区| 国产又大又黄又粗又爽| 一区二区三区四区视频精品免费 | 色喇叭免费久久综合网| 风韵丰满熟妇啪啪区老熟熟女| 欧美色播在线播放| 久草资源在线| 精品伦理一区二区三区| 蜜臀av一级做a爰片久久| 免费日韩在线视频| 亚洲图片欧美午夜| 日韩在线观看中文字幕| 精品中文字幕av| 中文字幕视频一区二区三区久| 欧美亚洲精品在线观看| 国产精品嫩草影院一区二区| 伊人久久大香线蕉av超碰演员| 亚洲AV无码成人精品区明星换面| 欧美一级精品在线| 欧美日韩精品免费观看视完整| 国产一级片91| 欧美国产一区二区在线观看| 殴美一级特黄aaaaaa| 国产美女精彩久久|