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

基于Gulp的簡易前端自動化工程搭建

開發 前端 自動化
上個月月底在公司提出關于前后端分離的想法,并且開始研究關于前后端分離,前端工程化,模塊化的一些東西,上周開始我準備自己開始寫基于Gulp流的前端工程文件,這兩天有時間,著手開始實現這個想法,但是寫的過程中,遇到了一些問題,正是因為這些問題的解決讓我對Gulp的流式處理有了更深的理解,寫下這篇文章,分享一下這倆天我在寫Gulp的時候學到的一些東西。

上個月月底在公司提出關于前后端分離的想法,并且開始研究關于前后端分離,前端工程化,模塊化的一些東西,上周開始我準備自己開始寫基于Gulp流的前端工程文件,這兩天有時間,著手開始實現這個想法,但是寫的過程中,遇到了一些問題,正是因為這些問題的解決讓我對Gulp的流式處理有了更深的理解,寫下這篇文章,分享一下這倆天我在寫Gulp的時候學到的一些東西。

準備工作

安裝Node

首先Gulp是基于Nodejs的,所以安裝Nodejs是前提,Node可以說是前端神器,基于Node有各種各樣的工具,正是因為這些工具讓我們非常方便的構建前端工程。

更改Node插件默認安裝位置(非必需)

我自己一般不喜歡在C盤狀太多與系統無關的東西,而通過Node自帶的npm安裝的插件默認在C盤,但是我將Node安裝到D盤后,想讓插件就安裝在Nodejs的主目錄下,怎么辦呢?

  • 在Node主目錄下新建"node_global"及"node_cache"兩個文件夾
    1. 啟動cmd,輸入 
    2. //后面的設置目錄根據你的目錄結構自行更改 
    3. npm config set prefix "D:\Program\nodejs\node_global" 
    4. npm config set cache "D:\Program\nodejs\node_cache" 
  • 關閉cmd,打開系統對話框,“我的電腦”右鍵“屬性”-“高級系統設置”-“高級”-“環境變量”。
  • 進入環境變量對話框,在系統變量下新建"NODE_PATH",輸入"D:Programnodejsnode_globalnode_module"。 由于改變了module的默認地址,所以上面的用戶變量都要跟著改變一下(用戶變量"PATH"修改為"D:Programnodejsnode_global"),要不使用module的時候會導致輸入命令出現“xxx不是內部或外部命令,也不是可運行的程序或批處理文件”這個錯誤。

經過這四步的設置就可以讓安裝的Node插件放在Nodejs的主目錄了。

安裝Gulp

  1. //全局安裝Gulp 
  2. npm install -g gulp 
  3. //在項目中安裝Gulp 
  4. npm install --save-dev gulp  

運行gulp -v,如果不報錯,表示安裝成功

然后在命令行運行

  1. npm init 

讓項目生產package.json文件

搭建工程

眾所周知,在開發工程中有開發和上線兩個過程,在開發中,我們一般需要自動刷新以及實時編譯,但是如果上線,我們就需要考慮很多優化的東西,比如文件編譯壓縮,靜態資源放緩存處理等等問題,我自己搭的這個工程只涉及到文件編譯壓縮,實時刷新,靜態資源放緩存這三個基本的流程。

在項目的目錄結構如下 

  1. -------------------project 
  2.     | 
  3.     |--------------dist (該文件夾為打包生成的) 
  4.     |   | 
  5.     |   |----------css 
  6.     |   |   | 
  7.     |   |   |------index-9dcc24fe2e.css 
  8.     |   | 
  9.     |   |----------js 
  10.     |   |   | 
  11.     |   |   |------index-9dcc24fe2e.js 
  12.     |   |----------index.html  
  13.     | 
  14.     |--------------src 
  15.     |   | 
  16.     |   |----------scss 
  17.     |   |   | 
  18.     |   |   |------index.scss 
  19.     |   | 
  20.     |   |----------js 
  21.     |   |   | 
  22.     |   |   |------index.js 
  23.     |   | 
  24.     |   |----------index.html 
  25.     |--------------gulpfile.js 
  26.     |--------------package.json  

