精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

色哟哟在线观看视频| www.国产二区| 一级黄色大片网站| 欧美日本精品| 亚洲男人天堂视频| 欧美大片久久久| yellow在线观看网址| 国产欧美日本一区二区三区| 91在线国产电影| xxxx.国产| 亚洲精品二区三区| 亚洲丝袜一区在线| 图片区偷拍区小说区| www.久久.com| 天天色图综合网| 国产a级片免费看| 日韩精品系列| 国产·精品毛片| 国产精品中文字幕久久久| 日韩手机在线观看| 亚洲a一区二区三区| 亚洲欧美日本精品| 无码国产精品一区二区免费式直播 | 久久影院免费观看| a天堂中文字幕| 99ri日韩精品视频| 欧美剧情片在线观看| av网址在线观看免费| 成人av影院在线观看| 中文字幕制服丝袜一区二区三区 | 91久久国产自产拍夜夜嗨| 久久精品99北条麻妃| 一本色道久久综合亚洲精品高清| 久久av.com| 国产精品视频看看| 色天天综合网| 欲色天天网综合久久| a视频免费观看| 菁菁伊人国产精品| 精品va天堂亚洲国产| 亚洲精品一区二区18漫画| 亚洲国产天堂| 欧美丰满一区二区免费视频| 不卡av免费在线| 在线免费av资源| 五月婷婷另类国产| 91精品国产91久久久久麻豆 主演| 二区三区四区高清视频在线观看| 国产精品久久久久毛片软件| 亚洲精品国产精品久久| 六十路在线观看| 久久精品亚洲精品国产欧美| 欧美日韩无遮挡| 四虎永久在线精品免费网址| 成人av片在线观看| 精品国产一区二区三区免费| 亚洲av电影一区| 91网站黄www| 欧美日产一区二区三区在线观看| 日本人妖在线| 久久久亚洲高清| 热舞福利精品大尺度视频| 美州a亚洲一视本频v色道| 久久精品一区蜜桃臀影院| 日韩高清三级| 欧美一级二级三级区| 日韩一区中文字幕| 国产1区2区3区中文字幕| 国产嫩草在线视频| 欧美日韩国内自拍| 午夜激情福利在线| 国产精品视频首页| 337p日本欧洲亚洲大胆精品| 亚洲调教欧美在线| 国产尤物久久久| 久久影院免费观看| 日产欧产va高清| 麻豆成人在线| 成人欧美一区二区三区在线| 亚洲av无码一区二区乱子伦| 91视视频在线观看入口直接观看www| 日本高清不卡一区二区三| 91.xxx.高清在线| 亚洲精品大片www| 91传媒久久久| 成人久久精品| 亚洲国产日韩欧美综合久久| 在线视频第一页| 最新精品国产| 欧美一区二区三区…… | 7777kkk亚洲综合欧美网站| 欧美视频国产精品| 成人综合久久网| 国产精品极品在线观看| 国产一区二区三区在线免费观看| 欧美国产日韩在线观看成人| 亚洲主播在线| 91视频在线免费观看| 黄色美女网站在线观看| 亚洲乱码日产精品bd| 亚洲精品无码久久久久久| 日韩毛片网站| 亚洲视频欧洲视频| 久久久久久久蜜桃| 蜜芽一区二区三区| 精选一区二区三区四区五区| 蜜桃av在线免费观看| 欧美日韩一区二区三区在线免费观看| 第四色婷婷基地| 天天久久夜夜| 九九久久精品一区| 国产女优在线播放| 91尤物视频在线观看| 中文字幕av久久| 九九热线视频只有这里最精品| 欧美一区二区高清| 91精品久久久久久久久久久久| 欧美午夜影院| 91精品免费视频| 九色视频在线播放| 精品成人在线视频| 国产成人av片| 亚洲成av人电影| 国产精品久久久久久搜索| 天天干天天舔天天射| 亚洲欧美视频在线观看| 五月婷婷丁香色| 国产欧美日韩精品高清二区综合区| 九九久久国产精品| 国产片高清在线观看| 中文文精品字幕一区二区| 亚洲熟妇无码另类久久久| 午夜免费欧美电影| 久久久999精品视频| 伊人久久一区二区| 中文字幕国产一区| 艹b视频在线观看| 精品国产91| 国产国语刺激对白av不卡| 欧美日本韩国一区二区| 黄色成人av在线| 国产精品亚洲一区二区无码| 欧美色123| 国产激情一区二区三区在线观看| 在线黄色网页| 日韩亚洲国产中文字幕欧美| 亚洲欧美一区二区三区四区五区| 国产真实精品久久二三区| 一区二区视频在线播放| 欧美男女视频| 蜜月aⅴ免费一区二区三区| 91在线精品入口| 亚洲人成精品久久久久久| 天天色天天干天天色| 一区二区在线| 国产福利久久精品| 成年人黄色大片在线| 日韩二区三区在线| 欧美日韩在线视频播放| 欧美极品xxx| 手机免费av片| 欧美福利网址| 国产在线欧美日韩| 亚洲美女炮图| 一区二区三区视频观看| 97超碰中文字幕| 亚洲男人天堂一区| 99精品一区二区三区无码吞精| 在线视频亚洲| 亚洲春色在线视频| 日本精品视频| 69久久夜色精品国产7777 | 米奇精品一区二区三区在线观看| 国产黄色高清视频| 午夜精品福利在线| 国产美女永久免费无遮挡| 久久精品999| 一卡二卡三卡视频| 欧美日韩在线观看视频小说| 成人妇女免费播放久久久| 蜜臀av国内免费精品久久久夜夜| 亚洲精品一二区| 亚洲一区二区三区高清视频| 一区二区三区不卡在线观看| 免费看黄色aaaaaa 片| 麻豆视频一区二区| 日韩中字在线观看| 成人精品影视| 国产精品视频免费一区二区三区| 日本电影欧美片| 久久夜精品va视频免费观看| 日韩欧美电影在线观看| 56国语精品自产拍在线观看| 日韩在线视频免费播放| 最新久久zyz资源站| 国产亚洲色婷婷久久99精品91| 日韩av中文字幕一区二区| 成人免费a级片| 超碰成人久久| 国产在线一区二| 国产美女精品视频免费播放软件| 欧美亚洲另类视频| av免费在线观| 伊人久久综合97精品| 欧美一级在线免费观看| 欧美日韩国产综合一区二区三区| 国产一级淫片a| 亚洲视频免费在线观看| 尤物视频最新网址| 国产成人亚洲综合a∨婷婷图片| 男人搞女人网站| 亚洲黄色影片| 久久久久久久久久久久久国产| 国产调教一区二区三区| 国产精品污www一区二区三区| 国产一区二区色噜噜| 136fldh精品导航福利| 超碰免费公开在线| 中文字幕日韩欧美精品在线观看| 午夜视频免费在线| 精品国产凹凸成av人网站| 国产剧情久久久| 欧美亚洲国产一区二区三区| 二区视频在线观看| 五月婷婷激情综合网| 久久免费视频播放| 亚洲品质自拍视频| 亚洲熟女毛茸茸| 中文久久乱码一区二区| 在线小视频你懂的| 91污片在线观看| bl动漫在线观看| 成人网在线免费视频| 中文字幕人妻熟女人妻a片| 韩国三级在线一区| 九九热免费在线观看| 男人的天堂久久精品| 爆乳熟妇一区二区三区霸乳| 日韩视频二区| 成人免费aaa| 夜夜嗨网站十八久久| 欧美一区二区激情| 亚洲香蕉网站| 97超碰人人澡| 亚洲特色特黄| 欧美男女爱爱视频| 亚洲国产一区二区三区a毛片| 性高湖久久久久久久久aaaaa| 欧美午夜视频| 欧美成人一区二区在线观看| 亚洲久久成人| 男女午夜激情视频| 久久美女性网| 国产免费又粗又猛又爽| 久久丁香综合五月国产三级网站| 亚洲最大成人在线观看| 国产一区二区三区四区五区美女| 992kp免费看片| 高清在线成人网| 91丝袜在线观看| 国产丝袜欧美中文另类| 欧美一区二区三区粗大| 亚洲三级电影网站| 九九热这里有精品视频| 五月天国产精品| 久久国产乱子伦精品| 欧美日韩国产综合久久| hs视频在线观看| 亚洲高清在线观看| 国产三级在线免费| 精品国产一区二区三区四区在线观看| av网站在线免费看推荐| 欧美精品激情在线| 日韩影片中文字幕| 成人精品久久久| 国产乱论精品| 亚洲二区三区四区| 欧美激情1区2区3区| 日韩中文字幕在线视频观看| 人妖欧美一区二区| 无码人妻久久一区二区三区蜜桃 | 亚洲一级理论片| 亚洲人亚洲人成电影网站色| 日本熟女一区二区| 欧美影院一区二区| 国内老熟妇对白hdxxxx| 日韩av在线天堂网| 求av网址在线观看| 2019精品视频| 精品视频在线播放一区二区三区| 精品国产免费人成电影在线观...| 日韩久久综合| 2018日日夜夜| 久久精品国产一区二区三区免费看| 成人在线短视频| 国产婷婷精品av在线| 久久午夜无码鲁丝片午夜精品| 日本丶国产丶欧美色综合| 国产成人精品免费看视频| 亚洲免费人成在线视频观看| 国产在线看片| 欧洲一区二区视频| 一区二区三区欧洲区| 日韩av一区二区三区在线观看| 欧美韩日精品| 一区二区在线免费看| 97超碰欧美中文字幕| 国产精品三区在线观看| 色999日韩国产欧美一区二区| 丰满少妇在线观看bd| 日韩亚洲在线观看| 最新日韩三级| 精品国产一区二区三区麻豆免费观看完整版 | 成年人免费在线播放| 国产成人啪午夜精品网站男同| 久久中文字幕精品| 黑人巨大精品欧美一区二区免费 | 福利一区福利二区| 国产成人免费在线观看视频| 欧美性69xxxx肥| 蜜桃91麻豆精品一二三区 | 国产蜜臀在线| 91香蕉亚洲精品| 久久香蕉国产| 爱情岛论坛亚洲首页入口章节| 久久免费国产精品| 久久久久久久久影院| 亚洲国产精品嫩草影院久久| 在线视频中文字幕第一页| 91免费观看网站| 久久精品高清| 亚洲欧美日韩精品一区| 国产精品天天摸av网| 波多野结衣黄色| 国产婷婷成人久久av免费高清| 爱搞国产精品| 国内不卡一区二区三区| 激情久久久久久| 中文字幕1区2区| 亚洲午夜久久久久| 亚洲av色香蕉一区二区三区| 欧美理论片在线观看| 免费看日产一区二区三区 | 免费在线观看的电影网站| 亚洲一区二区三区成人在线视频精品| 久久精品欧美一区| 欧美丝袜在线观看| 亚洲欧美日韩在线| www.污视频| 久久久久久久国产精品| 超碰精品在线观看| 3d动漫一区二区三区| 2024国产精品视频| 91视频久久久| 搡老女人一区二区三区视频tv| 五月天色综合| 蜜臀av性久久久久蜜臀av| 高清不卡在线观看av| aaa人片在线| 在线观看中文字幕亚洲| 国产精品igao视频网网址不卡日韩| 18视频在线观看娇喘| 粉嫩在线一区二区三区视频| 国产成人免费观看视频| 日韩精品视频在线观看免费| 美女日韩欧美| 中文网丁香综合网| 国产91精品露脸国语对白| 日韩欧美大片在线观看| 亚洲老司机av| 欧美在线一级| 免费拍拍拍网站| 国产亚洲综合色| 国产有码在线观看| 国产做受高潮69| 国产一区二区三区四区大秀| 九九热精品国产| 婷婷中文字幕综合| 日本在线免费中文字幕| 国产91视觉| 日韩电影免费在线看| 中文字幕另类日韩欧美亚洲嫩草| 亚洲国产高潮在线观看| 欧美日韩女优| 欧美中日韩在线| 欧美国产一区二区| www.色日本| 国产精品日韩av| 韩国自拍一区| 国产精品久久久久久久av| 日韩亚洲国产中文字幕欧美| 在线观看精品| 欧美日韩不卡在线视频| 国产欧美日韩在线看| www.热久久| 国产日韩欧美91| 一区二区三区导航| 深夜福利影院在线观看| 亚洲欧美日韩高清| 9l视频自拍九色9l视频成人|