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

webpack2終極優化

開發 前端
webpack是當下最流行的js打包工具,這得益于網頁應用日益復雜和js模塊化的流行。webpack2增加了一些新特性也正式發布了一段時間,是時候告訴大家如何用webpack2優化你的構建讓它構建出更小的文件尺寸和更好的開發體驗。

[[196557]]

webpack是當下***的js打包工具,這得益于網頁應用日益復雜和js模塊化的流行。webpack2增加了一些新特性也正式發布了一段時間,是時候告訴大家如何用webpack2優化你的構建讓它構建出更小的文件尺寸和更好的開發體驗。

優化輸出

打包結果更小可以讓網頁打開速度更快以及簡約寬帶。可以通過這以下幾點做到

壓縮css

css-loader 在webpack2里默認是沒有開啟壓縮的,***生成的css文件里有很多空格和tab,通過配置

css-loader?minimize參數可以開啟壓縮輸出最小的css。css的壓縮實際是是通過cssnano實現的。

tree-shaking

tree-shaking 是指借助es6 import export 語法靜態性的特點來刪掉export但是沒有import過的東西。要讓tree-shaking工作需要注意以下幾點:

  • 配置babel讓它在編譯轉化es6代碼時不把import export轉換為cmd的module.export,配置如下:
  1. "presets": [ 
  2.  
  3.     [ 
  4.  
  5.       "es2015"
  6.  
  7.       { 
  8.  
  9.         "modules"false 
  10.  
  11.       } 
  12.  
  13.     ] 
  14.  
  15.  
  • 大多數分布到npm的庫里的代碼都是es5的,但是也有部分庫(redux,react-router等等)開始支持tree-shaking。這些庫發布到npm里的代碼即包含es5的又包含全采用了es6 import export 語法的代碼。

拿redux庫來說,npm下載到的目錄結構如下:

  1. ├── es 
  2.  
  3. │   └── utils 
  4.  
  5. ├── lib 
  6.  
  7. │   └── utils  

其中lib目錄里是編譯出的es5代碼,es目錄里是編譯出的采用import export 語法的es5代碼,在redux的package.json文件里有這兩個配置:

  1. main": "lib/index.js", 
  2.  
  3. "jsnext:main""es/index.js" 

這是指這個庫的入口文件的位置,所以要讓webpack去讀取es目錄下的代碼需要使用jsnext:main字段配置的入口,要做到這點webpack需要這樣配置:

  1. module.exports = { 
  2.  
  3. resolve: { 
  4.  
  5.             mainFields: ['jsnext:main','main'], 
  6.  
  7.         } 
  8.  
  9. };  

這會讓webpack先使用jsnext:main字段,在沒有時使用main字段。這樣就可以優化支持tree-shaking的庫。

優化 UglifyJsPlugin

webpack --optimize-minimize 選項會開啟 UglifyJsPlugin來壓縮輸出的js,但是默認的UglifyJsPlugin配置并沒有把代碼壓縮到最小輸出的js里還是有注釋和空格,需要覆蓋默認的配置:

  1. new UglifyJsPlugin({ 
  2.  
  3.     // 最緊湊的輸出 
  4.  
  5.     beautify: false
  6.  
  7.     // 刪除所有的注釋 
  8.  
  9.     comments: false
  10.  
  11.     compress: { 
  12.  
  13.       // 在UglifyJs刪除沒有用到的代碼時不輸出警告   
  14.  
  15.       warnings: false
  16.  
  17.       // 刪除所有的 `console` 語句 
  18.  
  19.       // 還可以兼容ie瀏覽器 
  20.  
  21.       drop_console: true
  22.  
  23.       // 內嵌定義了但是只用到一次的變量 
  24.  
  25.       collapse_vars: true
  26.  
  27.       // 提取出出現多次但是沒有定義成變量去引用的靜態值 
  28.  
  29.       reduce_vars: true
  30.  
  31.     } 
  32.  
  33. })  

定義環境變量 NODE_ENV=production

很多庫里(比如react)有部分代碼是這樣的:

  1. if(process.env.NODE_ENV !== 'production'){ 
  2.  
  3. // 不是生產環境才需要用到的代碼,比如控制臺里看到的警告     
  4.  
  5.  

在環境變量 NODE_ENV 等于 production 的時候UglifyJs會認為if語句里的是死代碼在壓縮代碼時刪掉。

使用 CommonsChunkPlugin 抽取公共代碼

CommonsChunkPlugin可以提取出多個代碼塊都依賴的模塊形成一個單獨的模塊。要發揮CommonsChunkPlugin的作用還需要瀏覽器緩存機制的配合。在應用有多個頁面的場景下提取出所有頁面公共的代碼減少單個頁面的代碼,在不同頁面之間切換時所有頁面公共的代碼之前被加載過而不必重新加載。這個方法可以非常有效的提升應用性能。

在生產環境按照文件內容md5打hash

webpack編譯在生產環境出來的js、css、圖片、字體這些文件應該放到CDN上,再根據文件內容的md5命名文件,利用緩存機制用戶只需要加載一次,第二次加載時就直接訪問緩存。如果你之后有修改就會為對應的文件生產新的md5值。做到以上你需要這樣配置:

  1.  
  2.   output: { 
  3.  
  4.     publicPath: CND_URL, 
  5.  
  6.     filename: '[name]_[chunkhash].js'
  7.  
  8.   }, 
  9.  
  10.  

知道以上原理后我們還可以進一步優化:利用CommonsChunkPlugin提取出使用頁面都依賴的基礎運行環境。比如對于最常見的react體系你可以抽出基礎庫react react-dom redux react-redux到一個單獨的文件而不是和其它文件放在一起打包為一個文件,這樣做的好處是只要你不升級他們的版本這個文件永遠不會被刷新。如果你把這些基礎庫和業務代碼打包在一個文件里每次改動業務代碼都會導致瀏覽器重復下載這些包含基礎庫的代碼。以上的配置為:

  1. // vender.js 文件抽離基礎庫到單獨的一個文件里防止跟隨業務代碼被刷新 
  2.  
  3. // 所有頁面都依賴的第三方庫 
  4.  
  5. // react基礎 
  6.  
  7. import 'react'
  8.  
  9. import 'react-dom'
  10.  
  11. import 'react-redux'
  12.  
  13. // redux基礎 
  14.  
  15. import 'redux'
  16.  
  17. import 'redux-thunk' 
  1. // webpack配置 
  2.  
  3.  
  4.   entry: { 
  5.  
  6.     vendor: './path/to/vendor.js'
  7.  
  8.   }, 
  9.  
  10.  

DedupePlugin 和 OccurrenceOrderPlugin

在webpack1里經常會使用 DedupePlugin 插件來消除重復的模塊以及使用 OccurrenceOrderPlugin 插件讓被依賴次數更高的模塊靠前分到更小的id 來達到輸出更少的代碼,在webpack2里這些已經這兩個插件已經被移除了因為這些功能已經被內置了。

除了壓縮文本代碼外還可以:

  • 用imagemin-webpack-plugin 壓縮圖片
  • 用webpack-spritesmith 合并雪碧圖
  • 對于支持es6的js運行環境使用babili

以上優化點只需要在構建用于生產環境代碼的時候才使用,在開發環境時***關閉因為它們很耗時。

優化開發體驗

優化開發體驗主要從更快的構建和更方便的功能入手。

更快的構建

縮小文件搜索范圍

webpack的resolve.modules配置模塊庫(通常是指node_modules)所在的位置,在js里出現import 'redux'這樣不是相對也不是絕對路徑的寫法時會去node_modules目錄下找。但是默認的配置會采用向上遞歸搜索的方式去尋找node_modules,但通常項目目錄里只有一個node_modules在項目根目錄,為了減少搜索我們直接寫明node_modules的全路徑:

  1. module.exports = { 
  2.  
  3.     resolve: { 
  4.  
  5.         modules: [path.resolve(__dirname, 'node_modules')] 
  6.  
  7.     } 
  8.  
  9. };  

除此之外webpack配置loader時也可以縮小文件搜索范圍。

  • loader的test正則表達式也應該盡可能的簡單,比如在你的項目里只有.js文件時就不要把test寫成/\.jsx?$/
  • loader使用include***只需要處理的文件,比如babel-loader的這兩個配置:

只對項目目錄下src目錄里的代碼進行babel編譯

  1.  
  2.     test: /\.js$/, 
  3.  
  4.     loader: 'babel-loader'
  5.  
  6.     include: path.resolve(__dirname, 'src'
  7.  
  8.  

項目目錄下的所有js都會進行babel編譯,包括龐大的node_modules下的js

  1.  
  2.     test: /\.js$/, 
  3.  
  4.     loader: 'babel-loader' 
  5.  
  6.  

開啟 babel-loader 緩存

babel編譯過程很耗時,好在babel-loader提供緩存編譯結果選項,在重啟webpack時不需要創新編譯而是復用緩存結果減少編譯流程。babel-loader緩存機制默認是關閉的,打開的配置如下:

  1. module.exports = { 
  2.  
  3.     module: { 
  4.  
  5.          loaders: [{ 
  6.  
  7.                 test: /\.js$/, 
  8.  
  9.                 loader: 'babel-loader?cacheDirectory'
  10.  
  11.          }] 
  12.  
  13.   } 
  14.  
  15. };  

使用 alias

resolve.alias 配置路徑映射。

發布到npm的庫大多數都包含兩個目錄,一個是放著cmd模塊化的lib目錄,一個是把所有文件合成一個文件的dist目錄,多數的入口文件是指向lib里面下的。

默認情況下webpack會去讀lib目錄下的入口文件再去遞歸加載其它依賴的文件這個過程很耗時,alias配置可以讓webpack直接使用dist目錄的整體文件減少文件遞歸解析。配置如下:

  1. module.exports = { 
  2.  
  3.   resolve: { 
  4.  
  5.     alias: { 
  6.  
  7.       'moment''moment/min/moment.min.js'
  8.  
  9.       'react''react/dist/react.js'
  10.  
  11.       'react-dom''react-dom/dist/react-dom.js' 
  12.  
  13.     } 
  14.  
  15.   } 
  16.  
  17. };  

使用 noParse

module.noParse 配置哪些文件可以脫離webpack的解析。

有些庫是自成一體不依賴其他庫的沒有使用模塊化的,比如jquey、momentjs、chart.js,要使用它們必須整體全部引入。

webpack是模塊化打包工具完全沒有必要去解析這些文件的依賴,因為它們都不依賴其它文件體積也很龐大,要忽略它們配置如下:

  1. module.exports = { 
  2.  
  3.   module: { 
  4.  
  5.     noParse: /node_modules\/(jquey|moment|chart\.js)/ 
  6.  
  7.   } 
  8.  
  9. };  

除此以外還有很多可以加速的方法:

  • 使用happypack多進程并行構建
  • 使用DllPlugin復用模塊

更方便的功能

模塊熱替換

模塊熱替換是指在開發的過程中修改代碼后不用刷新頁面直接把變化的模塊替換到老模塊讓頁面呈現出***的效果。

webpack-dev-server內置模塊熱替換,配置起來也很方便,下面以react應用為例,步驟如下:

  • 在啟動webpack-dev-server的時候帶上--hot參數開啟模塊熱替換,在開啟--hot后針對css的變化是會自動熱替換的,但是js涉及到復雜的邏輯還需要進一步配置。
  • 配置頁面入口文件
  1. import App from './app'
  2.  
  3.   
  4.  
  5. function run(){ 
  6.  
  7. render(<App/>,document.getElementById('app')); 
  8.  
  9.  
  10. run(); 
  11.  
  12.   
  13.  
  14. // 只在開發模式下配置模塊熱替換 
  15.  
  16. if (process.env.NODE_ENV !== 'production') { 
  17.  
  18.   module.hot.accept('./app', run); 
  19.  
  20.  

當./app發生變化或者當./app依賴的文件發生變化時會把./app編譯成一個模塊去替換老的,替換完畢后重新執行run函數渲染出***的效果。

自動生成html

webpack只做了資源打包的工作還缺少把這些加載到html里運行的功能,在龐大的app里手寫html去加載這些資源是很繁瑣易錯的,我們需要自動正確的加載打包出的資源。

webpack原生不支持這個功能于是我做了一個插件 web-webpack-plugin

具體使用點開鏈接看詳細文檔,使用大概如下:

demo(https://github.com/gwuhaolin/web-webpack-plugin/tree/master/demo/out-html)

webpack配置

  1. module.exports = { 
  2.  
  3.     entry: { 
  4.  
  5.         A: './a'
  6.  
  7.         B: './b'
  8.  
  9.     }, 
  10.  
  11.     plugins: [ 
  12.  
  13.         new WebPlugin({ 
  14.  
  15.             // 輸出的html文件名稱,必填,注意不要重名,重名會覆蓋相互文件。 
  16.  
  17.             filename: 'index.html'
  18.  
  19.             // 該html文件依賴的entry,必須是一個數組。依賴的資源的注入順序按照數組的順序。 
  20.  
  21.             requires: ['A''B'], 
  22.  
  23.         }), 
  24.  
  25.     ] 
  26.  
  27. };  

將會輸出一個index.html文件,這個文件將會自動引入 entry A 和 B 生成的js文件,

輸出的html:

  1. <html> 
  2.  
  3. <head> 
  4.  
  5.     <meta charset="UTF-8"
  6.  
  7. </head> 
  8.  
  9. </body> 
  10.  
  11. <script src="A.js"></script> 
  12.  
  13. <script src="B.js"></script> 
  14.  
  15. </body> 
  16.  
  17. </html>  

輸出的目錄結構

  1. ├── A.js 
  2.  
  3. ├── B.js 
  4.  
  5. └── index.html  

管理多頁面

雖然webpack適用于單頁應用,但復雜的系統經常是由多個單頁應用組成,每個頁面一個功能模塊。webpack給出了js打包方案但缺少管理多個頁面的功能。 web-webpack-plugin的AutoWebPlugin會自動的為你的系統里每個單頁應用生成一個html入口頁,這個入口會自動的注入當前單頁應用依賴的資源,使用它你只需如下幾行代碼:

  1. plugins: [ 
  2.  
  3.     // ./src/pages/ 代表存放所有頁面的根目錄,這個目錄下的每一個目錄被看著是一個單頁應用 
  4.  
  5.     // 會為里面的每一個目錄生成一個html入口 
  6.  
  7.     new AutoWebPlugin('./src/pages/', { 
  8.  
  9.       //使用單頁應用的html模版文件,這里你可以自定義配置 
  10.  
  11.       template: './src/assets/template.html'
  12.  
  13.     }), 
  14.  
  15.   ],  

查看web-webpack-plugin的文檔了解更多

分析輸出結果

如果你對當前的配置輸出或者構建速度不滿意,webpack有一個工具叫做webpack analyze 以可視化的方式直觀的分析構建,來進一步優化構建結果和速度。要使用它你需要在執行webpack的時候帶上--json --profile2個參數,這代表讓webpack把構建結果以json輸出并帶上構建性能信息,使用如下:

  1. webpack --json --profile > stats.json 

會生產一個stats.json文件,再打開webpack analyze 上傳這個文件開始分析。

***附上這篇文章所講到的webpack整體的配置,分為開發環境的webpack.config.js和生產環境的webpack-dist.config.js 

責任編輯:龐桂玉 來源: 前端大全
相關推薦

2017-05-02 16:29:11

Webpack技巧建議

2017-03-24 10:56:21

Webpack技巧建議

2020-09-19 21:26:56

webpack

2019-03-15 15:00:49

Webpack構建速度前端

2021-09-06 06:45:06

Webpack優化MindMaster

2011-05-16 17:36:05

SEO

2021-11-09 09:57:46

Webpack 前端分包優化

2018-04-19 15:13:53

javascriptwebpackvue.js

2019-03-26 10:02:16

WebpackJavascript前端

2021-12-24 08:01:44

Webpack優化打包

2010-03-31 10:25:41

MyEclipse

2022-06-29 10:06:27

Webpack優化技巧前端

2017-03-28 10:11:12

Webpack 2React加載

2011-07-07 13:27:59

2019-03-05 10:20:49

WebWebpack分離數據

2024-05-30 07:55:43

2022-05-14 08:35:12

Webpack前端

2023-04-27 08:35:20

Webpack 4性能優化

2010-08-17 17:15:16

DB2終極

2023-05-31 08:19:23

Webpack4Webpack 5
點贊
收藏

51CTO技術棧公眾號

日韩一区二区在线看片| 精品一二三区| 亚洲成人精品一区| 欧美日韩亚洲免费| 看黄色一级大片| 色男人天堂综合再现| 精品少妇一区二区三区视频免付费| 日韩成人手机在线| 国产尤物视频在线| 国产精品资源在线看| 性色av一区二区三区免费| 亚洲国产天堂av| 日韩精品久久久久久久软件91| 五月天亚洲精品| 亚洲国产精品综合| 丁香六月天婷婷| 男人的天堂亚洲一区| 欧美激情亚洲自拍| 国产三级aaa| 久久夜色电影| 91精品国产色综合久久不卡电影| 亚洲国产精品久久久久婷蜜芽| 成人高清免费观看mv| 成人三级伦理片| 成人妇女淫片aaaa视频| www日韩精品| 国内综合精品午夜久久资源| 一区二区成人精品| 精品国产人妻一区二区三区| 国产日韩中文在线中文字幕| 日本韩国欧美一区二区三区| 成人一区二区免费视频| 黄网站免费在线观看| 国产欧美精品一区二区三区四区| 国内一区二区在线视频观看| 99热这里只有精品1| 日韩精品电影在线| 欧美一区二三区| 国产真实夫妇交换视频| 亚洲欧美综合久久久| 在线观看中文字幕亚洲| 亚洲一区二区三区日韩| 天堂俺去俺来也www久久婷婷 | 成人午夜伦理影院| 成人福利网站在线观看11| 中文字幕一区二区人妻| 日韩精品电影在线观看| 国产精品av免费在线观看| 国产无遮挡呻吟娇喘视频| 99成人在线| 韩国三级电影久久久久久| 国产在线观看免费av| 激情偷拍久久| 午夜精品视频在线| 久久午夜免费视频| 99综合视频| 1769国产精品| 日本一区二区三区精品| 午夜在线视频一区二区区别 | 国产超碰人人爽人人做人人爱| 亚洲午夜精品久久久久久app| 欧美精品在线观看| 久久免费精彩视频| 亚洲精选国产| 亲爱的老师9免费观看全集电视剧| 免费黄色网址在线| 日韩精品免费视频人成| 国产专区精品视频| 精品人妻一区二区三区浪潮在线| 成人综合在线视频| 精品国产乱码久久久久| 男生女生差差差的视频在线观看| 久久精品一区二区三区av| 日本精品一区二区三区高清 久久| 狠狠色伊人亚洲综合网站l| 国产三级久久久| 自拍偷拍99| 9999精品成人免费毛片在线看 | 中文字幕一区二区三区不卡在线 | 在线黄色的网站| 在线观看免费成人| 91香蕉视频在线观看视频| aaa国产精品| 亚洲欧洲在线播放| 一区二区三区影视| 亚洲高清自拍| 国产精品999| 国内毛片毛片毛片毛片| 久久先锋影音av鲁色资源| 亚洲高清视频一区| 欧美日韩色网| 精品视频在线视频| 国产视频精品视频| 日韩av免费大片| 久久久久国产一区二区三区| 无码人妻aⅴ一区二区三区有奶水| 蜜臀av在线播放一区二区三区| 91久久爱成人| 国产精品一区二区三区四区色| 亚洲视频中文字幕| 免费无遮挡无码永久视频| 久久久久久久性潮| 日韩精品视频免费专区在线播放| 手机免费观看av| 亚洲精品社区| 91在线直播亚洲| 黄网在线观看| 亚洲成人在线网站| 亚洲欧美天堂在线| 国产成人影院| 午夜精品久久久久久久久久久久久| 中文字幕在线网站| 91玉足脚交白嫩脚丫在线播放| 国产又黄又爽免费视频| 久久电影tv| 精品福利av导航| 欧美另类videoxo高潮| 日韩高清在线一区| 韩国成人动漫在线观看| av香蕉成人| 欧美手机在线视频| 久久精品国产亚洲av麻豆| 欧美日韩少妇| 川上优av一区二区线观看| 国产在线观看黄| 五月婷婷欧美视频| 亚洲AV成人精品| 天天综合网91| 国产啪精品视频| 国产高清视频免费最新在线| 欧美日韩性生活视频| 久久久精品人妻一区二区三区| 日韩免费看片| 国产精品美乳在线观看| 欧美套图亚洲一区| 欧美视频中文在线看| 中文字幕三级电影| 伊人成人在线视频| 国产精品青青草| 丝袜在线观看| 日韩免费电影网站| 久一视频在线观看| 成人免费视频一区二区| 国产免费一区二区视频| 一区二区免费| 久久久免费av| 五月婷婷激情在线| 婷婷一区二区三区| 在线观看国产免费视频| 99国产精品自拍| 精品在线不卡| 伊人久久视频| 这里只有视频精品| 91精品视频免费在线观看| 国产精品剧情在线亚洲| 在线观看国产福利| 亚洲精品久久| 成人高清在线观看| free性欧美| 亚洲精品在线观看www| 在线永久看片免费的视频| 国产亚洲欧美中文| 永久免费的av网站| 欧美aⅴ99久久黑人专区| 91网免费观看| 国产伦理精品| 国产亚洲精品久久久久久777| 人人妻人人爽人人澡人人精品 | 久久99久久久| 91视频.com| 国产又黄又猛又粗又爽的视频| 天天精品视频| 国产精品区一区二区三含羞草| 国产粉嫩在线观看| 亚洲天堂成人在线| 国产露脸无套对白在线播放| 亚洲午夜久久久久久久久久久| 你懂得在线视频| 日韩1区2区3区| 日本精品免费视频| 日韩理论电影中文字幕| 国产精品一区二区三区毛片淫片 | jjzz黄色片| 久久久精品日韩| 国产又黄又爽免费视频| 欧美电影完整版在线观看| 国产精品高潮呻吟久久av黑人| 九色porny在线| 国产视频一区在线| 国产一区二区女内射| 香蕉久久一区二区不卡无毒影院| 亚洲一二三精品| 丰满少妇久久久久久久| 无码内射中文字幕岛国片| 欧美 亚欧 日韩视频在线 | 欧美激情91| 欧美极品色图| 久久免费精品| 国产精品久久久久999| 欧美日韩经典丝袜| 中文字幕无线精品亚洲乱码一区| 肥臀熟女一区二区三区| 欧美性猛片aaaaaaa做受| 国产第一页在线播放| 国产精品久久久久永久免费观看| v天堂中文在线| 精品亚洲porn| 五月婷婷狠狠操| 国产手机视频一区二区| 好色先生视频污| 少妇精品久久久一区二区三区| 99视频在线播放| 亚洲精品69| 国产精品91视频| 蜜桃视频在线观看播放| 欧美精品成人91久久久久久久| 午夜激情视频在线观看| 亚洲欧洲日产国产网站| 婷婷在线观看视频| 精品精品国产高清a毛片牛牛| 亚洲影视一区二区| 欧洲精品在线观看| 国偷自拍第113页| 亚洲成人av电影在线| 日韩在线观看视频一区二区| 国产精品久久午夜夜伦鲁鲁| 欧美特级黄色录像| 99re这里只有精品视频首页| 香蕉久久久久久av成人| 国产美女视频一区| 亚洲五月激情网| 精品一二线国产| 中文字幕丰满乱码| 久久精品国产精品青草| 亚洲男人天堂色| 日韩精品久久久久久| 日日摸天天爽天天爽视频| 中文精品在线| 国产视频九色蝌蚪| 国产亚洲精品自拍| 国产精品久久中文字幕| 亚洲精品社区| 欧美在线观看www| 免费看的黄色欧美网站| 欧美a在线视频| 久久精品观看| 妺妺窝人体色www在线观看| 视频一区免费在线观看| www.欧美日本| 麻豆精品一区二区综合av| 中文字幕第17页| 极品销魂美女一区二区三区| av噜噜在线观看| 国产成人精品三级| 极品白嫩的小少妇| 91丝袜国产在线播放| 草草影院第一页| 久久蜜桃av一区二区天堂| 国产伦理片在线观看| 国产欧美日韩不卡免费| 色一情一交一乱一区二区三区| 国产人妖乱国产精品人妖| 国产福利在线导航| 亚洲视频一二三| 久久亚洲国产成人精品性色| 姬川优奈aav一区二区| 日本久久综合网| 欧美日韩成人一区| www.av黄色| 精品偷拍各种wc美女嘘嘘| jizz在线观看中文| 欧美成人一区二区三区电影| 丁香花在线高清完整版视频| 欧美在线激情网| 日韩欧美专区| 精品国产免费人成电影在线观...| 亚洲天堂日韩在线| 综合久久国产| 亚洲久久视频| 校园春色 亚洲色图| 国产成人免费xxxxxxxx| 国产精品久久AV无码| 国产精品久久久久久久久快鸭| 麻豆国产尤物av尤物在线观看 | 欧美黑人国产人伦爽爽爽| 英国三级经典在线观看| 国产欧美精品va在线观看| aiai久久| 天天爽天天狠久久久| 黄色av日韩| 午夜dv内射一区二区| 国产另类ts人妖一区二区| 亚洲av无码一区二区三区观看 | 中文字幕人成一区| 日韩午夜av| 久国产精品视频| 久久久久久一二三区| 欧美成人片在线观看| 欧美色视频一区| 五月天久久久久久| 久久视频在线直播| 偷拍精品精品一区二区三区| 3d蒂法精品啪啪一区二区免费| 九色精品国产蝌蚪| 欧美性潮喷xxxxx免费视频看| 蜜臀av一区二区三区| 中文字幕一区二区久久人妻网站| 亚洲视频一区二区免费在线观看| 无码aⅴ精品一区二区三区| 欧美精品一区二区三区蜜臀| 老司机免费在线视频| 国产成人avxxxxx在线看| 999久久久精品一区二区| 亚洲一区三区视频在线观看| 羞羞答答国产精品www一本| 中文写幕一区二区三区免费观成熟| 国产欧美一区二区三区网站| 日韩av男人天堂| 日韩欧美美女一区二区三区| 免费在线观看av| 国产福利视频一区二区| 日韩电影不卡一区| 国产性生活免费视频| 精品在线观看视频| 久久久久久久久福利| 色视频欧美一区二区三区| av女名字大全列表| 欧美精品福利视频| 欧美一区在线观看视频| 视频一区二区视频| 精品在线亚洲视频| 欧美视频一区二区在线| 欧美视频三区在线播放| 邻家有女韩剧在线观看国语| 欧美一级视频免费在线观看| 久久97久久97精品免视看秋霞| av片在线免费| 成人小视频免费在线观看| 亚洲一区电影在线观看| 欧美探花视频资源| 幼a在线观看| 国产一区玩具在线观看| 99久久亚洲精品蜜臀| 久久人人爽av| 中文字幕欧美一区| 国产精品一二三四五区| 久久亚洲影音av资源网| 欧美日本三级| 99er在线视频| 成人精品视频一区二区三区| 日韩精品一区三区| 日韩av在线最新| 成人香蕉视频| 亚洲一区3d动漫同人无遮挡| 蜜臀av性久久久久av蜜臀妖精| 老司机精品免费视频| 欧美一区二区视频观看视频| 三级资源在线| 久久国产精品久久| 日韩电影在线一区| 欧美性生给视频| 日韩久久久精品| 超碰资源在线| 奇米精品在线| 精品一区二区三区久久| 免费三片在线播放| 日韩av一区二区在线观看| 日韩久久一区二区三区| 亚洲一区在线直播| 国产成人精品影视| 51国产偷自视频区视频| 一区二区三区国产视频| 高清不卡一区| 鲁一鲁一鲁一鲁一色| 国产欧美日韩中文久久| 中文字幕69页| 久久夜色精品国产| 全球av集中精品导航福利| 国产精品视频黄色| 一区二区激情视频| 久久经典视频| 91成人免费观看| 久久久久国内| 欧美精品一区二区成人| 亚洲欧美制服综合另类| 国内不卡的一区二区三区中文字幕| 91免费黄视频| 国产精品国产自产拍在线| 日韩中文字幕观看| 国产精品三级网站| 最新国产拍偷乱拍精品| 国产传媒视频在线| 亚洲精品国产精品乱码不99按摩 | 久久精品ww人人做人人爽| 久久福利视频一区二区| 国产精品自拍视频一区| 日韩中文字幕网| 亚洲丁香日韩| www日本在线观看| 欧美日韩成人在线一区|