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

從開發一款基于Vue技術棧的全棧熱重載生產環境腳手架,我學到了什么?

開發 項目管理
今天,我們來搞一個新東西,名字叫基于Vue技術棧的全棧熱重載生產環境腳手架。實話說,這個名字我想了很久。最終,還是以這個名字作為文章標題。我先拆分解釋下:全棧的意思是支持前后端;熱重載這個名詞相信大家很熟悉,就是頁面每次改動,不需要手動去刷新,可自動刷新;生產環境這里你可以理解成線上環境,用戶使用的環境。

[[392250]]

 瀏覽文章前

這一期,我分享給大家三點看源碼的小技巧,這也是從別的大佬那總結的。

1.被反復使用的代碼

這樣的代碼是一個軟件的重點函數,一個大神的寫法有很多精華值得學習。

2.穿越時間的代碼

如果一段代碼10年甚至15年,都還在使用。說明它的設計思想一定很棒。

3.好調試的代碼

一個程序的代碼很容易就調試成功,說明作者的項目結構能力很強,值得學習。

前言

今天,我們來搞一個新東西,名字叫基于Vue技術棧的全棧熱重載生產環境腳手架。實話說,這個名字我想了很久。最終,還是以這個名字作為文章標題。我先拆分解釋下:全棧的意思是支持前后端;熱重載這個名詞相信大家很熟悉,就是頁面每次改動,不需要手動去刷新,可自動刷新;生產環境這里你可以理解成線上環境,用戶使用的環境。

緣起

為什么會想到開發這樣的一款項目呢?我們平時可能更多地使用VueCLI或者Vite來開發Vue項目,但是如果就單純開發一個簡單的網頁,未免有點小題大作了。

這時,我們可能會用到Vue的生產環境版本。但是,這樣的話我們就不能用VueCLI、Vite那樣的熱重載功能,就需要不停的刷新網頁。如果在編輯器中對html文件增加或刪除了元素,或者是在css文件中修改了某個元素的某個樣式,然后想在瀏覽器中看到效果,通常的步驟是:把窗口切換到瀏覽器,然后按鍵盤上的F5刷新頁面。在制作頁面的時候這個動作可能會重復很多次。我們開發效率就大大地減少了。

所以,我們有必要開發一款可熱重載的生產環境腳手架。如果增加模擬數據接口服務,那就更完美了。光說不練假把式,我們就開發一款基于Vue技術棧的全棧熱重載生產環境腳手架。

實戰

一、初始化項目

首先,我們建一個空文件夾,名字可以叫gulp-vue-cli,這就是項目根文件夾。相信聰明的小伙伴可以看出,我們今天的主角是gulp。建完項目根文件夾之后,我們會使用命令快速生成package.json文件。

  1. npm init -y 

二、創建前端項目與后端項目

下一步,我們會在創建好的項目根文件夾內創建一個前端項目文件夾,名字可以叫src。另外,后端項目文件夾名字叫server。

下一步,我們先在src文件夾下創建一個前端項目,以下為目錄詳情:

  1. css ---存放樣式目錄 
  2. js ---存放邏輯文件目錄 
  3. imgs ---存放圖片目錄 
  4. index.html ---項目主頁面 

