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

如何打造一個令人愉悅的前端開發環境(四)

開發 開發工具
本篇文件主要講結合 Webpack 和 Express 實現前后端熱更新開發。Webpack dev server 是一個輕量的node.js express服務器,實現了 webpack 編譯代碼實時輸出更新。Webpack dev middleware 是 WebPack 的一個中間件。

[[175576]]

Express 結合 Webpack 實現HMR

本篇文件主要講結合 Webpack 和 Express 實現前后端熱更新開發,如果你還不太了解webpack推薦閱讀

webpack 官網文檔

What

什么是 webpack dev server

Webpack dev server 是一個輕量的node.js express服務器,實現了 webpack 編譯代碼實時輸出更新。在前后端分離的前端項目開發中經常用到。不過這篇文章應該不會講到它。

webpack dev middleware

Webpack dev middleware 是 WebPack 的一個中間件。它用于在 Express 中分發需要通過 WebPack 編譯的文件。單獨使用它就可以完成代碼的熱重載(hot reloading)功能。

特性:

  • 不會在硬盤中寫入文件,完全基于內存實現。
  • 如果使用 watch 模式監聽代碼修改,Webpack 會自動編譯,如果在 Webpack 編譯過程中請求文件,Webpack dev middleware 會延遲請求,直到編譯完成之后再開始發送編譯完成的文件。

webpack hot middleware

Webpack hot middleware 它通過訂閱 Webpack 的編譯更新,之后通過執行 webpack 的 HMR api 將這些代碼模塊的更新推送給瀏覽器端。

HMR

HMR 即 Hot Module Replacement 是 Webpack 一個重要的功能。它可以使我們不用通過手動地刷新瀏覽器頁面實現將我們的更新代碼實時應用到當前頁面中。

HMR 的實現原理是在我們的開發中的應用代碼中加入了 HMR Runtime,它是 HMR 的客戶端(瀏覽器端 client)用于和開發服務器通信,接收更新的模塊。服務端工作就是前面提到的 Webpack hot middleware 的,它會在代碼更新編譯完成之后通過以 json 格式輸出給HMR Runtime 就會更具 json 中描述來動態更新相應的代碼。

 

 

 

How

webpack 配置

先來在webpack配置文件中引入

  1. var webpack = require('webpack'); 
  2. var HotMiddleWareConfig = 'webpack-hot-middleware/client?path=/__webpack_hmr&timeout=20000' 
  3.  
  4. module.exports = { 
  5.     context: __dirname, 
  6.     entry: [ 
  7.         // 添加一個和HotMiddleWare通信的客戶端              
  8.         HotMiddleWareConfig, 
  9.         // 添加web應用入口文件  
  10.         './client.js' 
  11.     ], 
  12.     output: { 
  13.         path: __dirname, 
  14.         publicPath: '/'
  15.         filename: 'bundle.js' 
  16.     }, 
  17.     devtool: '#source-map'
  18.     plugins: [ 
  19.         new webpack.optimize.OccurenceOrderPlugin(), 
  20.         // 在 webpack 插件中引入 webpack.HotModuleReplacementPlugin  
  21.         new webpack.HotModuleReplacementPlugin(), 
  22.         new webpack.NoErrorsPlugin() 
  23.     ], 
  24. };  

webpack-hot-middleware example webpack.config.js

