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

基于NodeJS從零構(gòu)建線上自動(dòng)化打包工作流

開發(fā) 前端
筆者已經(jīng)集成到H5-Dooring中,對(duì)于一些更復(fù)雜的交互功能,通過合理的設(shè)計(jì)也是可以實(shí)現(xiàn)的,大家可以自行探索研究。?

前言

NodeJS在前端領(lǐng)域正扮演著越越重要的地位,它不僅可以讓前端工作者使用javascript編寫后端代碼,還能方便地搭建響應(yīng)速度快、易于擴(kuò)展的網(wǎng)絡(luò)應(yīng)用。Node.js 使用事件驅(qū)動(dòng),非阻塞I/O 模型而得以輕量和高效,非常適合在分布式設(shè)備上運(yùn)行數(shù)據(jù)密集型的實(shí)時(shí)應(yīng)用。

所以作為一名優(yōu)秀的前端工程師,非常有必要了解和掌握Node.js。筆者接下來將通過對(duì)H5-Dooring項(xiàng)目中的實(shí)時(shí)在線下載代碼功能來帶大家掌握如何從零構(gòu)建線上自動(dòng)化打包工作流。

你將收獲

  • 設(shè)計(jì)一款在線工作流的基本思路
  • nodejs常用API的使用
  • nodejs如何使用父子進(jìn)程
  • 使用child_process的exec實(shí)現(xiàn)解析并執(zhí)行命令行指令
  • socket.io實(shí)現(xiàn)消息實(shí)時(shí)推送
  • 使用jszip實(shí)現(xiàn)服務(wù)端壓縮文件并支持前端下載zip包

我們都用過諸如gulp,webpack之類的自動(dòng)化工具,他們能很方便的幫我們打包編譯代碼,并以一種相對(duì)優(yōu)雅的方式編寫我們的工程代碼。但是我們仔細(xì)思考之后就能發(fā)現(xiàn), 這些產(chǎn)物的背后都是靠nodejs和babel做底層支持。我們無非就是設(shè)計(jì)一種架構(gòu)模式,通過babel的加載器和nodejs的服務(wù)能力,將代碼由JS - AST - JS的過程(這里忽略css和插件處理)。

圖片

在吹完牛逼之后,我們開始介紹如何設(shè)計(jì)一款在線工作流。

1. 設(shè)計(jì)一款在線工作流的基本思路

在線工作流是個(gè)泛指,其實(shí)任何產(chǎn)品線都有屬于自己特色的工作流,但最終還是要回歸業(yè)務(wù)。所以筆者在這里專門介紹一下H5-Dooring的實(shí)時(shí)下載代碼的在線工作流。我們看看下面的設(shè)計(jì)流程:

圖片

以上就是我們需要做的在線實(shí)時(shí)打包下載代碼的工作流,由于nodejs是單線程的,為了不阻塞進(jìn)程我們可以采用父子進(jìn)程通信的方式和異步模型來處理復(fù)雜耗時(shí)任務(wù),為了通知用戶任務(wù)的完成狀況, 我們可以用socket做雙向通信。在當(dāng)前的場景下就是代碼編譯壓縮完成之后,通知給瀏覽器,以便瀏覽器顯示下載狀態(tài)彈窗。一共有三種狀態(tài):進(jìn)行中,已完成,失敗。對(duì)應(yīng)如下圖所示界面:

圖片

圖片

至于為什么沒有出現(xiàn)下載失敗的狀態(tài),不要問我,問就是沒有失敗過(完了,找虐了)。

以上就是H5-Dooring實(shí)時(shí)編譯下載的工作流設(shè)計(jì),至于線上更多的實(shí)際需求,我們也可以參考以上設(shè)計(jì)去實(shí)現(xiàn),接下來筆者來具體介紹實(shí)現(xiàn)過程。

2. nodejs如何使用父子進(jìn)程

我們要想實(shí)現(xiàn)一個(gè)自動(dòng)化工作流, 要考慮的一個(gè)關(guān)鍵問題就是任務(wù)的執(zhí)行時(shí)機(jī)以及以何種方式執(zhí)行. 因?yàn)橛脩粝螺d代碼之前需要等H5頁面打包編譯壓縮完成之后才能下載, 而這個(gè)過程需要一定的時(shí)間(8-30s), 所以我們可以認(rèn)定它為一個(gè)耗時(shí)任務(wù).