index.html

  1. <!DOCTYPE html> 
  2. <html lang="en"
  3.   <head> 
  4.     <meta charset="UTF-8" /> 
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 
  7.     <title>Simple Vue</title> 
  8.     <link rel="icon" href="/imgs/favicon.ico" /> 
  9.     <link rel="stylesheet" href="/css/index.css" /> 
  10.   </head> 
  11.   <body> 
  12.     <div id="app"
  13.       <img src="/imgs/logo.png" alt="" /> 
  14.       <p class="mes">{{ message }}</p> 
  15.       <p class="author">{{txt}}</p> 
  16.       <p class="status">{{status}}</p> 
  17.       <button @click="sendData">send</button> 
  18.       <p>{{resTxt}}</p> 
  19.     </div> 
  20.   </body> 
  21.   <script src="/js/vue.js"></script> 
  22.   <script type="module"
  23.     import {addTxt} from './js/utils.js'
  24.     const app = new Vue({ 
  25.       el: "#app"
  26.       data: { 
  27.         message: "Hello Simple Vue!"
  28.         resTxt:""
  29.         status:""
  30.         txt:addTxt() 
  31.       }, 
  32.       methods: { 
  33.         sendData() { 
  34.           fetch("http://localhost:3000/send/", { 
  35.             method: "POST"
  36.             headers: { 
  37.               "Content-Type""application/x-www-form-urlencoded"
  38.             }, 
  39.             body: `username=maomincoding&url=https://www.maomin.club`, 
  40.           }) 
  41.             .then((response) => response.json()) 
  42.             .then((response) => { 
  43.               this.resTxt = response; 
  44.             }) 
  45.             .catch((err) => { 
  46.               console.error(err); 
  47.             }); 
  48.         }, 
  49.       }, 
  50.       mounted() { 
  51.         fetch("http://localhost:3000/mes/", { 
  52.           method: "GET"
  53.           headers: { 
  54.             "Content-Type""application/x-www-form-urlencoded"
  55.           }, 
  56.         }) 
  57.           .then((response) => response.json()) 
  58.           .then((response) => { 
  59.             this.status = response; 
  60.           }) 
  61.           .catch((err) => { 
  62.             console.error(err); 
  63.           }); 
  64.       }, 
  65.     }); 
  66.   </script> 
  67. </html> 

這個頁面很簡單,主要使用Vue.js渲染文本以及調用接口后渲染文本。調用接口的方法我們這里使用fetch方法,使用詳情大家可以到MDN網址查看:

  1. https://developer.mozilla.org/zh-CN/docs/Web/API/Fetch_API 

建立完前端項目了,我們下一步就開始建立后端項目,我們這里使用的是Node.js技術棧。server文件夾下只有一個主文件app.js