在我們的開發環境中是這樣配置的。getEntries 是自動根據我們規則獲取到入口文件并加上 webpack hot middle 配置。

  1. var webpack = require('webpack'); 
  2. var path = require('path'
  3. var merge = require('webpack-merge'
  4. var baseConfig = require('./webpack.base'
  5. var getEntries = require('./getEntries'
  6.  
  7. var publicPath = 'http://0.0.0.0:7799/dist/'
  8. var hotMiddlewareScript = 'webpack-hot-middleware/client?reload=true'
  9.  
  10. var assetsInsert = require('./assetsInsert'
  11.  
  12. module.exports = merge(baseConfig, { 
  13.   entry: getEntries(hotMiddlewareScript), 
  14.   devtool: '#eval-source-map'
  15.   output: { 
  16.     filename: './[name].[hash].js'
  17.     path: path.resolve('./public/dist'), 
  18.     publicPath: publicPath 
  19.   }, 
  20.   plugins: [ 
  21.     new webpack.DefinePlugin({ 
  22.       'process.env': { 
  23.         NODE_ENV: '"development"' 
  24.       } 
  25.     }), 
  26.     new webpack.optimize.OccurenceOrderPlugin(), 
  27.     new webpack.HotModuleReplacementPlugin(), 
  28.     new webpack.NoErrorsPlugin(), 
  29.     new assetsInsert() 
  30.   ] 
  31. })  

Express 中的配置

在 Express 的配置主要就4個步驟:

  • 引入 webpack 的配置文件和 生成 webpack 的編譯器
  • 將編譯器連接至 webpack dev middleware
  • 將編譯器連接至 webpack hot middleware
  • 定義 express 配置
  1. var http = require('http'); 
  2.  
  3. var express = require('express'); 
  4.  
  5. var app = express(); 
  6.  
  7. app.use(require('morgan')('short')); 
  8.  
  9. // ************************************ 
  10. // This is the real meat of the example 
  11. // ************************************ 
  12. (function() { 
  13.   // Step 1: 引入 webpack 的配置文件和 生成 webpack 的編譯器 
  14.   var webpack = require('webpack'); 
  15.   var webpackConfig = require(process.env.WEBPACK_CONFIG ? process.env.WEBPACK_CONFIG : './webpack.config'); 
  16.   var compiler = webpack(webpackConfig); 
  17.   // Step 2: 將編譯器掛載給 webpack dev middleware 
  18.   app.use(require("webpack-dev-middleware")(compiler, { 
  19.     noInfo: true, publicPath: webpackConfig.output.publicPath 
  20.   })); 
  21.  
  22.   // Step 3: 將編譯器掛載給 webpack hot middleware 
  23.   app.use(require("webpack-hot-middleware")(compiler, { 
  24.     log: console.log, path: '/__webpack_hmr', heartbeat: 10 * 1000 
  25.   })); 
  26. })(); 
  27.  
  28. // 定義 express 配置 
  29.  
  30. app.get("/"function(req, res) { 
  31.   res.sendFile(__dirname + '/index.html'); 
  32. }); 
  33. app.get("/multientry"function(req, res) { 
  34.   res.sendFile(__dirname + '/index-multientry.html'); 
  35. }); 
  36.  
  37. if (require.main === module) { 
  38.   var server = http.createServer(app); 
  39.   server.listen(process.env.PORT || 1616, function() { 
  40.     console.log("Listening on %j", server.address()); 
  41.   }); 
  42.  

webpack-hot-middleware example server.js

區分開發和生產環境

要注意的是一定要在定義 express router 前定義 webpack 相關的中間件。還有一點是這里server.js 只是開發環境中使用,在生成環境中我們就不需要再用到它們了。所以在我們實際的使用中需要通過定義環境變量來區分開發和生產環境

  1. var NODE_ENV = process.env.NODE_ENV || 'production'
  2. var isDev = NODE_ENV === 'development'
  3.  
  4. if (isDev) { 
  5.     var webpack = require('webpack'), 
  6.         webpackDevMiddleware = require('webpack-dev-middleware'), 
  7.         webpackHotMiddleware = require('webpack-hot-middleware'), 
  8.         webpackDevConfig = require('./build/webpack.config.js'); 
  9.  
  10.     var compiler = webpack(webpackDevConfig); 
  11.  
  12.     app.use(webpackDevMiddleware(compiler, { 
  13.         publicPath: webpackDevConfig.output.publicPath, 
  14.         noInfo: true
  15.         stats: { 
  16.             colors: true 
  17.         } 
  18.     })); 
  19.  
  20.     app.use(webpackHotMiddleware(compiler)); 
  21.  
  22.     routerConfig(app, { 
  23.         dirPath: __dirname + '/server/routes/'
  24.         map: { 
  25.             'index''/'
  26.             'api''/api/*'
  27.             'proxy''/proxy/*' 
  28.         } 
  29.     }); 
  30.  
  31.     var reload = require('reload'); 
  32.     var http = require('http'); 
  33.  
  34.     var server = http.createServer(app); 
  35.     reload(server, app); 
  36.  
  37.     app.use(express.static(path.join(__dirname, 'public'))); 
  38.  
  39.     server.listen(port, function() { 
  40.         console.log('App (dev) is now running on port ' + port + '!'); 
  41.     }); 
  42. else { 
  43.     routerConfig(app, { 
  44.         dirPath: __dirname + '/server/routes/'
  45.         map: { 
  46.             'index''/'
  47.             'api''/api/*'
  48.             'proxy''/proxy/*' 
  49.         } 
  50.     }); 
  51.     app.use(express.static(path.join(__dirname, 'public'))); 
  52.  
  53.     app.listen(port, function() { 
  54.         console.log('App (dev) is now running on port ' + port + '!'); 
  55.     }); 
  56.  

supervisor

以上在前端我們實現了前端文件的熱更新,但是我們在修改服務端文件的時候,并不會使Node自動重啟,所以我們使用 supervisor 來作為監聽文件修改事件來自動重啟 Node服務。supervisor 需要 全局安裝

  1. npm install supervisor -g 

安裝完成之后我們就可以在命令行中使用我們在 package.json 的 scripts 中寫好常用的命令,之后只用 npm run xxx 即可使用

  1. "scripts": { 
  2.     "dev""export NODE_ENV=development && supervisor -w server,app.js app"
  3.     "build""node build/build.js"
  4.     "start""node app" 
  5.   },  

node-supervisor

  1. supervisor [options] <program> 
  2. supervisor -w server,app.js app  

-w 就是一個 options 配置項,它用于監聽指定目錄或者文件的變更,可以使用,分隔,監聽多個目錄或者文件,這就是監聽了 server 目錄和根目錄的 app.js 到變更之后就會重啟我們的 Express 入口文件 app。

我自己的解讀

首先解釋下他原文代碼幾個難以解釋的點:

  • getEntries 這個是我們自己的載入入口文件的統一方法,具體內容其實我前面的文章提到過,就是規定好了的,文件夾目錄下的main.js就是我們的入口文件,其他全部忽略,原因也說過,這里再說一次,規定死了,簡單,方便,利于合作。
  • var publicPath = 'http://0.0.0.0:7799/dist/'; 這里publicPath和大家平時配置Webpack的publicPath 不太一樣的原因,是需要Express能夠認出絕對地址來,因為你項目是Express大于Webpack的。
  • routerConfig 這個方法是我們自己的一個方法,內容前面文章提到過,就是我寫的一個用來加載所有路由的方法,免得重復寫各種引用。npm地址
  • export NODE_ENV=development 注意這里,windows的環境可能會失敗,可以替換成 cross-env NODE_ENV=development

其次說下這么做的原因

  • 前面文章也提到了,我司目前前端的整體架構是使用Node做中間層,那么問題就是Node渲染層會高于Webpack層,而且很多時候,不一定使用SPA的方式,要兼容這個架構,所以才需要這些配置。
  • 這個配置也很好解決了我們開發中的幾個痛點,一個Node自動重新,一個文件熱更新,結合起來,基本不需要自己不停的手動刷新瀏覽器,而且能保存當前狀態,這點很關鍵,能節省不少時間,提升開發效率。
  • 當然也有痛點,例如要多一個模板文件,而且文件目錄要根據規范來,要不是不會渲染的。

***記得這是一個連續的文章系列,只看這里你不一定能配置成功!!!!

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

2016-08-04 14:08:57

前端javascripthtml

2016-11-07 21:15:12

前后端分離expressJavascript

2016-08-11 17:09:14

Javascripthtml前端

2023-12-27 14:19:33

Python內置函數開發

2012-03-28 09:40:40

JavaScript

2021-02-04 10:22:32

前端開發技術

2018-07-20 14:30:15

2023-02-13 00:18:22

前端庫框架集合

2020-11-10 07:11:23

Linux內核補丁

2019-09-03 11:32:36

PythonLinux操作系統

2017-11-07 22:25:17

網站評測工具YSlow

2024-04-01 11:52:46

2020-02-25 22:00:22

機器人人工智能系統

2013-07-05 14:45:05

AndroidOpenGL ES開發

2020-06-18 10:03:13

在家工作疫情統一通信

2015-03-10 11:21:44

JavaScript組JavaScript

2020-05-19 10:45:31

沙箱前端原生對象

2018-01-10 12:09:12

Android開發程序員

2021-01-26 10:33:45

前端開發技術

2017-06-22 10:44:55

Linux調試器準備環境
點贊
收藏

51CTO技術棧公眾號

1769在线观看| 亚洲国产精品无码久久久| 久久国际精品| 亚洲成a人片在线观看中文| 久精品国产欧美| 免费一级a毛片| 欧美啪啪一区| 永久免费精品影视网站| 亚洲av无码久久精品色欲| 捆绑调教日本一区二区三区| 国产精品视频观看| 国产精品免费视频一区二区| 欧美成人精品网站| 好看的av在线不卡观看| 少妇久久久久久| 污污内射在线观看一区二区少妇 | 婷婷成人综合网| 先锋影音欧美| 日本人妻熟妇久久久久久 | 又黄又爽又色的视频| 天堂√中文最新版在线| 专区另类欧美日韩| 欧美在线一二三区| 亚洲精品国产一区二| 六月婷婷色综合| 国产91精品高潮白浆喷水| 国产性xxxx| 精品一区二区三| 亚洲精品成人av| 91精品在线免费视频| 99久久精品免费看| 亚洲伊人一本大道中文字幕| 无码人妻精品一区二| www.97av.com| 香蕉视频国产精品| 国产精品一二三四五| 日韩精品专区在线影院重磅| 午夜在线观看av| 在线最新版中文在线| 亚洲综合区在线| 中文字幕av导航| 永久免费av片在线观看全网站| 91久色porny| 国产精品成人一区二区三区| 国产免费视频一区二区三区| 免费在线观看视频一区| 国产精品mp4| www.久久久久久久| 蜜乳av另类精品一区二区| 国模私拍一区二区三区| 久久久久久天堂| 欧美日韩1区| 欧美成人高清视频| 丰满少妇被猛烈进入一区二区| 97在线精品| 精品国产一区二区三区在线观看 | 欧美日韩大尺度| 成人欧美大片| 欧美视频在线免费看| 精品欧美一区免费观看α√| 丰乳肥臀在线| 亚洲成a人在线观看| 国产v片免费观看| 麻豆国产在线| 日本高清免费不卡视频| 国产一级片黄色| 成人免费黄色| 91精品福利在线一区二区三区 | 欧美性生活一级| 欧美精品日韩精品| 麻豆网站免费观看| 97色成人综合网站| 日韩精品日韩在线观看| 一级片手机在线观看| 欧美日韩国产高清电影| 综合国产在线观看| 精品爆乳一区二区三区无码av| 欧美日一区二区在线观看| 欧美极品少妇xxxxⅹ裸体艺术 | 影音先锋一区| 欧美中文字幕在线播放| 中文在线资源天堂| 国产一区在线观看麻豆| 国产精品视频在线免费观看| 日本黄在线观看| 亚洲国产精品精华液2区45| 一区二区成人国产精品| 青春草视频在线| 色狠狠桃花综合| 亚洲免费在线播放视频| 欧美aaaaaaaa牛牛影院| 在线视频精品一| 青青草国产在线观看| 亚洲影院在线| 国产日韩欧美黄色| 国产综合在线播放| 国产丝袜在线精品| 国产精品va在线观看无码| 欧美日韩123区| 91精品国产入口在线| 真人bbbbbbbbb毛片| 国产精品久久久久一区二区三区厕所 | 亚洲精选在线| 国产精品视频xxxx| 亚洲国产精品久久人人爱潘金莲 | 日韩av影片在线观看| 欧美性猛交xxxx乱| 国产精品v亚洲精品v日韩精品| 欧洲亚洲在线视频| 国产丰满美女做爰| 国产日本亚洲高清| av网站手机在线观看| 久久xxx视频| 亚洲成人av片| 懂色av懂色av粉嫩av| 日韩av一区二| 国产在线一区二区三区播放| 快射视频在线观看| 91精品1区2区| 国产美女视频免费观看下载软件| 91综合视频| 国产成人综合av| 日韩一区二区三区不卡| 亚洲丝袜制服诱惑| 欧美牲交a欧美牲交aⅴ免费下载| 国产美女视频一区二区| 亚洲色图狂野欧美| 国产又大又黄视频| 成人av网站在线观看| 二级片在线观看| 国产黄色一区| 亚洲午夜女主播在线直播| 日韩特黄一级片| 国产成人精品综合在线观看| 国产精品美女在线播放| 99久久综合国产精品二区| 日韩国产欧美区| 久视频在线观看| 国产伦精品一区二区三区视频青涩 | 亚洲日本va在线观看| 日本888xxxx| 天堂成人娱乐在线视频免费播放网站 | 免费一级做a爰片久久毛片潮| 激情欧美亚洲| 国产伦精品一区二区三区四区视频| 91大神xh98hx在线播放| 欧亚洲嫩模精品一区三区| 国产精品三级在线观看无码| 最新亚洲视频| 国产福利久久精品| heyzo一区| 欧美精品一区二区精品网| 欧美做爰爽爽爽爽爽爽| 韩国v欧美v日本v亚洲v| 大桥未久一区二区| 免费一级欧美在线大片| 久久综合久久八八| 国产成人三级在线播放| 一片黄亚洲嫩模| 秘密基地免费观看完整版中文| 欧美久久成人| 国产精品美女诱惑| 成人教育av| 中文字幕欧美日韩va免费视频| 国产情侣免费视频| 国产精品久久午夜| 亚洲女人在线观看| 亚洲精选91| 日本一区美女| 青青青国产精品| 欧美成人亚洲成人| 日本精品久久久久| 欧美性少妇18aaaa视频| 欧美丰满美乳xxⅹ高潮www| 蜜臀av性久久久久蜜臀av麻豆| 影音先锋亚洲视频| 精品一区二区三区中文字幕视频| 欧美日韩xxx| 蜜臀久久99精品久久久| 日韩欧美成人区| 黄色av片三级三级三级免费看| 黄页网站大全一区二区| 国产乱淫av片杨贵妃| 亚洲图区在线| 国产在线不卡精品| 欧美午夜大胆人体| 亚洲欧美日韩国产成人| 91美女精品网站| 亚洲成av人在线观看| 天天躁日日躁aaaa视频| 国产一区二区三区黄视频| 欧美啪啪免费视频| 久久视频精品| 好吊色欧美一区二区三区| 国产资源一区| 久久久噜噜噜久久久| 福利在线午夜| 精品免费一区二区三区| 成人黄色激情视频| 亚洲观看高清完整版在线观看| 成人片黄网站色大片免费毛片| 国产在线不卡一区| 国产精品少妇在线视频| 中文字幕一区二区三三| 欧美一区二区三区电影在线观看 | 日本午夜精品视频在线观看 | 欧美中文日韩| 成年丰满熟妇午夜免费视频| 蜜桃成人av| 国产91视觉| 国产精品诱惑| 欧洲亚洲免费在线| h片在线观看| 免费97视频在线精品国自产拍| 手机av免费在线观看| 91.com在线观看| 一二三区免费视频| 精品久久香蕉国产线看观看亚洲| 国产传媒免费在线观看| 91亚洲午夜精品久久久久久| 巨乳女教师的诱惑| 紧缚捆绑精品一区二区| 人妻无码视频一区二区三区 | 国产精品久久久久久久久免费樱桃| 蜜臀视频在线观看| 国产一区二区免费看| 色婷婷狠狠18| 丝袜亚洲另类欧美| 成人在线免费在线观看| 精品动漫3d一区二区三区免费版| 免费看污污视频| 小处雏高清一区二区三区| 日本不卡二区高清三区| 欧美天堂社区| 国产精品三区在线| 国产精东传媒成人av电影| 91在线观看免费网站| 日韩漫画puputoon| 国产精品av网站| 伊人久久综合一区二区| 91av在线不卡| 国产夫妻在线| 91国内免费在线视频| heyzo在线播放| 国内揄拍国内精品| 日韩电影毛片| 日产日韩在线亚洲欧美| 女生影院久久| 国产精品96久久久久久又黄又硬| 欧美片第一页| 国产精品亚洲第一区| 久久婷婷五月综合色丁香| 国产精品专区h在线观看| 主播大秀视频在线观看一区二区| 国产精国产精品| 成人全视频免费观看在线看| 国产精品网站大全| 亚洲图片小说区| 亚洲www视频| 成人免费直播在线| 精品999在线观看| 亚洲精华一区二区三区| 日本精品一区二区三区高清 久久| 欧美精品第一区| 亚洲欧美精品在线观看| 91精品高清| 91网站在线观看免费| aⅴ色国产欧美| 成人性视频欧美一区二区三区| 久久亚洲视频| 亚洲精品综合在线观看| 丁香婷婷综合激情五月色| 好吊色视频一区二区三区| 久久亚洲免费视频| 国产精品18在线| 亚洲精品菠萝久久久久久久| 久久黄色免费网站| 日韩欧美亚洲国产一区| 一区二区三区午夜| 日韩精品一区二区三区中文精品| 天天综合天天综合| 在线播放国产精品| 伊人影院蕉久影院在线播放| 97精品视频在线播放| 日本精品不卡| 91欧美精品午夜性色福利在线| 东京久久高清| 西游记1978| 亚洲成人原创| 亚洲久久中文字幕| yourporn久久国产精品| 少妇视频一区二区| 午夜天堂影视香蕉久久| 在线观看国产成人| 亚洲国产三级网| 久久精品视频观看| 91av免费观看91av精品在线| 日韩一区二区三区四区五区| 国产视色精品亚洲一区二区| 91中文字幕精品永久在线| 尤物av无码色av无码| 精品一区二区免费| 亚洲AV无码国产精品| 亚洲欧美日本在线| 无码人妻丰满熟妇精品| 精品卡一卡二卡三卡四在线| 1024免费在线视频| 欧美在线精品免播放器视频| 久久久久久久久久久久电影| 日韩av电影免费在线观看| 亚洲人成毛片在线播放女女| 91插插插影院| 国产欧美中文在线| 亚洲 欧美 日韩 综合| 91麻豆精品国产91久久久资源速度 | 国产经典欧美精品| 国产三级短视频| 欧美色另类天堂2015| 精品美女www爽爽爽视频| 神马久久久久久| 3d欧美精品动漫xxxx无尽| 国产伦理一区二区三区| 91国语精品自产拍| 欧美特级aaa| 国产欧美日韩视频在线观看| 中文字幕亚洲精品在线| 精品久久99ma| 色www永久免费视频首页在线| 国产精品视频永久免费播放| 四虎5151久久欧美毛片| 国产中文字幕二区| 国产.欧美.日韩| 99精品久久久久| 欧美一区二区三区色| 麻豆视频在线播放| 成人激情春色网| 99久久婷婷| 污版视频在线观看| 国产精品蜜臀在线观看| 国产天堂第一区| 一区二区欧美在线| 电影一区二区| 亚洲国产精品综合| 日韩国产欧美三级| xxxx日本黄色| 日韩欧美国产网站| 亚洲欧洲综合在线| 热久久免费国产视频| 九九免费精品视频在线观看| 国产成人精品视频免费看| 99re热视频这里只精品| 中文字幕精品三级久久久| 国产视频久久久| 中文日产幕无线码一区二区| 日韩精品久久一区| 麻豆精品在线视频| 91嫩草|国产丨精品入口| 日韩一级视频免费观看在线| 国产乱码在线| 另类视频在线观看+1080p| 免费在线亚洲欧美| 亚洲一区二区三区日韩| 欧美日韩精品欧美日韩精品一综合| 黄网站在线播放| 99电影网电视剧在线观看| 亚洲大胆视频| 一级片手机在线观看| 欧美视频一区在线| 宅男在线观看免费高清网站| 成人av男人的天堂| 免费在线观看成人av| 后入内射无码人妻一区| 91精品国产欧美一区二区| 欧美xxxx做受欧美88bbw| 精品久久久久亚洲| 日韩精品乱码免费| 91日韩中文字幕| 日韩av中文字幕在线播放| 日韩性xxx| 成人高清dvd| 91视频免费看| 国产又大又粗又硬| 97久久精品人人澡人人爽缅北| 国产尤物久久久| 中文字幕久久久久久久| 精品久久久中文| 黄色在线视频网站| 国产自产精品| 六月丁香综合在线视频| 久久免费视频6| 伊人久久久久久久久久| 亚洲免费一区三区| 亚洲狼人综合干| 一个色妞综合视频在线观看| 精品久久av| 国产精品二区二区三区| 热久久一区二区| 国产精品日日夜夜| 色av吧综合网| 开心激情综合|