開發所用流程

文件編譯

在工程中準備使用scss作為css的預編譯,所以需要利用gulp對scss進行編譯,所以首先安裝gulp-sass。

  1. npm install --save-dev gulp-sass 

安裝完成之后,直接在gulpfile.js引用配置

  1. const sass = require('gulp-sass'); //scss編譯 
  2.  
  3. gulp.task('scss:dev',()=>{ 
  4.     gulp.src('src/scss/*.scss'
  5.     .pipe(sass()) 
  6.     .pipe(gulp.dest('dist/css')); //將生成好的css文件放到dist/css文件夾下 
  7. });  

這里簡單介紹下gulp的兩個api:

gulp.src()輸入符合所提供的匹配模式或者匹配模式的數組的文件。將返回一個stream或者可以被piped到別的插件中。讀文件

gulp.dest()能被pipe進來,并且將會寫文件。并重新輸出(emits)所有數據,因此可以將它pipe到多個文件夾,如果文件夾不存在則將會自動創建。寫文件

實時刷新

實現實時刷新的工具有很多,我自己使用browser-sync,這個工具的功能非常強大,想了解它更多的用法可以查看官網:http://www.browsersync.cn/

首先我們在項目中安裝該模塊

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

根據官網的browser-sync與gulp的配置,得到如下配置:

  1. const browserSync = require('browser-sync').create(); //實時刷新 
  2. const reload = browserSync.reload; 
  3.  
  4. gulp.task('dev',['scss:dev'],function () { 
  5.     browserSync.init({ 
  6.         server:{ 
  7.             baseDir:'./'  //設置服務器的根目錄 
  8.         }, 
  9.         logLevel: "debug"
  10.         logPrefix:"dev"
  11.         browser:'chrome'
  12.         notify:false //開啟靜默模式 
  13.     }); 
  14.     //使用gulp的監聽功能,實現編譯修改過后的文件 
  15.     gulp.watch('src/scss/*.scss',['scss:dev']); 
  16.     gulp.watch(('*.html')).on('change',reload); 
  17. });  

這樣,一個簡單的gulp開發流程就出來了,僅僅只是一個編譯scss和一個實時刷新。

打包上線所有流程

打包上線,我們更多的是考慮,靜態資源防緩存,優化。對css,js的壓縮,對圖片的處理,我寫的這個簡單的流程中并沒有涉及對圖片的處理,所以這里僅針對css,js,html處理。

壓縮css我們使用gulp-sass就可以,因為它在編譯scss的時候有一個配置選項可以直接輸出被壓縮的css。壓縮js我使用了gulp-uglify,靜態資源防緩存使用gulp-rev和gulp-rev-collector。

對css,js的處理

  1. //scss編譯 
  2. gulp.task('css',()=> { 
  3.     gulp.src('src/scss/*.scss'
  4.         .pipe(sass({ 
  5.             outputStyle: 'compressed'               //編譯并輸出壓縮過的文件 
  6.         })) 
  7.         .pipe(rev())                                //給css添加哈希值 
  8.         .pipe(gulp.dest('dist/css')) 
  9.         .pipe(rev.manifest())                       //給添加哈希值的文件添加到清單中 
  10.         .pipe(gulp.dest('rev/css')); 
  11. }); 
  12. //壓縮js 
  13. gulp.task('js', ()=> { 
  14.     gulp.src('src/js/*js'
  15.         .pipe(uglify()) 
  16.         .pipe(rev())                                //給js添加哈希值 
  17.         .pipe(gulp.dest('dist/js')) 
  18.         .pipe(rev.manifest())                       //給添加哈希值的文件添加到清單中 
  19.         .pipe(gulp.dest('rev/js')); 
  20. });  

其中gulp-rev是為css文件名添加哈希值,而rev.manifest()會生成一個json文件,這個json文件中記錄了原文件名和添加哈希值后的文件名的一個對應關系,這個對應關系在***對應替換html的引用的時候會用到。

生成的json文件如下:

  1.  
  2. "index.css""index-9dcc24fe2e.css" 
  3.  
  4.  

由于給文件添加了哈希值,所以每次編譯出來的css和js都是不一樣的,這會導致有很多冗余文件,所以我們可以每次在生成文件之前,先將原來的文件全部清空。

gulp中也有做這個工作的插件---gulp-clean,因此我們可以在編譯壓縮添加哈希值之前先將原文將清空。

清空生成的項目文件

  1. const clean = require('gulp-clean');                 //清空文件夾里所有的文件 
  2. //每次打包時先清空原有的文件夾 
  3. gulp.task('clean', ()=> { 
  4.     gulp.src(['dist''rev'], {readfalse}) //這里設置的dist表示刪除dist文件夾及其下所有文件 
  5.         .pipe(clean()); 
  6. });  

讓添加哈希編碼的文件自動添加到html中

前面提到的gulp-rev實現了給文件名添加哈希編碼,但是在打包完成后如何讓原來未添加哈希值的引用自動變為已經添加哈希值的引用,這里用到gulp-rev的一個插件gulp-rev-collector,配置如下:

  1. //將處理過的css,js引入html 
  2. gulp.task('reCollector',()=>{ 
  3.     gulp.src(['rev/**/*.json','src/*.html']) 
  4.         .pipe(reCollector({ 
  5.             replaceReved: true,  //模板中已經被替換的文件是否還能再被替換,默認是false 
  6.             dirReplacements: {   //標識目錄替換的集合, 因為gulp-rev創建的manifest文件不包含任何目錄信息, 
  7.                 'css/''/dist/css/'
  8.                 'js/''/dist/js/' 
  9.             } 
  10.         })) 
  11.         .pipe(gulp.dest('dist')) 
  12. });  

并沒有正常替換?

在我自己寫的時候,出現這個問題,運行完成該任務后,html中的css和js引用并沒有發生變化,網上搜了半天,才知道是由于自己用了gulp-rename插件,然后將文件名都添加了.min(至于為什么添加,僅僅是因為是壓縮過的,應該寫個)而在自己寫的html里面引用的文件并沒有.min,由于gulp-rev-collector在替換的時候根據生成的json文件替換,在json中,文件都有了.min而在html中沒有,所以無法匹配,自然也就不能實現替換了,所以在替換的時候一定要注意gulp-rev生成的json文件中的css,js與html中的引用的一樣,否則無法實現替換。

<font color="red">在gulp-rev-collector的api中有一個revSuffix,這個看起來可以實現類似于gulp-rename的功能,但是不知道該怎么用,大家如果知道的話請告訴我...</font>

執行所有任務

完成上面幾個步驟后我們將所有任務串起來,讓其可以一條命令然后全部執行

  1. gulp.task('build',['clean''css''js''reCollector']); 

再次理解gulp

gulp---它的task是順序執行嗎?

本以為到這里,就算是寫完了,運行,***,打包生成文件,再運行一次,報錯了!!!!

  1. [19:04:57] Finished 'default' after 7.38 μs 
  2. stream.js:74 
  3.       throw er; // Unhandled stream error in pipe. 
  4.       ^ 
  5.  
  6. Error: ENOENT: no such file or directory, stat 'D:\project\dist\js\index-6045b384e6.min.js' 
  7.     at Error (native)  

提示我找不到這個文件,這讓我很郁悶啊,然后我分開執行,很ok,可以確定是執行順序有問題,很可能在沒有清理完成就執行后面了,查了gulp的官網文檔才知道本身gulp的pipe是一個一個任務進行的,是同步的,但是每個task之間是不同步的,是一起進行的,這也驗證了我的猜想,所以在網上找如何解決這個問題,找到一個叫run-sequence的npm插件,配置文件如下:

  1. //進行打包上線 
  2. gulp.task('build', ()=> { 
  3.     runSequence('clean', ['css''js'], 'reCollector'); 
  4. });  

本以為運行就ok,結果,還是報錯,這里就涉及到對gulp的另一個理解

run-sequence插件對異步任務的處理

在用這個插件讓任務有序進行后,我想進一步直觀的看到它對任務的序列化,自己寫了一個demo,如下:

  1. gulp.task('a',function(){ 
  2.     setTimeout(function () { 
  3.         console.log(1); 
  4.     },30); 
  5. }); 
  6. gulp.task('b',function() { 
  7.     console.log(2); 
  8. }); 
  9. gulp.task('ab',function(){ 
  10.     runSequence('a','b'); 
  11. });  

但是這里就出現問題了,runSequence不管用了,找插件的說明和gulp官方文檔,原來異步任務,像setTimeout,readFile等,需要添加一個callback的執行,這里的callback()就會返回一個promise的resolve(),告訴后面的任務,當前任務已經完成,后面可以繼續執行了,所以在task a里面執行callback。

  1. gulp.task('a',function(cb){ 
  2.     setTimeout(function () { 
  3.         console.log(1); 
  4.         cb(); 
  5.     },30); 
  6. });  

那為什么前面寫的那些任務不需要添加一個callback呢?由于gulp的pipe流讓每一個task中的小任務(每一個pipe)順序執行,從而整個pipe流是同步的,并不是異步任務,所以并不需要手動讓其返回promise,run-sequence會自動幫我們管理。

總結

至此,我們就完成了一個簡易的基于gulp的前端工程的搭建,很多東西確實,想著并不難,做起來會出現各種各樣意想不到的問題,gulp很早就知道,都是單個任務在寫,然后用哪個執行哪個命令,直到自己寫完這個這個簡單的工程,才對gulp有了更深入的理解。

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

2024-03-08 13:11:05

前端自動化工具

2015-05-28 10:35:07

前端gulpdemo

2021-05-06 15:05:57

Python自動化工具

2020-12-17 12:43:43

前端gup4.0webpack

2020-12-08 06:20:49

前端重構Vue

2010-12-06 09:56:52

數據中心網絡

2022-07-20 12:18:36

Python自動化工具tox

2015-06-09 13:45:14

2021-05-08 09:00:53

AI 工具人工智能

2025-06-20 02:11:00

2020-03-31 10:58:35

網絡自動化SD-WAN軟件定義網絡

2010-05-26 16:21:25

2021-05-19 17:04:29

Python阿里自動化工具

2019-12-11 11:54:37

IT工具云計算

2013-12-19 09:56:12

云計算自動化工具云計算管理

2020-12-23 10:43:40

云計算基礎設施自動化工具

2019-12-04 08:00:00

IT基礎架構自動化工具

2022-09-14 10:00:12

前端自動化測試

2013-09-03 09:58:51

Web前端

2017-05-24 10:42:43

Web前端自動化
點贊
收藏

51CTO技術棧公眾號

手机看片日韩av| 国产精品12345| 91久久国语露脸精品国产高跟| 国产精品88久久久久久| 日韩区在线观看| 日本欧美视频在线观看| 粉嫩av一区| 国产精品一区二区三区乱码| 51ⅴ精品国产91久久久久久| 少妇高潮在线观看| 日韩av网站在线免费观看| 欧美性感一类影片在线播放| 国产欧美精品aaaaaa片| 九一国产在线| 成人午夜伦理影院| 国产免费成人av| 日韩三级视频在线播放| 美日韩黄色大片| 粉嫩一区二区三区在线看| 茄子视频成人在线| 国产精品 欧美激情| 日韩高清影视在线观看| 9191国产精品| 日韩视频在线免费看| 四虎影院观看视频在线观看 | 日本黄色免费视频| 精品影视av免费| 日本高清不卡在线| 久久免费视频播放| 午夜国产一区二区| 亚洲网址你懂得| 在线观看国产免费视频| 亚洲精品视频一二三区| 欧美日韩精品久久久| 看av免费毛片手机播放| 七七成人影院| 亚洲免费色视频| 91香蕉视频网址| 999国产在线视频| 久久久一区二区三区捆绑**| 国产在线欧美日韩| 亚洲国产精品久久久久久久| 九色综合狠狠综合久久| 国产99久久久欧美黑人| 天堂中文在线网| 亚洲免费一区二区| 91黑丝高跟在线| 亚洲国产精品成人无久久精品| 久久精品青草| 久久国产精品久久久| 亚洲视频重口味| 午夜影院欧美| 久久资源免费视频| 国产精品久久久久久久精| 色777狠狠狠综合伊人| 在线播放日韩欧美| 国产1区2区在线观看| 免费短视频成人日韩| 亚洲乱码国产乱码精品精天堂| 黄色免费看视频| 日韩在线你懂的| 亚洲人av在线影院| 午夜在线观看一区| 成人羞羞网站| 久久亚洲成人精品| 欧美黄色免费看| 黑丝一区二区| 77777亚洲午夜久久多人| 日韩不卡在线播放| 久久精品伊人| 国产在线观看精品一区二区三区| 国产女人高潮的av毛片| 国产精品羞羞答答xxdd| 国产伦精品一区二区三区四区视频 | 亚洲久色影视| 91成品人片a无限观看| 国产精品免费精品一区| 日韩精品视频网| 91久久精品视频| 亚洲女同志亚洲女同女播放| 99久久久无码国产精品| 欧洲成人一区二区| 中文字幕日本在线观看| 一区二区三区久久久| a在线视频观看| 视频精品导航| 日韩欧美国产一区在线观看| 亚洲制服丝袜在线播放| 欧美久久精品一级c片| 久久夜色精品亚洲噜噜国产mv | 免费黄网在线观看| 亚洲妇女屁股眼交7| 激情综合网俺也去| 国产成人视屏| 日韩毛片中文字幕| 欧美aaa级片| 亚洲高清自拍| 国产精品网红直播| 无码国产精品高潮久久99| 国产亚洲精品福利| 久久久久亚洲av无码专区喷水| 美女露胸视频在线观看| 欧美日韩精品一区视频| 一边摸一边做爽的视频17国产| 欧美手机在线| 7777kkkk成人观看| 性中国xxx极品hd| 欧美激情在线看| 霍思燕三级露全乳照| 亚洲tv在线| 亚洲精品一区中文字幕乱码| 亚洲综合网在线| 日韩精品乱码av一区二区| 99re资源| 九七久久人人| 欧美网站一区二区| 成人影视免费观看| 亚洲激情社区| 成人免费看片网址| 麻豆传媒在线完整视频| 日韩欧中文字幕| 中文字幕在线永久| 欧美精品网站| 成人激情电影一区二区| 国产三级电影在线| 狠狠躁夜夜躁人人躁婷婷91| 一区二区三区四区影院| 午夜片欧美伦| 国产日韩欧美在线播放| 波多野结衣在线网站| 色综合天天在线| 久久久久久久久免费看无码 | 囯产精品一品二区三区| 成人免费在线观看入口| 鲁一鲁一鲁一鲁一av| 在线日韩一区| 茄子视频成人在线| 日本天堂影院在线视频| 婷婷激情综合网| 中文字幕人妻一区二区三区| 很黄很黄激情成人| 国产精品一 二 三| av电影免费在线看| 亚洲成色999久久网站| 欧美人妻精品一区二区免费看| 国产最新精品免费| 中文字幕乱码一区二区三区| 欧美亚洲黄色| 久久激情视频免费观看| 国产精品-色哟哟| 亚洲婷婷综合色高清在线| 天天操天天干天天做| 日韩一区二区在线| 91精品国产自产在线| 精产国品自在线www| 欧美一区二区视频在线观看| 国产高潮国产高潮久久久91| 国产黄色精品视频| 丁香花在线影院观看在线播放| 久久亚洲道色| 日本免费久久高清视频| 国产高清免费av在线| 欧美日韩一级视频| 国产少妇在线观看| av中文字幕不卡| 亚洲人成色77777| 久久激情电影| 91传媒视频免费| 51漫画成人app入口| 精品一区二区亚洲| 中文字幕男人天堂| 亚洲三级视频在线观看| 一级黄色片毛片| 久久一区二区三区四区五区 | 99九九视频| 女人高潮被爽到呻吟在线观看 | 青青青视频在线播放| 国产麻豆日韩欧美久久| av动漫在线看| 欧美hd在线| 国产一区免费| 精品福利在线| 国内免费精品永久在线视频| 九一国产在线| 日韩免费看网站| 五月天激情国产综合婷婷婷| 国产精品网曝门| 亚洲一区二区三区四区av| 日韩中文字幕麻豆| 法国空姐在线观看免费| 亚洲都市激情| 亚洲iv一区二区三区| 伊人久久国产| 美女性感视频久久久| 日本护士...精品国| 欧美一区二区三区喷汁尤物| 久久精品视频1| 亚洲激情在线播放| 色哟哟精品观看| 国产成人免费在线观看不卡| 美女一区二区三区视频| 国精品一区二区三区| 亚洲国产一区二区在线| 亚洲一二av| 国产噜噜噜噜噜久久久久久久久| av资源中文在线天堂| 久久久国产一区二区| 黄色大片在线免费观看| 亚洲成年人在线播放| 91尤物国产福利在线观看| 亚洲妇女屁股眼交7| 糖心vlog免费在线观看| 久久精品夜色噜噜亚洲aⅴ| 91精品国产高清91久久久久久| 日本亚洲视频在线| 国产成人无码精品久久久性色| 亚洲综合婷婷| 亚洲欧美国产精品桃花| 亚洲警察之高压线| 精品网站在线看| 91九色鹿精品国产综合久久香蕉| 国产人妖伪娘一区91| 亚洲不卡系列| 日本亚洲欧洲色α| 理论片午夜视频在线观看| 欧美乱大交xxxxx另类电影| 免费在线观看av网站| 最近2019中文字幕大全第二页| 免费在线国产| 日韩激情在线视频| 色婷婷av一区二区三| 日韩欧美一卡二卡| 国产三级视频在线播放| 欧美男生操女生| 亚洲综合一区中| 欧美色网站导航| 中文字幕在线网站| 欧美体内she精视频| 夜夜躁日日躁狠狠久久av| 色哟哟国产精品| 久久夜色精品国产噜噜亚洲av| 精品免费在线视频| 欧美一级视频免费观看| 偷拍与自拍一区| 午夜精品久久久久久久久久久久久蜜桃| 亚洲动漫第一页| 91蜜桃视频在线观看| 精品国产精品三级精品av网址| 日本中文字幕网| 精品欧美激情精品一区| 国产欧美一区二区三区在线看蜜臂| 五月天欧美精品| 九九精品免费视频| 色婷婷亚洲综合| a片在线免费观看| 欧美日本国产视频| 国产精品一二三四五区| 欧美一区二区三区色| 俄罗斯嫩小性bbwbbw| 亚洲精品720p| 国产精品天堂| 久久久999国产| 免费电影视频在线看| 97视频免费看| 最新日韩一区| 成人在线精品视频| 波多野结衣欧美| 欧美人xxxxx| 色综合久久一区二区三区| 日本一区二区免费高清视频| 欧美午夜免费影院| 狠狠97人人婷婷五月| 喷水一区二区三区| www.偷拍.com| 91色九色蝌蚪| 成人一级黄色大片| 亚洲第一综合色| 成年人视频免费| 日韩一卡二卡三卡四卡| 亚洲三级黄色片| www.色综合| www.51av欧美视频| 国产精品一区二区久久久久| 伊人久久影院| 色涩成人影视在线播放| 欧美精品三区| 久久婷婷国产91天堂综合精品| 精品一区中文字幕| asian性开放少妇pics| 亚洲少妇30p| 中文字幕高清在线免费播放| 91麻豆精品国产91久久久| 五月天婷婷在线观看| www.久久久久| 最新中文字幕在线播放| 91亚洲国产精品| 国产精品亚洲片在线播放| 400部精品国偷自产在线观看| 亚洲欧美日本日韩| 国产又粗又猛大又黄又爽| 久久久亚洲欧洲日产国码αv| a级片在线观看免费| 欧美丝袜丝交足nylons图片| 日批视频在线播放| 久久久精品久久| 三级成人在线| 精品久久久三级| 欧美福利网址| 超碰人人草人人| 久久久久国产一区二区三区四区| 九九免费精品视频| 欧美日本在线视频| 国产最新视频在线| 国内久久久精品| 51亚洲精品| 天天做天天爱天天高潮| 日本va欧美va欧美va精品| 三级视频网站在线观看| 亚洲精品福利视频网站| 中文字幕有码无码人妻av蜜桃| 日韩精品视频在线播放| 久久香蕉av| 91入口在线观看| 亚洲电影影音先锋| 黄色片视频在线| 欧美激情中文字幕| 免费精品一区二区| 亚洲精品视频免费在线观看| 国模私拍一区二区国模曼安| 国产99视频精品免费视频36| 亚洲在线久久| 欧美人与性动交α欧美精品| 国产精品不卡视频| 亚洲一区二区人妻| 色偷偷亚洲男人天堂| 成人日韩av| 亚洲三级一区| 精品亚洲aⅴ乱码一区二区三区| 亚洲精品国产精品国自| 欧洲视频一区二区| 番号在线播放| 国产精品主播视频| 日韩综合一区| 午夜xxxxx| 亚洲精品中文字幕在线观看| 99热精品在线播放| 久久69精品久久久久久久电影好 | 九九视频在线观看| 精品嫩草影院久久| 成人福利影视| 久久国产精品免费一区| 国产精品一二| 亚洲第一综合网| 欧美日韩国产a| а√天堂在线官网| 国产精品二区三区| 国产视频一区欧美| 国精产品一区二区三区| 欧美亚洲国产一区二区三区va | 中文字幕12页| 一区二区三区国产精品| 黄片毛片在线看| 日本高清+成人网在线观看| 成人情趣视频网站| 亚洲精品mv在线观看| 一片黄亚洲嫩模| 深夜福利视频一区| 国产精品久久久久国产a级| 999精品视频| 亚洲一区二区三区四区av| 色欧美片视频在线观看在线视频| av电影在线网| 97在线电影| 久久久久久久高潮| 午夜三级在线观看| 亚洲成人在线网| 78精品国产综合久久香蕉| 91九色国产ts另类人妖| 99国产一区二区三精品乱码| 波多野结衣影片| 欧美大片免费观看| 久久91麻豆精品一区| 欧美又黄又嫩大片a级| 午夜精品久久一牛影视| 成人精品福利| 国产视频一区二区三区四区| 日韩精品成人一区二区三区| 9999热视频| 亚洲毛片在线观看| 麻豆精品一区| 黄色一级大片在线观看| 亚洲男女一区二区三区| 精品久久久久一区二区三区| 亚洲一区二区三| 久久一日本道色综合久久| 国产av 一区二区三区| 日韩久久免费视频| 亚洲1区在线| 国产精品入口免费软件| 亚洲成人自拍一区|