app.js

  1. const express = require('express'); 
  2. const bodyParser = require('body-parser'
  3. const app = express();    
  4.  
  5. app.use(express.static("./src")); 
  6.  
  7. app.use(bodyParser.urlencoded({ extended: true })); 
  8. app.use(bodyParser.json()); 
  9.  
  10.  
  11. // 跨域 
  12. app.all('*'function (req, res, next) { 
  13.     res.header("Access-Control-Allow-Origin""*"); 
  14.     res.header("Access-Control-Allow-Headers""X-Requested-With"); 
  15.     res.header("Access-Control-Allow-Methods""PUT,POST,GET,DELETE,OPTIONS"); 
  16.     res.header("X-Powered-By"' 3.2.1'); 
  17.     res.header("Content-Type""application/json;charset=utf-8"); 
  18.     next(); 
  19. }); 
  20.  
  21. //自定義接口 
  22. app.get("/mes"function (request, response) { 
  23.     response.send({ 
  24.         status:"success"
  25.         mes:"渲染頁面成功!" 
  26.     }); 
  27. }) 
  28.  
  29. app.post("/send",function(request,response){ 
  30.     response.send(request.body); // echo the result back 
  31. }) 
  32.  
  33. app.listen(3000, function () { 
  34.     console.log("服務器運行中"); 
  35. }); 

這里,我們也簡單地介紹一下里面涉及的知識點。express相信接觸Node的伙伴們一定知道。Express 是一個保持最小規模的靈活的Node.js,Web 應用程序開發框架,為 Web 和移動應用程序提供一組強大的功能。這里,我們主要使用它創建幾個API接口,供前臺調用。body-parser是在處理程序之前在中間件中解析傳入的請求體,可以在request.body中獲取從前臺傳來的數據。

在此之前,你需要安裝以下兩個依賴:

  1. npm install express 
  1. npm install body-parser -D 

三、開發前后端熱重載功能

前后端項目我們已經建立完成,下面我們將把重點放到如何開發熱重載功能上。

我會先在項目根目錄下創建一個gulpfile.js文件。然后,我會列出我們需要了解的知識點有哪些。

  • gulp
  • browser-sync
  • gulp-nodemon

gulp

  • gulp是基于Node.js的前端自動化構建工具,能自動化地完成 JavaScript/sass/html/image/css 等文件的的測試、檢查、合并、壓縮混淆、格式化、瀏覽器自動刷新、部署文件生成等操作,同時可以對文件進行監聽,如果文件有改動,可以自動處理生成新的文件。所以gulp解決了開發效率(修改代碼后自動更新頁面)、資源整合(代碼的壓縮合并)、代碼質量(代碼的檢查 自動化測試)、代碼轉換(es6-->es5)等問題

這里,我們需要知道gulp是怎樣創建任務的。

  1. const gulp =  require('gulp'); 
  2. // 創建任務 
  3. // 第一個參數: 任務名 
  4. // 第二個參數: 回調函數,當我們執行任務時就會執行這個函數 
  5. gulp.task('test'function(){ 
  6.     console.log('test'); 
  7. }) 
  1. //執行任務: gulp 任務名 
  2. gulp test 

browser-sync

這里,我們可以重點介紹下它,它就是我們今天要找的主角。

在找它之前,我也找到其他可以實現自動刷新瀏覽器的插件,如:LiveReload,它也可以自動刷新頁面,實時預覽html效果。但是,我為什么沒用LiveReload呢?最痛心的一點是你需要在瀏覽器上安裝LiveReload插件,另外在本地你也得安裝一個LiveReload軟件。如果你是用的是VScode編輯器,需要在插件中心安裝LiveReload插件。默認情況下,瀏覽器和編輯器并不會自動為你激活LiveReload的功能,你需要手動配置一些東西。所以這么麻煩,干脆看看還有沒有別的解決方案。

最終,我找到了它——browser-sync,以下是官方對它的解釋:

  • Browsersync能讓瀏覽器實時、快速響應您的文件更改(html、js、css、sass、less等)并自動刷新頁面。更重要的是 Browsersync可以同時在PC、平板、手機等設備下進項調試。您可以想象一下:“假設您的桌子上有pc、ipad、iphone、android等設備,同時打開了您需要調試的頁面,當您使用browsersync后,您的任何一次代碼保存,以上的設備都會同時顯示您的改動”。無論您是前端還是后端工程師,使用它將提高您30%的工作效率。

當然,學習它之前,你需要注意browser-sync是基于Node.js的, 是一個Node模塊, 如果您想要快速使用它,也許您需要先安裝一下Node.js。

然后,你可以全局安裝它。

  1. npm install -g browser-sync 

也可以在本地項目下安裝它。

  1. npm install --save-dev browser-sync 

如果你想更加深度地了解它,可以在瀏覽器上搜索以下網址:

  1. http://www.browsersync.cn/docs/ 

browser-sync可以單獨使用,也可以集成到gulp和grunt這樣的構建工具中使用,在Node.js項目中還能結合gulp-nodemon實現全棧的自動刷新。

gulp-nodemon

nodemon是一款非常實用的工具,用來監控你 Node.js 源代碼的任何變化和自動重啟你的服務器。 gulp-nodemon幾乎和普通gulp-nodemon完全一樣,但它是為執行Gulp任務而設計的。

介紹完我們需要了解的知識點之后,我們就深入到gulpfile.js文件中,看看是如何實現前后端熱重載的。

  1. const gulp = require('gulp'); 
  2. const browserSync = require('browser-sync').create(); 
  3. const nodemon = require('gulp-nodemon'); 
  4.  
  5. gulp.task('server'function() { 
  6.     nodemon({ 
  7.         script: 'server/app.js'
  8.         ignore: ["gulpfile.js""node_modules/"], 
  9.         env: { 
  10.             'NODE_ENV''development' 
  11.         } 
  12.     }).on('start'function() { 
  13.         browserSync.init({ 
  14.             proxy: 'http://localhost:3000'
  15.             files: ["src/**"], 
  16.             port:8080 
  17.         }, function() { 
  18.             console.log("browser refreshed."); 
  19.         }); 
  20.     }); 
  21. }); 

在此之前,你需要安裝以下三個依賴:

  1. npm install gulp -D 
  1. npm install browser-sync -D 
  1. npm install gulp-nodemon -D 

安裝完依賴之后,我們就來解讀下以上代碼。

require('browser-sync').create();這行代碼的意思是創建browser-sync實例,并允許您創建多個服務器或代理。

gulp.task()代碼段作用是創建任務。

  1. // 創建任務 
  2. // 第一個參數: 任務名 
  3. // 第二個參數: 回調函數,當我們執行任務時就會執行這個函數 
  4. gulp.task('test'function(){ 
  5.     console.log('test'); 
  6. }) 

nodemon中是一個配置對象。

  • script:指向服務器文件地址。
  • ignore:忽略部分對程序運行無影響的文件的改動,nodemon只監視js文件,可用ext項來擴展別的文件類型。
  • env:運行環境 development 是開發環境,production 是生產環境。

這里,我們通過gulp-nodemon的start事件來觸發browser-sync的啟動。

browserSync.init()這行代碼的init方法中,第一個參數我們需要傳入一個配置對象,第二個參數我們需要定義一個回調方法。

  • proxy:代理服務端的接口地址。
  • files:需要監聽的文件目錄。
  • port:端口號。

這里需要注意的是,如果是修改了服務端的js文件,會先通過nodemon重啟應用,這時瀏覽器不會刷新,要再保存一下修改的文件,browser-sync才會顯示出修改后的效果。

瀏覽效果

至此,我們的項目就大功告成了,在瀏覽之前呢!我們需要這樣一個操作。打開package.json文件。定義一個啟動命令,方便我們每次啟動。

  1. "scripts": { 
  2.   "dev""gulp server" 
  3. }, 

之后,我們就可以這樣啟動項目了。

  1. npm run dev 

在瀏覽器上。

打開成功,現在我們改動下代碼,看看是否可以熱重載。

測試成功,這樣我們就安心地開發自己的代碼了,效率自然就提高了。之前那樣不停地F5,有沒有覺得這個動作對程序員來說很沒有創造力呢?現在可以減輕左手和F5鍵的負擔了。

結語

謝謝閱讀,希望沒有浪費你的時間。如果覺得有幫助!

源碼地址:

https://gitee.com/maomincoding/gulp-vue-cli

 

責任編輯:姜華 來源: 前端歷劫之路
相關推薦

2025-05-26 08:45:00

AvueVue.js前端

2021-12-23 10:35:32

SpringCloud腳手架架構

2022-07-18 07:58:46

Spring工具工具類

2016-08-10 14:59:41

前端Javascript工具

2021-03-09 09:55:02

Vuejs前端代碼

2024-07-25 08:43:35

2021-08-11 08:41:20

全棧開發技術架構前端

2020-02-22 15:01:51

后端前端開發

2022-02-12 00:00:00

架構

2025-01-16 14:11:55

開發框架LikeAdmin

2021-04-28 16:10:48

開發腳手架 Spring

2017-07-21 09:56:46

Webpack3 Vue.js腳手架

2021-04-25 05:31:33

React.js項目FastReactAp

2016-09-07 15:35:06

VueReact腳手架

2022-03-27 09:06:04

React類型定義前端

2024-11-26 00:40:05

2021-01-07 05:34:07

腳手架JDK緩存

2020-12-31 10:47:03

開發Vuejs技術

2016-01-18 10:06:05

編程

2021-10-08 06:10:43

前端技術Vue
點贊
收藏

51CTO技術棧公眾號

经典三级在线| 91久久久久久久久久久久久久| 欧美人与性动交α欧美精品图片| 成人免费电影视频| 欧美亚洲第一页| 国产人与禽zoz0性伦| 给我免费播放日韩视频| 国产精品亚洲d| 丁香啪啪综合成人亚洲小说| 2019中文字幕在线观看| 少妇高潮惨叫久久久久| 精品国产影院| 欧美男生操女生| 国产黄视频在线| 1024免费在线视频| av网站免费线看精品| 国产日韩欧美另类| 精品成人av一区二区在线播放| 欧美顶级大胆免费视频| 亚洲第一免费播放区| 成人黄色一级大片| 亚洲最大成人| 亚洲一级在线观看| 亚洲精品久久区二区三区蜜桃臀| 亚洲精品国产手机| 美国三级日本三级久久99| 韩国19禁主播vip福利视频| 国产视频123区| 欧美激情网址| 日韩美一区二区三区| www.com黄色片| 中老年在线免费视频| 亚洲综合男人的天堂| 亚洲日本无吗高清不卡| 深夜福利免费在线观看| 国产成人8x视频一区二区| 国产欧美一区二区三区久久| 国产精品777777| 亚洲久久一区二区| 欧美理论电影在线播放| 999福利视频| 精品一区二区三| 亚洲精品影视在线观看| 国产精品一区二区人妻喷水| 精品视频在线观看免费观看| 欧美日韩久久久久久| 三年中国国语在线播放免费| 两个人看的在线视频www| 亚洲影院久久精品| 久久久久九九视频| 国产精选久久久久久| 中文字幕精品无| 久久亚洲一区| 日本精品视频网站| 欧美精品一二三四区| 男人天堂欧美日韩| 欧美在线一级va免费观看| 国产污污视频在线观看| 亚洲欧美日韩国产| 国产成人精品一区二区在线| 亚洲黄网在线观看| 日本特黄久久久高潮| 国产精品久久久久久久久久ktv| 中文在线第一页| 日日夜夜精品免费视频| 国产精品精品久久久久久| 日韩久久久久久久久久| 日韩激情视频网站| 国产一区二区丝袜高跟鞋图片| 亚洲综合精品国产一区二区三区 | 神马午夜伦理影院| sm国产在线调教视频| 一区二区三区在线视频免费观看| 日本国产中文字幕| 日韩欧美一中文字暮专区| 日韩欧美aaa| 无需播放器的av| 欧美日韩破处视频| 精品免费日韩av| 中文字幕在线免费看线人| 亚洲人成精品久久久| 在线日韩av观看| 日韩精品一区二区亚洲av性色| 欧美日韩日本国产亚洲在线 | 手机成人在线| 黄色精品免费看| 亚洲福中文字幕伊人影院| 97国产精东麻豆人妻电影| 日韩三区免费| 日韩午夜激情av| 久久久久中文字幕| 亚洲精品免费一区亚洲精品免费精品一区| 一区二区三区日本视频| 欧美va亚洲va国产综合| 一级性生活毛片| 久久中文字幕av一区二区不卡| 欧美久久久精品| 五月天综合激情网| 国产一区二区在线视频| 国精产品99永久一区一区| 成a人v在线播放| 亚洲综合在线五月| 日本在线观看免费视频| 国产精品高潮呻吟久久久久| 国产一区二区美女视频| 精品在线视频观看| 青青草国产成人99久久| 国产伦精品一区二区三区免| 国产福利在线| 亚洲成人免费电影| 亚洲人视频在线| 日韩超碰人人爽人人做人人添| 日日噜噜噜夜夜爽亚洲精品| 九一国产在线观看| 国产成人精品免费| 亚洲欧美日韩精品久久久 | www.日日夜夜| 国产视频一区在线播放| 屁屁影院ccyy国产第一页| 久久91视频| 亚洲欧美日韩精品久久亚洲区 | 国产免费一区二区三区在线能观看 | 欧美福利第一页| 一区在线免费观看| 成人在线国产精品| 国产二区视频在线观看| 欧美日韩免费在线观看| 伊人影院在线观看视频| 91亚洲国产高清| 一区二区在线观看免费视频播放| 成人做爽爽免费视频| 欧美女同网站| 午夜成人在线视频| 性一交一黄一片| 一区二区日韩欧美| 国产精品一区二区三区久久| 六十路在线观看| 特一级黄色录像| 看片网站欧美日韩| 日韩av不卡在线播放| 超级碰碰久久| 日韩大片在线观看视频| 国产乡下妇女做爰毛片| 国产99久久久精品| 日本一道在线观看| 国产一区二区| 久久视频国产精品免费视频在线| 91成年人视频| 国产精品久久久久国产精品日日| 国产精品乱码久久久久| 欧美日韩国产高清电影| 国产精品mp4| 97在线观看免费观看高清 | 成人欧美一区二区三区视频网页| 一区二区在线播放视频| 精品国产精品| 国产精品一区二区久久久| 香蕉视频免费在线播放| 欧美日韩国产美女| 国产精品成人69xxx免费视频| 麻豆91精品91久久久的内涵| 亚洲精品一品区二品区三品区 | 午夜一区不卡| 欧美三级电影在线播放| 亚洲精品国产嫩草在线观看| 中文字幕亚洲自拍| 精品国产无码一区二区三区| 亚洲综合激情网| 日韩aaaaa| 老**午夜毛片一区二区三区| 日本一区二区三区免费观看| 久久亚洲人体| 久久99精品国产99久久6尤物 | 亚洲综合精品视频| 国产精品毛片a∨一区二区三区| 日韩av在线中文| 中文字幕日韩一区二区不卡| 国产精品免费看一区二区三区| 国产色播av在线| 亚洲欧洲成视频免费观看| 中文文字幕一区二区三三| 亚洲人成精品久久久久| 亚洲色偷偷色噜噜狠狠99网| 男人的天堂亚洲| 中文字幕中文字幕一区三区| 成功精品影院| 国产99久久精品一区二区永久免费| 99re在线视频| 精品国产乱码久久久久久夜甘婷婷 | 深夜福利视频在线观看| 欧美日韩国产一级| 日本天堂在线视频| 中文一区在线播放| 香蕉视频免费网站| 久久综合图片| 伊人再见免费在线观看高清版 | 欧美大片免费观看网址| 久久久av一区| 欧美偷拍视频| 欧美一区二区三区小说| 国产精品免费精品一区| 亚洲人成亚洲人成在线观看图片| 亚洲av成人片无码| 精品一区二区三区在线播放| 日韩欧美视频网站| 在线国产一区二区| 日本10禁啪啪无遮挡免费一区二区| 欧美国产中文高清| 国产精品va在线| 国产精品13p| 久久躁日日躁aaaaxxxx| 国产亚洲依依| 亚洲国产精彩中文乱码av在线播放 | 欧美69xxx| 亚洲女同精品视频| 亚洲乱色熟女一区二区三区| 99ri日韩精品视频| 在线观看欧美成人| 天天操天天干天天爱| 欧美久久一二区| jizz国产在线观看| 亚洲成人av一区二区| 在线观看亚洲网站| 国产精品人妖ts系列视频| 91视频啊啊啊| www.一区二区| 亚洲精品成人无码毛片| 极品少妇一区二区| 手机看片福利日韩| 久久黄色影院| av之家在线观看| 亚洲午夜激情在线| 欧美一二三不卡| 天天av综合| 一区二区三区电影| 日韩精品一区二区久久| 日本成人三级| 精品freesex老太交| 欧美精品一区在线发布| 天堂av一区二区三区在线播放| 国产精品国产精品| caoporn成人| 99视频免费观看| 日韩视频一二区| 亚洲a中文字幕| 国产麻豆精品| 91亚洲精品一区| 国产麻豆一区二区三区| 亚洲va欧美va国产综合剧情 | 欧美色图天堂网| 亚洲精品一区二三区| 在线视频中文字幕一区二区| 午夜一区二区三区四区| 欧美午夜影院一区| 在线免费a视频| 欧美精品一二三区| 国产免费久久久| 精品欧美久久久| 人妻少妇精品无码专区| 亚洲国产欧美久久| 青草久久伊人| 一区二区三区动漫| 久久bbxx| 欧美国产激情18| 成人在线免费观看黄色| 777午夜精品福利在线观看| 日韩伦理福利| 国产精品三级在线| 高清久久精品| 国产伦视频一区二区三区| 日韩av中文字幕一区| 台湾成人av| 五月婷婷激情五月| 中文幕一区二区三区久久蜜桃| 成人精品一二三区| 亚洲免费电影在线| 日本三级欧美三级| 色婷婷av一区二区| 国产精品嫩草影院精东| 日韩精品一区二区三区中文不卡| 色窝窝无码一区二区三区| 亚洲精品中文字幕女同| a天堂在线资源| 久久综合久久88| 性欧美又大又长又硬| 国产精品日韩专区| 国内不卡的一区二区三区中文字幕| 成人av网站观看| 欧美人与物videos另类xxxxx| 青青草原国产免费| 亚洲美女91| 亚洲综合日韩欧美| 播五月开心婷婷综合| 成人免费av片| 日日夜夜一区二区| 日韩va在线观看| caoporen国产精品视频| www.日本高清视频| 一区二区三区免费观看| 在线视频一区二区三区四区| 91精品久久久久久久久99蜜臂| 五月婷婷丁香网| 精品国产一区二区三区在线观看| 2020国产在线| 国产综合久久久久| 亚洲人成网www| 少妇一晚三次一区二区三区| 视频在线观看一区| 精品伦一区二区三区| 国产精品久久久久久久久图文区| 91精品国产高潮对白| 9191久久久久久久久久久| 日韩专区一区二区| 久久青草精品视频免费观看| 色综合久久久| 欧美精品免费观看二区| 激情成人亚洲| 欧美激情第四页| 国产精品视频九色porn| 久久狠狠高潮亚洲精品| 91精品国产麻豆| 99中文字幕一区| 日韩女优人人人人射在线视频| 综合激情网...| 色哺乳xxxxhd奶水米仓惠香| 麻豆久久久久久| 卡一卡二卡三在线观看| 一本色道亚洲精品aⅴ| 欧美自拍偷拍第一页| 色综合久久中文字幕综合网小说| 韩国精品视频在线观看| 日本亚洲导航| 水野朝阳av一区二区三区| 欧美高清激情brazzers| 精品国产亚洲av麻豆| 久久久国产视频91| 久久影视精品| 亚洲一卡二卡| 美女看a上一区| 手机av在线不卡| 欧美色图免费看| 香蕉视频在线播放| 国产欧美 在线欧美| 成人中文在线| 亚洲精品久久久中文字幕| 国产亲近乱来精品视频| 男操女视频网站| 伊人一区二区三区久久精品| 国产私拍福利精品视频二区| 日韩欧美亚洲日产国| 日本午夜一本久久久综合| 日韩av网站在线播放| 欧美偷拍一区二区| 午夜免费视频在线国产| 91欧美视频网站| 欧美午夜一区| 中文字幕乱码在线| 精品成人av一区| 精品视频二区| 国产精品自在线| 外国成人免费视频| 麻豆传媒在线看| 亚洲成人在线网站| 日本一区高清| 国产精品久久久久久久久免费 | 亚洲熟女毛茸茸| 51精品秘密在线观看| 丝袜美女在线观看| 久久国产精品久久精品国产| 日韩精品一级二级| 老司机精品免费视频| 日韩欧美一区在线观看| 极品美鲍一区| 日韩欧美一区二区三区久久婷婷| 久久电影网站中文字幕| 久草成人在线视频| 精品小视频在线| 日韩综合av| 男女激情无遮挡| 国产精品国模大尺度视频| 精品人妻一区二区三区含羞草| 97婷婷大伊香蕉精品视频| 欧美在线色图| 国产国语老龄妇女a片| 色综合天天综合在线视频| 麻豆传媒免费在线观看| 国产综合18久久久久久| 蜜臂av日日欢夜夜爽一区| 免费网站看av| 国产一区二区动漫| 99这里只有精品视频| www.99av.com| 亚洲福利视频三区| 3p在线观看| 久久久久久久久久久久久久一区 | 成人观看高清在线观看免费| 黑人一区二区| 中文字幕精品亚洲| 日韩经典中文字幕| 成人短视频软件网站大全app|