當(dāng)我們使用nodejs作為后臺(tái)服務(wù)器時(shí), 由于nodejs本身是單線程的,所以當(dāng)用戶請(qǐng)求傳入nodejs時(shí), nodejs不得不等待這個(gè)"耗時(shí)任務(wù)"完成才能進(jìn)行其他請(qǐng)求的處理, 這樣將會(huì)導(dǎo)致頁面其他請(qǐng)求需要等待該任務(wù)執(zhí)行結(jié)束才能繼續(xù)進(jìn)行, 所以為了更好的用戶體驗(yàn)和流暢的響應(yīng),我們不得不考慮多進(jìn)程處理. 好在nodejs設(shè)計(jì)支持子進(jìn)程, 我們可以把耗時(shí)任務(wù)放入子進(jìn)程中來處理,當(dāng)子進(jìn)程處理完成之后再通知主進(jìn)程. 整個(gè)流程如下圖所示:

圖片

nodejs有3種創(chuàng)建子進(jìn)程的方式,這里筆者簡單介紹一下fork的方式。使用方式如下:

// child.js
function computedTotal(arr, cb) {
// 耗時(shí)計(jì)算任務(wù)
}

// 與主進(jìn)程通信
// 監(jiān)聽主進(jìn)程信號(hào)
process.on('message', (msg) => {
computedTotal(bigDataArr, (flag) => {
// 向主進(jìn)程發(fā)送完成信號(hào)
process.send(flag);
})
});

// main.js
const { fork } = require('child_process');

app.use(async (ctx, next) => {
if(ctx.url === '/fetch') {
const data = ctx.request.body;
// 通知子進(jìn)程開始執(zhí)行任務(wù),并傳入數(shù)據(jù)
const res = await createPromisefork('./child.js', data)
}
// 創(chuàng)建異步線程
function createPromisefork(childUrl, data) {
// 加載子進(jìn)程
const res = fork(childUrl)
// 通知子進(jìn)程開始work
data && res.send(data)
return new Promise(reslove => {
res.on('message', f => {
reslove(f)
})
})
}

await next()
})復(fù)制代碼

在H5-Dooring線上打包的工作流中,我們會(huì)用到child_process的exec方法,來解析并執(zhí)行命令行指令。至于父子進(jìn)程的更多應(yīng)用,大家可以自行探索。

3. 使用child_process的exec實(shí)現(xiàn)解析并執(zhí)行命令行指令

在上面介紹的dooring工作流中,我們知道為了實(shí)現(xiàn)實(shí)時(shí)打包,我們需要一個(gè)H5 Template項(xiàng)目,作為打包的母版,當(dāng)用戶點(diǎn)擊下載時(shí),會(huì)將頁面的json schema數(shù)據(jù)傳給node服務(wù)器, node服務(wù)器再將json schema進(jìn)行數(shù)據(jù)清洗最后生成template.json文件并移動(dòng)到H5 Template母版中,此時(shí)母版拿到數(shù)據(jù)源并進(jìn)行打包編譯,最后生成可執(zhí)行文件。

以上的過程很關(guān)鍵, 這里筆者畫個(gè)大致的流程圖:

圖片

為了實(shí)現(xiàn)以上過程,我們需要兩個(gè)關(guān)鍵環(huán)節(jié):

  • 將用戶配置的數(shù)據(jù)進(jìn)行處理并生成json文件,然后移動(dòng)到H5 Template母版中
  • 在母版中自動(dòng)執(zhí)行打包編譯腳本

第一個(gè)環(huán)節(jié)很好實(shí)現(xiàn),我們只需要用nodejs的fs模塊生成文件到指定目錄即可,這里筆者重點(diǎn)介紹第二個(gè)環(huán)節(jié)的實(shí)現(xiàn)。

當(dāng)我們將json數(shù)據(jù)生成到H5 Template中之后,就可以進(jìn)行打包了,但是這個(gè)過程需要自動(dòng)化的去處理,不能像我們之前啟動(dòng)項(xiàng)目一樣,手動(dòng)執(zhí)行npm start或者yarn start。我們需要程序自動(dòng)幫我們執(zhí)行這個(gè)命令行指令,筆者在查nodejs API突然發(fā)現(xiàn)了child_process的exec方法,可以用來解析指令,這個(gè)剛好能實(shí)現(xiàn)我們的需求,所以我們開始實(shí)現(xiàn)它。代碼如下:

import { exec } from 'child_process'
const outWorkDir = resolve(__dirname, '../h5_landing')
const fid = uuid(8, 16)
const cmdStr = `cd ${outWorkDir} && yarn build ${fid}`

// ...exec相關(guān)代碼
const filePath = resolve(__dirname, '../h5_landing/src/assets/config.json')
const res = WF(filePath, data)

exec(cmdStr, function(err,stdout,stderr){
if(err) {
// 錯(cuò)誤處理
} else {
// 成功處理
}
})復(fù)制代碼

以上代碼我們不難理解,我們只需要定義好打包的指令字符串(方式和命令行操作幾乎一致),然后傳入給exec的第一個(gè)參數(shù),他就會(huì)幫我們解析字符串并執(zhí)行對(duì)應(yīng)的命令行指令。在執(zhí)行完成之后,我們可以根據(jù)回調(diào)函數(shù)(第二個(gè)參數(shù))里的參數(shù)值來判斷執(zhí)行結(jié)果。整個(gè)過程是異步的,所以我們不用擔(dān)心阻塞問題,為了實(shí)時(shí)反饋進(jìn)度,我們可以用socket來將進(jìn)度信息推送到瀏覽器端。

4. socket.io實(shí)現(xiàn)消息實(shí)時(shí)推送

在上面介紹的 exec實(shí)現(xiàn)解析并執(zhí)行命令行指令

  • 客戶端請(qǐng)求長輪詢
  • postmessage消息推送
  • websocket雙向通信

很明顯使用websocket雙向通信會(huì)更適合本項(xiàng)目。這里我們直接使用社區(qū)比較火的socket.io.由于官網(wǎng)上有很多使用介紹,這里筆者就不一一說明了。我們直接看業(yè)務(wù)里的代碼使用:

// node端
exec(cmdStr, function(err,stdout,stderr){
if(err) {
console.log('api error:'+stderr);
io.emit('htmlFail', { result: 'error', message: stderr })
} else {
io.emit('htmlSuccess', { result: dest, message: stderr })
}
})

// 瀏覽器端
const socket = io(serverUrl);
// ...省略其他業(yè)務(wù)代碼
useEffect(() => {
socket.on('connect', function(){
console.log('connect')
});
socket.on('htmlFail', function(data){
// ...
});
socket.on('disconnect', function(e){
console.log('disconnect', e)
});
}, [])復(fù)制代碼

這樣我們就能實(shí)現(xiàn)服務(wù)器任務(wù)流的狀態(tài)實(shí)時(shí)反饋給瀏覽器端了。

5. 使用jszip實(shí)現(xiàn)服務(wù)端壓縮文件并支持前端下載zip包

實(shí)現(xiàn)前端下載功能其實(shí)也很簡單,因?yàn)橛脩襞渲玫腍5項(xiàng)目包含了各種資源,比如css,js,html,image,所以為了提高下載性能和便捷性我們需要把整個(gè)網(wǎng)站打包,生成一個(gè)zip文件供用戶下載。原理就是使用jszip將目錄壓縮,然后返回壓縮后的路徑給到前端,前端采用a標(biāo)簽進(jìn)行下載。至于如何實(shí)現(xiàn)目錄遍歷壓縮和遍歷讀取目錄, 這里筆者就不說了,感興趣的可以參考筆者其他的nodejs的文章。

6. 總結(jié)

以上教程筆者已經(jīng)集成到H5-Dooring中,對(duì)于一些更復(fù)雜的交互功能,通過合理的設(shè)計(jì)也是可以實(shí)現(xiàn)的,大家可以自行探索研究。

責(zé)任編輯:武曉燕 來源: 趣談前端
相關(guān)推薦

2023-07-21 15:26:00

數(shù)據(jù)庫同步數(shù)據(jù)

2021-08-13 14:00:14

Node.js開發(fā)前端

2024-05-17 08:39:11

Node.js前端非阻塞I/O 模型

2024-04-15 08:00:00

人工智能DevOps

2022-07-14 10:06:20

工作流引擎營銷自動(dòng)化vivo

2022-03-07 11:09:36

自動(dòng)化企業(yè)技術(shù)

2012-09-04 10:20:31

IBMdw

