精品欧美一区二区三区在线观看 _久久久久国色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)

亚洲日本成人女熟在线观看 | 91视频免费在线| 国产精品成人69xxx免费视频| 国产精品视频一区二区三区| 婷婷开心激情综合| 亚洲二区自拍| 日本韩国免费观看| 免费成人你懂的| 国外成人免费在线播放| 日日操免费视频| 懂色av一区二区| 欧美色中文字幕| 天堂8在线天堂资源bt| 国产乱视频在线观看| 丁香婷婷综合色啪| 成人av电影天堂| 人人草在线观看| 欧美日韩影院| 久久精品99国产精品酒店日本| 久久久久9999| 日韩影片在线观看| 欧美亚洲免费在线一区| av免费观看大全| 永久免费网站在线| 国产精品麻豆欧美日韩ww| 久久涩涩网站| 黄色片一区二区| 国产精品亚洲午夜一区二区三区| 国产精品久久久91| 欧美国产成人精品一区二区三区| 欧美片第1页综合| 一本一道久久a久久精品逆3p| 丰满岳乱妇一区二区| 精品视频在线一区| 7777精品伊人久久久大香线蕉的| 妺妺窝人体色www在线观看| 国产福利电影在线播放| 一区二区三区在线观看国产| 国产精品jizz在线观看老狼| 在线免费观看黄色网址| 久久久久国产精品人| 精品不卡在线| 少妇一级淫片免费看| 国产xxx精品视频大全| 69174成人网| 99在线观看精品视频| 激情综合色综合久久综合| 国产伦精品免费视频| 国产精品传媒在线观看| 日韩成人免费电影| 国产99视频在线观看| 久久久精品毛片| 天堂久久一区二区三区| 日韩av电影手机在线| 天堂网视频在线| 日本 国产 欧美色综合| 国产精品r级在线| 中文字幕一区2区3区| 男女性色大片免费观看一区二区| 国产精品久久久久久久久久 | 国产乱妇乱子在线播视频播放网站| 亚洲女女做受ⅹxx高潮| www国产免费| 国产91足控脚交在线观看| 欧美日韩国产麻豆| 日本美女高潮视频| 深夜日韩欧美| 日韩欧美亚洲另类制服综合在线| 97精品人妻一区二区三区蜜桃| 欧美巨大xxxx| 色偷偷亚洲男人天堂| 国产少妇在线观看| 亚洲第一黄网| 国产v综合ⅴ日韩v欧美大片| 中文字幕欧美人妻精品| 国产伦精品一区二区三区免费 | 亚洲乱色熟女一区二区三区| 成人avav影音| 日韩欧美电影一区二区| 国产精品剧情一区二区在线观看| 一区二区高清视频在线观看| av动漫在线看| 狂野欧美性猛交xxxx| 欧美一区二区视频在线观看2020| 成人免费看片载| 最新亚洲精品| 日韩小视频网址| 日韩精品一卡二卡| 毛片基地黄久久久久久天堂| 高清一区二区三区视频| 国产视频第一页在线观看| 亚洲私人黄色宅男| 成人在线免费在线观看| 在线欧美激情| 日韩国产在线看| 免费91在线观看| 亚洲美女91| 国产啪精品视频网站| 国模无码一区二区三区| 国产精品视频看| 少妇人妻无码专区视频| 激情欧美一区二区三区黑长吊| 精品国一区二区三区| 超薄肉色丝袜一二三| 好看不卡的中文字幕| 国产91精品网站| 二区三区在线视频| 国产精品久久久久久久久快鸭 | 亚洲图片欧洲图片日韩av| av老司机在线观看| 欧美日本国产视频| 91成人破解版| 亚洲国产精品一区| 亚洲一区亚洲二区亚洲三区| 国产一级片在线| 亚洲一区二区三区三| 中文av字幕在线观看| 国产一区二区三区四区二区| 午夜精品一区二区三区av| 一级片aaaa| 欧美极品aⅴ影院| 国产免费黄色小视频| 豆花视频一区| 中文字幕在线视频日韩| 亚洲婷婷综合网| av中文字幕一区| 99re6这里有精品热视频| 国语自产精品视频在线看抢先版结局| 精品香蕉在线观看视频一| 国产精品30p| 粉嫩在线一区二区三区视频| 欧美日韩一区二区三区电影| 久久亚洲国产精品尤物| 中文字幕精品视频| 波多野结衣av无码| 国产亚洲精品久| 午夜精品久久久内射近拍高清| 国产精品白丝一区二区三区| 欧美激情精品久久久久久| 国产手机av在线| 亚洲欧美另类久久久精品2019| 手机看片一级片| 精品国产一区二区三区四区| 国产精品av电影| av在线播放网| 欧美视频在线不卡| 亚洲 欧美 国产 另类| 奇米精品一区二区三区四区 | 日韩欧美亚洲综合| 97人妻天天摸天天爽天天| 一本色道久久综合| 久久久婷婷一区二区三区不卡| 在线观看v片| 亚洲午夜小视频| 欧美成人一区二区视频| 国产精品伦理一区二区| 中文字幕亚洲影院| 欧美一区精品| 国产主播一区二区三区四区| 蜜桃在线视频| 原创国产精品91| 97超碰中文字幕| 亚洲精品你懂的| 182午夜视频| 欧美日一区二区三区在线观看国产免| 岛国一区二区三区高清视频| 理论不卡电影大全神| 亚洲视频777| 91资源在线视频| 亚洲永久免费av| 少妇饥渴放荡91麻豆| 视频一区免费在线观看| 中文字幕人成一区| 粉嫩一区二区三区四区公司1| 97在线精品视频| 国产69久久| 欧美一区二区日韩| 日韩精品无码一区二区| 中文字幕精品三区| 野花视频免费在线观看| 国产精品久久777777毛茸茸| 亚洲人一区二区| 成人中文字幕视频| 国产成人精品久久| 日本孕妇大胆孕交无码| 亚洲天堂视频在线观看| av中文字幕在线免费观看| 精品露脸国产偷人在视频| 99自拍偷拍视频| 成人av电影在线网| 亚洲欧美日本一区二区三区| 一区在线免费| 一区二区三区四区| 久久香蕉网站| 91夜夜揉人人捏人人添红杏| 亚洲同志男男gay1069网站| 久热精品视频在线观看一区| 亚州精品国产精品乱码不99按摩| 欧美日韩第一区日日骚| 久久狠狠高潮亚洲精品| 伊人一区二区三区| 亚洲一区 欧美| 91亚洲大成网污www| 特级黄色片视频| 视频一区国产视频| 欧美精品久久久久久久免费| 99精品在线免费在线观看| 免费久久久一本精品久久区| 欧美欧美在线| 国产一区私人高清影院| 伊人久久av| 国内精品美女av在线播放| 成人ww免费完整版在线观看| 亚洲性日韩精品一区二区| 欧美综合视频在线| 91精品国产综合久久久久久久久久| 天堂а√在线中文在线新版| 亚洲综合激情网| 欧美激情图片小说| 中文字幕一区二区三区四区 | 久久精品免费一区二区三区| 免费久久久一本精品久久区| 黄色美女久久久| 91精品在线国产| 91国拍精品国产粉嫩亚洲一区 | 日本视频在线观看免费| 亚洲成人免费在线观看| 强乱中文字幕av一区乱码| 国产精品久久影院| 亚洲女同二女同志奶水| 日本一区二区三区高清不卡| 法国伦理少妇愉情| 99精品欧美一区二区三区小说| 日本中文字幕有码| 国产精品69久久久久水密桃| 久久精品国产99久久99久久久| 蜜桃一区二区三区在线观看| 男女男精品视频站| 视频在线观看一区二区三区| 久久久噜噜噜www成人网| 亚洲专区在线| 超碰97人人射妻| 免费亚洲婷婷| 免费观看成人网| 美女爽到呻吟久久久久| 中文字幕日本最新乱码视频| 亚洲综合电影一区二区三区| 国产a级一级片| 久久一综合视频| 激情综合网俺也去| 欧美aaaaa成人免费观看视频| 久久久久久久久久久久91| 奇米影视在线99精品| 福利视频999| 国产精品综合一区二区三区| 亚洲精品久久久久久| 白白色亚洲国产精品| 在线观看国产网站| 久久久久久一二三区| 欧美福利第一页| 日韩理论片一区二区| 久久国产在线观看| 欧美日韩午夜视频在线观看| 精品人妻一区二区三区潮喷在线 | 日韩中文字幕观看| 日韩精品在线看| yourporn在线观看中文站| 日韩在线观看视频免费| 国产91在线视频蝌蚪| 欧美高清视频在线观看| 自拍一区在线观看| 国产精品免费一区豆花| 精品91福利视频| 精品欧美国产| 欧美日韩在线观看视频小说| 久久riav| 香蕉视频官网在线观看日本一区二区| 欧美a级黄色大片| 国产亚洲精品久久久久婷婷瑜伽| 男人插女人下面免费视频| 激情综合色丁香一区二区| 91精品又粗又猛又爽| 久久精品男人天堂av| 日本中文在线视频| 欧美日韩亚洲一区二区三区| 亚洲永久精品视频| 亚洲精品国产拍免费91在线| 3d成人动漫在线| 性视频1819p久久| 欧美黄色a视频| 黑人另类av| 91精品国产麻豆国产在线观看 | 蜜桃精品在线| 粉嫩av一区二区三区免费观看| 久久99高清| 日日噜噜夜夜狠狠久久丁香五月| 欧美中文日韩| 一区二区在线免费观看视频| 久久看人人爽人人| 激情视频在线播放| 欧美影视一区二区三区| 欧美一级片免费| 日韩中文第一页| 伊伊综合在线| 国产精品久久亚洲7777| 国产精品二区不卡| 男人舔女人下面高潮视频| 粉嫩绯色av一区二区在线观看| 国产jizz18女人高潮| 福利二区91精品bt7086| 性色av蜜臀av| 日韩有码在线电影| 成人软件在线观看| 国产一区国产精品| 黄色欧美日韩| 亚洲三级在线观看视频| 国产日产欧美一区二区三区 | 最近中文字幕免费mv2018在线 | 国产精品1luya在线播放| 在线视频福利一区| 青青青伊人色综合久久| 一本色道久久综合亚洲精品图片 | 三级在线免费观看| 美女精品自拍一二三四| 精品无码在线视频| 亚洲国产精品一区二区久久恐怖片| 久久久久无码国产精品| 这里只有精品电影| 午夜免费视频在线国产| 国产精品女主播视频| 国产一区二区三区四区五区| 日日橹狠狠爱欧美超碰| 9l国产精品久久久久麻豆| 欧美成人精品欧美一| 欧美一区二区三区视频免费 | 蜜桃在线一区二区| 欧美成人午夜激情| 精品一区二区三区四区五区| 中文字幕一区综合| 美女网站视频久久| 国产精品麻豆免费版现看视频| 欧美伊人久久大香线蕉综合69| 美丽的姑娘在线观看免费动漫| 日av在线播放中文不卡| 亚洲精品**不卡在线播he| 国内外成人免费激情视频| 91蝌蚪porny| 青青视频在线免费观看| 一本色道久久综合亚洲精品小说| 精品3atv在线视频| 欧美亚州在线观看| 玖玖国产精品视频| 天堂在线中文视频| 欧美日本国产一区| 亚洲羞羞网站| 国产精品一区在线观看| 国产欧美成人| 黄色片在线观看免费| 欧美日本视频在线| www.在线视频| 国产精品一区二区三区免费观看| 99国产精品久久久久久久| 狠狠人妻久久久久久综合蜜桃| 一本大道久久a久久综合| 91网在线播放| 成人av资源网| 久久不射网站| 91传媒免费观看| 精品久久五月天| 欧美最新精品| 国产亚洲精品久久久久久久| av亚洲精华国产精华精华| 欧美性猛交xxxx乱大交hd| 不卡av电影在线观看| 老司机aⅴ在线精品导航| 久久久久久香蕉| 亚洲三级在线免费观看| 色欲av伊人久久大香线蕉影院| 日本在线精品视频| 91精品秘密在线观看| 久久人人妻人人人人妻性色av| 91久久一区二区| 在线heyzo| 日韩福利一区二区三区| 国产乱码精品一区二区三| 性无码专区无码| 久久精品亚洲国产| 小嫩嫩12欧美| 日韩av加勒比| 色视频成人在线观看免| 中文在线观看免费| 欧美系列一区| 成人av片在线观看| 亚洲中文字幕在线观看| 性欧美长视频免费观看不卡| 日韩中文首页| 黄色国产在线观看| 日韩一区二区三区观看| 欧美aaa视频| 成人一区二区免费视频|