2025-04-29 08:00:00

Rowboat多智能體人工智能

2025-09-09 07:25:00

Excel代碼Python

2024-09-29 16:31:23

2009-03-27 09:48:56

SnapFlowWaaS工作流

2025-07-01 08:17:16

2022-10-26 08:00:43

Activiti工作流BPM

2020-11-06 08:43:21

AIOps運(yùn)維DevOps

2025-11-03 08:00:00

2025-04-28 09:10:00

智能體Agent工作流

2021-10-14 11:34:05

技術(shù)工作流引擎

2019-03-10 21:13:03

UbuntuLinuxAlfred

2025-06-30 08:31:08

2025-08-13 07:22:35

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

肉丝袜脚交视频一区二区| 精品网站在线| eeuss影院一区二区三区| 国内外成人免费激情在线视频| a级片在线观看视频| heyzo高清国产精品| 久久人人爽人人爽| 91久久久在线| www.中文字幕在线观看| 外国成人在线视频| 在线成人午夜影院| 日本a在线天堂| 日韩av成人| 精品一区二区三区免费| 久久久久久久国产| 日韩一区二区三区四区视频| 精品精品精品| 欧美日韩精品福利| 黄色一级片播放| 九色porny在线| 91在线免费视频观看| 成人看片人aa| 青草视频在线观看免费| 欧美日韩伊人| 色一情一乱一区二区| 四季av综合网站| 97精品资源在线观看| 一本久久精品一区二区| 高清无码一区二区在线观看吞精| 成年人视频在线观看免费| 成人一区二区在线观看| 国产欧美va欧美va香蕉在线| 黄色片免费观看视频| 午夜国产欧美理论在线播放| 国产一区二区三区在线免费观看 | 欧美专区一区二区三区| 久久久999国产| 午夜影院黄色片| 自拍欧美一区| 日韩精品在线播放| 亚洲少妇一区二区| 久久在线观看| 欧美一区二区三区在线| 亚洲综合日韩欧美| 成人h在线观看| 色婷婷综合久久久久中文一区二区 | 午夜视频网站在线观看| 一本色道88久久加勒比精品| 欧美日韩999| 特一级黄色录像| 热久久天天拍国产| 在线播放国产一区中文字幕剧情欧美| a级大片在线观看| 杨幂一区二区三区免费看视频| 精品免费视频一区二区| 99999精品| 精品国产乱码久久久久久樱花| 欧美日韩在线不卡| 手机在线免费观看毛片| 欧美成人影院| 色婷婷久久久综合中文字幕| 黄色动漫网站入口| www.成人爱| 色88888久久久久久影院按摩| 日日摸日日碰夜夜爽av| 成人免费直播| 在线视频亚洲一区| 天天爽人人爽夜夜爽| 精品国产美女a久久9999| 精品视频在线视频| 中文字幕1234区| 日本精品国产| 精品成a人在线观看| 国产 xxxx| 亚洲香蕉视频| 综合网中文字幕| 国产精品免费在线视频| 亚洲视频在线免费| 欧美国产第一页| 日韩美女视频网站| 视频一区欧美精品| 91美女高潮出水| 亚洲av无码乱码国产精品久久| 成人免费精品视频| 欧美高清一区二区| 欧美性天天影视| 亚洲自拍与偷拍| 日韩国产欧美亚洲| 精品欧美日韩精品| 制服丝袜日韩国产| 好吊一区二区三区视频| 秋霞欧美视频| 午夜精品久久久久久久99热浪潮| 成人性生交大片免费看网站| 蜜臀99久久精品久久久久久软件| 国产精品美女av| 国产免费久久久| 成人免费高清在线| 欧美污视频久久久| а√资源新版在线天堂| 欧美三级免费观看| 久久久精品高清| 理论片一区二区在线| 在线国产精品播放| 久久久久久久久久久97| 久久精品欧洲| 99中文字幕| 成人网视频在线观看| 亚洲综合视频在线| 能看的毛片网站| 中文字幕av一区二区三区四区| 亚洲精品视频久久| 四虎免费在线视频| 久久亚洲风情| 肥熟一91porny丨九色丨| 国产在线电影| 亚洲va天堂va国产va久| 日韩av卡一卡二| 欧美电影在线观看免费| 久久成人精品电影| 中文在线a天堂| 91蜜桃视频在线| 路边理发店露脸熟妇泻火| 久久野战av| 亚洲成人免费在线视频| 天天看片中文字幕| 日韩av在线播放中文字幕| 成人免费观看网站| 欧美日韩在线资源| 欧美自拍偷拍一区| 国产精品jizz| 在线国产日韩| 成人午夜电影免费在线观看| 九九色在线视频| 免费成人美女在线观看.| 风间由美久久久| 1769在线观看| 日韩欧美一区二区三区久久| 中文在线观看免费视频| 欧美久久影院| 亚洲a∨日韩av高清在线观看| 国产精品二线| 色一情一乱一乱一91av| 国产精品边吃奶边做爽| 好吊日精品视频| 91传媒在线免费观看| 黄色网页在线免费观看| 欧美美女bb生活片| 人妻无码一区二区三区免费| 三级欧美韩日大片在线看| 国产专区一区二区| 欧产日产国产精品视频| 日韩精品视频观看| 亚洲男人的天堂在线视频| caoporm超碰国产精品| 日韩av高清在线看片| 成人精品毛片| 国内精久久久久久久久久人| 亚洲第一页视频| 亚洲成人黄色影院| 日韩aaaaa| 免费永久网站黄欧美| 久久精品女人的天堂av| 性欧美xxx69hd高清| 亚洲精品在线观看www| 中文字幕第四页| 国产肉丝袜一区二区| 国产又大又黄又粗的视频| 精品美女视频| 国产一区二区丝袜| 在线电影福利片| 亚洲第一国产精品| wwwwww国产| 色开心亚洲综合| 欧美性猛交xxxx乱大交| 成人精品999| 麻豆91在线观看| 欧美精品久久96人妻无码| 日韩有吗在线观看| 久久免费视频这里只有精品| 污污网站在线免费观看| 色哟哟国产精品| 免费看特级毛片| 福利一区在线观看| 一本大道熟女人妻中文字幕在线 | 国产精品一区二区欧美| 亚洲黄色免费av| 色综合影院在线| www.黄色片| 欧美性69xxxx肥| 韩国一级黄色录像| 成人高清视频在线| 999在线免费视频| 国产精品伦理久久久久久| 国产精华一区| julia一区二区三区中文字幕| 麻豆成人在线看| 天堂网www中文在线| 精品视频在线免费看| 国产精品19乱码一区二区三区| 久久久影视传媒| 成年人性生活视频| 爽好久久久欧美精品| 小泽玛利亚av在线| 亚洲免费福利一区| 91中文精品字幕在线视频| 正在播放日韩精品| 欧美成人合集magnet| 久久精品国产亚洲a∨麻豆| 欧美一级片在线| 少妇久久久久久久| 亚洲愉拍自拍另类高清精品| 一级特黄曰皮片视频| www.成人在线| 国产免费中文字幕| 视频一区二区国产| 日韩av一二三四区| 欧美在线亚洲| 亚洲精品乱码久久久久久蜜桃91| 精品淫伦v久久水蜜桃| 91精品久久久久久| 自拍偷自拍亚洲精品被多人伦好爽| 欧美贵妇videos办公室| 超碰在线观看免费| 中文字幕自拍vr一区二区三区| 日韩a在线观看| 精品久久国产字幕高潮| 国产熟女精品视频| 欧美特级限制片免费在线观看| 91精品国产乱码在线观看| 亚洲嫩草精品久久| 黑人狂躁日本娇小| 欧美国产一区二区| 国产美女免费网站| 91老司机福利 在线| 久久无码专区国产精品s| 狠狠狠色丁香婷婷综合久久五月| 男人女人黄一级| 午夜亚洲一区| 国产精品宾馆在线精品酒店| 亚洲国产一区二区三区a毛片| 欧美做受777cos| 999国产精品999久久久久久| 视频在线99| 成人写真视频| 亚洲v日韩v欧美v综合| 精品盗摄女厕tp美女嘘嘘| 青娱乐一区二区| 欧美极品在线观看| 欧美日韩最好看的视频| 国产成人久久| 亚洲国产精品www| 日韩在线理论| 一区二区三区三区在线| 99精品全国免费观看视频软件| 艳色歌舞团一区二区三区| 久久在线电影| 少妇高潮大叫好爽喷水| 午夜亚洲福利| 男的插女的下面视频| 亚洲人成高清| 成人免费观看视频在线观看| 爽爽淫人综合网网站| 91欧美视频在线| 国产一区激情在线| 波多野结衣办公室双飞| 99视频精品全部免费在线| 久久国产精品影院| 中文av一区二区| 日本福利片在线观看| 依依成人精品视频| 日本一级黄色大片| 色噜噜狠狠成人中文综合| 中文字幕人妻一区二区三区视频| 欧美狂野另类xxxxoooo| 亚洲福利在线观看视频| 日韩精品黄色网| 婷婷免费在线视频| 欧美激情伊人电影| 欧美电影免费观看网站| 国产噜噜噜噜噜久久久久久久久| 精品视频在线观看网站| 国产日韩一区二区三区| 欧美日韩激情| 999久久欧美人妻一区二区| 国产情侣久久| 潘金莲激情呻吟欲求不满视频| 国产成人精品免费在线| 日韩在线免费观看av| 17c精品麻豆一区二区免费| 日韩伦理在线视频| 欧美日韩精品是欧美日韩精品| av中文字幕第一页| 亚洲男人天天操| jizzjizz亚洲| 国产91精品不卡视频| aa亚洲一区一区三区| 久久香蕉综合色| 亚洲精品888| www黄色在线| 国产v日产∨综合v精品视频| 波多野结衣av在线观看| 一区二区三区在线免费观看| 日韩人妻精品中文字幕| 日韩一级大片在线| 成人影视在线播放| 久久久亚洲网站| 亚洲18在线| 牛人盗摄一区二区三区视频| 欧美福利影院| 国产又黄又猛又粗| 99精品国产99久久久久久白柏| 成年人二级毛片| 欧美亚洲综合网| 日韩在线无毛| 欧美精品成人在线| 激情五月综合婷婷| 台湾成人av| 国产欧美三级| 亚洲欧美日韩色| 亚洲女同ⅹxx女同tv| 亚洲天堂男人网| 亚洲一区999| 日韩精品极品| 国产精品播放| 欧美+日本+国产+在线a∨观看| 亚洲性生活网站| 91久色porny| 日韩高清免费av| 欧美大片在线观看| 操你啦视频在线| 91亚洲国产成人精品性色| 日韩精品一区二区三区免费观影| 黑森林福利视频导航| 99久久免费精品高清特色大片| 久久免费黄色网址| 91精品国产乱码| 嫩草香蕉在线91一二三区| 国产精品网址在线| 国产一区二区三区四区五区传媒| 久久久噜噜噜www成人网| aaa国产一区| 在线观看精品国产| 亚洲福利在线视频| a毛片不卡免费看片| 国产精品免费看一区二区三区| 欧美日韩第一区| 国产精品日日摸夜夜爽| 亚洲午夜久久久久久久久电影网 | 欧美精品一区二区久久久| 羞羞的视频在线看| 91嫩草在线| 国内精品久久久久久久影视麻豆| 2018国产精品| 亚洲v精品v日韩v欧美v专区 | 在线观看不卡av| 国产亚洲精品精品国产亚洲综合| 四虎一区二区| 久88久久88久久久| 玖玖爱这里只有精品| 欧美日韩成人一区二区| 黄色免费在线观看| 91免费版网站入口| 国内精品福利| 日韩网站在线播放| 色天天综合色天天久久| 91在线网址| 91在线国产电影| 伊人狠狠色j香婷婷综合| 亚州av综合色区无码一区| 日韩欧美精品网址| a√在线中文网新版址在线| 成人网在线视频| 国产精品成人一区二区网站软件| 大尺度做爰床戏呻吟舒畅| 日韩欧美一区视频| 日本a在线播放| 国产成人免费观看| 久久精品亚洲| 中文字幕无码日韩专区免费| 日韩片之四级片| 中文字幕在线直播| 亚洲一区在线直播| 风流少妇一区二区| 日本视频免费观看| 久久综合久久美利坚合众国| www.国产精品一区| 亚洲高清在线免费观看| 一区二区三区四区不卡在线| 天堂av2024| 国产日韩欧美在线看| 精品99视频| 妖精视频在线观看免费| 精品国产1区2区3区| 久久uomeier| 日韩欧美视频免费在线观看| 久久久亚洲午夜电影| 国产后入清纯学生妹| 国产精品国语对白| 黄色免费成人|