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

淺談Flux架構及Redux實踐

開發(fā) 架構
Flux是Facebook用來構建用戶端的Web應用程序的體系架構,與其它形式化的框架相比,它更像是一個架構思想,用于管理和控制應用中數(shù)據(jù)的流向。這里應用中的數(shù)據(jù)指包括但不限于來自服務端的數(shù)據(jù)頁面中view的一些狀態(tài)(如一個面板是展開還是關閉),臨時存儲在本地需要持久化到服務端的數(shù)據(jù)等。

Flux概述

Flux是Facebook用來構建用戶端的Web應用程序的體系架構,與其它形式化的框架相比,它更像是一個架構思想,用于管理和控制應用中數(shù)據(jù)的流向。這里應用中的數(shù)據(jù)指包括但不限于來自服務端的數(shù)據(jù)頁面中view的一些狀態(tài)(如一個面板是展開還是關閉),臨時存儲在本地需要持久化到服務端的數(shù)據(jù)等。

好了,說了這么多好像還是一臉懵逼,不慌,接下來看看展開式。

 MVC

在講述Flux之前,我們看看之前傳統(tǒng)的MVC架構以及在前端中的一些問題繼而思考Flux帶來的改變。MVC(Model-View-Controller)***興起于后端,通過對應用程序復雜度的簡化使程序更加直觀和便于維護。后端程序MVC中View可以看為數(shù)據(jù)的呈現(xiàn),Model為數(shù)據(jù)的模型,Controller作為程序的流程控制。現(xiàn)在假設有這樣的場景,用戶想查看自己的profile頁面,可能會有這樣的流程:在頁面上點擊profile按鈕,接下來就是一個HTTP請求(/profile?username=jiavan) => Controller接收到這一請求并獲得請求的內容username=jiavan然后告知Model需要jiavan的數(shù)據(jù) => Model返回了jiavan的數(shù)據(jù) => Controller得到數(shù)據(jù)返回新的視圖,看下流程: 

 現(xiàn)在前端中又有這樣的場景:切換Menu中的Item,當前選中的Item顏色不同于其它顏色并且底部顯示對應Item的內容。一般情況下我們會定義一個css class來作為當前選中Item的樣式。當用戶點擊Item_A為被點擊的元素新增高亮的class,其它兄弟元素移除該樣式,這里的事件響應函數(shù)就是Controller,我們會在這里處理樣式修改邏輯,以及更新Model的數(shù)據(jù),然后新的數(shù)據(jù)及樣式重新渲染界面。這種VC<->M的形式在關系比較簡單的情況下是比較清晰容易控制的,但是復雜的頁面上這樣的模式可能會變得非常混亂:

 之所以變得混亂了,因為很多view都具備修改多個model的能力,這里的單個修改行為可以稱之為一個Action,一個Action的產生可能是用戶行為,或者一個Ajax請求需要渲染新界面。對比上面后端傳統(tǒng)MVC模式可以發(fā)現(xiàn):

  • 后端中Action作為一個URL請求,前端中可能是一個事件;
  • 后端中Action處理被集中在Controller中,而前端中是分散的。

那么是不是可以把前端中修改狀態(tài)即state的行為(事件回調/Ajax)全部抽象成一種Action描述,然后交付到一處即Reducers來進行原子化處理,然后Reducer修改整個應用中唯一的一棵state tree即Store,***通過state->view的機制來重新渲染?

Flux數(shù)據(jù)流框架

上面提到的幾個概念已經對Flux有了初步的了解,下面進入正題。相信有了解Flux的都應該看過下面這張著名的數(shù)據(jù)流圖:

 

  1. Action可以看成是修改Store的行為抽象;
  2. Dispatcher管理著應用的數(shù)據(jù)流,可以看為Action到Store的分發(fā)器;
  3. Store管理著整個應用的狀態(tài)和邏輯,類似MVC中的Model。

所以Flux可以被看作傳統(tǒng)MVC的改進而非顛覆,當我***次看到Flux的時候其實是比較懵逼,但看到并使用了Redux后確實有一種非常驚艷的感覺。

Redux

按照Redux官方的描述Redux is a predictable state container for JavaScript apps.,其中predictable和state container體現(xiàn)了它的作用。那么如何來理解可預測化的呢?這里會有一些函數(shù)式編程方面的思想,在Redux中reducer函數(shù)是一個純函數(shù),相同輸入一定會是一致的輸出,所以確定輸入的state那么reducer函數(shù)輸出的state一定是可以被預測的,因為它只會進行單純的計算,保證正確的輸出。狀態(tài)容器又是什么?說明Redux有一個專門管理state的地方,就是Store,并且一般情況下是唯一的,應用中所有state形成的一顆狀態(tài)樹就是Store。Redux由Flux演變而來,但受 Elm 的啟發(fā),避開了 Flux 的復雜性,我們看看其數(shù)據(jù)流向:

 

 不同于Flux架構,Redux中沒有dispatcher這個概念,并且Redux設想你永遠不會變動你的數(shù)據(jù),你應該在reducer中返回新的對象來作為應用的新狀態(tài)。但是它們都可以用(state, action) => newState來表述其核心思想,所以Redux可以被看成是Flux思想的一種實現(xiàn),但是在細節(jié)上會有一些差異。

重要概念

  1. 應用中的所有state都以一個object tree的形式存儲在一個單一的store中;
  2. 唯一能改store的方法是觸發(fā)action,action是動作行為的抽象;
  3. 為了描述action如何改變state樹,需要編寫reducer函數(shù)。

這里需要說明一點的是reducer函數(shù),它應當是一個純函數(shù),不應該有副作用,不應有API調用,Date.now()或者隨機獲取等不穩(wěn)定的操作,應當保證相同的輸入reducer計算的結果應該是一致的輸出,它只會進行單純的計算。編寫reducer函數(shù)也是Redux中比較重要的一塊,它的形式如下:

  1. function testReducer(state, action) { 
  2.   switch (action.type) { 
  3.     case ACTION_TYPE: 
  4.       // calc... 
  5.       return newState; 
  6.     defaultreturn state; 
  7.   } 
  8.   return newState; 
  9.  

state是不可修改的,所以返回的新state應該是基于輸入state副本的修改,而不是直接修改state后的返回。

原則

1. 單一數(shù)據(jù)源,store

整個應用的state被存放在一棵Object tree中,并且這個Object tree只存在唯一一個store中;

2. state是只讀的

唯一能改變state的方法是觸發(fā)action,action是對已經發(fā)生了的事情的抽象描述,簡單的講,它把行為抽象成了一個對象。

比如,刪除一條記錄的action可以抽象的理解為:

  1.   type: 'DELETE_ITEM'
  2.   index: 1, 
  3.  

3. 使用純函數(shù)來實現(xiàn)state歸并操作,reducer

傳入待修改的state和一個告知reducer如何修改state的action,reducer將返回action規(guī)則對應下操作后的新的state。

reducer(state, action) => new state

數(shù)據(jù)流

嚴格的單向數(shù)據(jù)流是Redux設計的核心

Redux應用數(shù)據(jù)的生命周期遵循下面4個步驟:

  1. 調用store.dispatch(action), 可以在任何地方進行;
  2. Redux store調用傳入的reducer函數(shù),并且將當前的state樹與action傳入。reducer是純函數(shù),只用于計算下一個state,它應該是完全可被預測的,相同的輸入必定會有相同的輸出,不能有副作用的操作,如API的調用或者路由跳轉,這些應該都是在dispatch前產生;
  3. 根reducer將多個子reducer輸出合并成一個單一的state樹;
  4. Redux store保存了根reducer返回的完整的state樹。
    新的state樹就是應用的下一個狀態(tài),現(xiàn)在就可以根據(jù)新的state tree來渲染UI。

Redux實踐

我們通過一個非常簡單的計數(shù)器demo來梳理Redux的數(shù)據(jù)流。

0x00. 創(chuàng)建action

action其實就是一個普通的對象,只是對行為的抽象描述,這里我們可以把加上一個數(shù)描述為:

  1.   type: INCREMENT, //該動作的抽象描述 
  2.   number, // 該動作攜帶的數(shù)據(jù) 
  3.  

更多的時候我們會通過一個action生成函數(shù)來得到一個action:

  1. function incrementCreator(number) { 
  2.   return { 
  3.     type: INCREMENT, 
  4.     number, 
  5.   }; 
  6.  

0x01. 創(chuàng)建reducer函數(shù)

reducer作為整個Redux中action的處理中樞,接收state與action并對此修改數(shù)據(jù),返回應用的下一個狀態(tài)。

  1. function countReducer(state, action) { 
  2.   switch (action.type) { 
  3.     case INCREMENT: 
  4.       return Object.assign({}, { 
  5.         counter: state.counter + action.number, 
  6.       }); 
  7.     case DECREMENT: 
  8.       return Object.assign({}, { 
  9.         counter: state.counter - action.number, 
  10.       }); 
  11.     defaultreturn state; 
  12.   } 
  13.  

注意:上面我們已經提到多次,state是不可修改的,所以通過assign歸并我們對數(shù)據(jù)的操作,返回的是state副本修改后的對象,并非直接修改了輸入的state。

0x02. 創(chuàng)建唯一store

通過Redux中的createStore方法傳入reducer函數(shù)來創(chuàng)建整個應用的store。

  1. const store = createStore(countReducer); 

0x03. 修改state

通過store的dispatch方法來發(fā)起一個action。

  1. store.dispatch(incrementCreator(5)); 
  2.  
  3. store.dispatch(decrementCreator(4));  

完整demo 

  1. import { createStore } from 'redux'
  2.  
  3. // actions 
  4. const INCREMENT = 'INCREMENT'
  5. const DECREMENT = 'DECREMENT'
  6.  
  7. // actionCreator,可以視為創(chuàng)建action的語法糖 
  8. function incrementCreator(number) { 
  9.   return { 
  10.     type: INCREMENT, 
  11.     number, 
  12.   }; 
  13.  
  14. function decrementCreator(number) { 
  15.   return { 
  16.     type: DECREMENT, 
  17.     number, 
  18.   }; 
  19.  
  20. // 初始化state 
  21. const initialState = { 
  22.   counter: 0, 
  23. }; 
  24.  
  25. // reducers函數(shù),注意***一定要return state防止不能匹配到action的時候state丟失 
  26. function countReducer(state = initialState, action) { 
  27.   switch (action.type) { 
  28.     case INCREMENT: 
  29.       return Object.assign({}, { 
  30.         counter: state.counter + action.number, 
  31.       }); 
  32.     case DECREMENT: 
  33.       return Object.assign({}, { 
  34.         counter: state.counter - action.number, 
  35.       }); 
  36.     defaultreturn state; 
  37.   } 
  38.  
  39. // 創(chuàng)建store 
  40. const store = createStore(countReducer); 
  41.  
  42. // 訂閱store的修改 
  43. const unsubscribe = store.subscribe(function log() { 
  44.   console.log(store.getState()); 
  45. }); 
  46.  
  47. // 通過dispatch action來改變state 
  48. store.dispatch(incrementCreator(5)); //Object {counter: 5} 
  49. store.dispatch(decrementCreator(4)); //Object {counter: 1} 
  50.  
  51. // 取消訂閱 
  52. unsubscribe();  

 

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

2015-08-26 09:27:32

Facebook架構

2017-11-10 13:02:44

iOSUI代碼

2011-04-15 14:37:45

JavaCsv

2011-04-02 09:30:46

JavaIO

2021-08-05 07:28:25

虛擬化超融合架構

2021-03-30 08:50:26

零信任架構零信任網絡威脅

2016-12-19 11:17:48

架構 MVC

2019-10-11 10:52:42

Web架構MongoDB

2009-08-20 09:41:36

2023-06-12 15:43:44

鴻蒙智能家居開發(fā)

2021-12-15 10:05:25

軟件開發(fā) 技術

2023-12-17 14:36:05

2009-07-05 11:23:44

2021-03-22 11:49:19

架構運維技術

2018-08-29 13:57:40

前端性能測試Html5

2011-08-18 12:19:17

vSwitchVMNIC

2018-09-11 09:33:49

Redis高可用架構

2009-07-01 13:54:03

JSP注釋

2019-04-03 10:28:04

2009-07-07 13:58:59

jsp forward
點贊
收藏

51CTO技術棧公眾號

亚洲最大的网站| 久久不射电影网| 无码aⅴ精品一区二区三区浪潮| 完全免费av在线播放| 欧美大片1688| 亚洲精品乱码久久久久久久久| 精品午夜一区二区三区| 糖心vlog精品一区二区| 欧美日一区二区在线观看| 亚洲美女av电影| 一级片免费在线观看视频| 无遮挡爽大片在线观看视频 | 亚洲国产另类 国产精品国产免费| 大肉大捧一进一出好爽动态图| 黄色在线播放网站| 91小视频免费看| 成人在线中文字幕| 天天干天天色综合| 极品少妇一区二区三区| 色噜噜国产精品视频一区二区| 日韩女优在线视频| 亚洲三级在线| 欧洲亚洲精品在线| 国产婷婷一区二区三区| 高潮毛片在线观看| 国产三级欧美三级日产三级99| 产国精品偷在线| 国产精品久久久久久69| 天使萌一区二区三区免费观看| 九九九热精品免费视频观看网站| 国产精品理论在线| 色婷婷av一区二区三区丝袜美腿| 欧美一激情一区二区三区| 日本中文字幕高清| 免费观看成人性生生活片| 午夜av区久久| 91免费版看片| 久草资源在线| 国产精品久久久久精k8| 日韩精品在在线一区二区中文| 好吊色在线观看| 国产福利一区二区三区视频在线 | 国产成人高潮免费观看精品| 日韩欧美一区二区一幕| 国产精品v日韩精品v欧美精品网站 | 韩日欧美一区二区三区| 国产欧美精品一区二区三区介绍 | 91精品国产一区二区人妖| 亚洲最大成人在线观看| 四虎影视4hu4虎成人| 一本色道综合亚洲| www.xxx亚洲| 日本成人三级电影| 在线日韩av片| 日本美女高潮视频| 91伊人久久| 777奇米四色成人影色区| 污污的视频免费| 99精品美女视频在线观看热舞| 欧美日韩国产在线观看| 涩涩网站在线看| 日韩不卡在线视频| 欧美大片拔萝卜| 91人妻一区二区| 欧美在线关看| 亚洲日韩欧美视频一区| 亚洲色图日韩精品| 99久久激情| 另类天堂视频在线观看| 久一区二区三区| 国产精品日本欧美一区二区三区| 18一19gay欧美视频网站| 五月天激情四射| 蜜桃免费网站一区二区三区| 国产精品成人在线| 国产精品永久久久久久久久久| 久久99精品久久只有精品| 91社区国产高清| 丰满肉嫩西川结衣av| www.欧美日韩国产在线| 热re99久久精品国产99热| aiai在线| 亚洲欧美日韩人成在线播放| av免费看网址| 亚洲爱爱视频| 欧美www视频| 国产高清自拍视频| 欧美激情欧美| 久久人人爽人人| 日韩xxx视频| 国产乱人伦偷精品视频免下载| 国产精品毛片一区视频| 男人的天堂av高清在线| 亚洲免费在线观看视频| 国产黄视频在线| av在线亚洲一区| 亚洲国产精品yw在线观看| 无码人妻丰满熟妇啪啪欧美| 综合久久久久| 国产精品91在线观看| 99精品人妻无码专区在线视频区| 99在线热播精品免费| 亚洲午夜在线观看| av中文在线资源库| 欧美乱妇一区二区三区不卡视频| 北京富婆泄欲对白| 99久久综合| 日韩美女毛茸茸| 精品久久久久久亚洲综合网站| 久久午夜免费电影| 日本一道在线观看| 成人在线免费| 日韩精品视频在线免费观看| 中文字幕资源站| 国产一区二区三区成人欧美日韩在线观看| 日韩精品视频观看| 国产精品国产精品88| 久久久久久久久久久99| 91啦中文在线| 狠狠久久五月精品中文字幕| 激情文学亚洲色图| 国产91久久精品一区二区| 国内精品一区二区三区四区| 国产精品国产三级国产aⅴ| 欧美激情在线免费观看| 777久久久精品一区二区三区| 日韩三级精品| 日韩中文有码在线视频| 中文字幕精品无码一区二区| 成人深夜福利app| 伊人网在线免费| 亚洲精品一区av| 在线精品国产欧美| 免费看污视频的网站| 9久草视频在线视频精品| 欧美久久久久久久久久久久久久| 亚洲综合视频| 综合激情国产一区| 中文字幕一区二区三区人妻四季| 久久午夜色播影院免费高清 | 久久久久久久久久久久| 一区二区久久| 国产精品欧美日韩久久| 国产资源在线播放| 在线视频一区二区免费| 亚洲国产精品成人综合久久久| 亚洲国产电影| 激情视频一区二区| 午夜伦理福利在线| 亚洲区中文字幕| 免费av中文字幕| 国产欧美视频在线观看| 国产无套粉嫩白浆内谢的出处| 欧美日韩123| 国产精品色视频| 2017亚洲天堂1024| 在线成人高清不卡| 超碰手机在线观看| 高清在线成人网| 777精品久无码人妻蜜桃| 欧美日韩导航| 国产精品成人国产乱一区| 黄色的视频在线免费观看| 色噜噜狠狠色综合欧洲selulu| 手机毛片在线观看| 久久99国产精品久久99果冻传媒| 亚洲免费av网| 91麻豆精品激情在线观看最新| 久久久久久综合网天天| 婷婷综合激情网| 欧美性大战久久久久久久| 手机免费观看av| 国产精品一区二区在线播放| 久久亚洲国产成人精品无码区| 日韩精品a在线观看91| 国产成人一区二区三区小说| 欧美日韩视频在线播放| 日韩欧美中文一区二区| 国产特黄大片aaaa毛片| 日本一区二区三级电影在线观看| 涩涩网站在线看| 欧美日韩国产高清| 精品无码久久久久久久动漫| av有声小说一区二区三区| 久久久97精品| 黄色片一区二区| 欧美系列一区二区| 免费在线视频一区二区| 久久久久久久综合日本| 久久久久久久久久久久久久久国产| 欧美精品福利| 欧美一区二区三区四区夜夜大片 | 91精品国产欧美一区二区成人| 久久久久亚洲AV成人| 99久久久国产精品免费蜜臀| www.日日操| 欧美午夜一区二区福利视频| 欧美精品一区二区三区在线四季| 亚洲欧美久久精品| 97高清免费视频| 久操视频在线| 亚洲热线99精品视频| 精品久久久久成人码免费动漫| 一本久久精品一区二区| 欧美高清视频一区二区三区| 91麻豆免费看| 欧美69精品久久久久久不卡| 国产精品亚洲综合久久| 777久久精品一区二区三区无码| 亚洲人成精品久久久| dy888夜精品国产专区| 丝袜美腿一区| 97国产真实伦对白精彩视频8| 亚洲精品视频中文字幕| www.看毛片| 欧美日韩国产色站一区二区三区| 国产精品国产三级国产专区52| 亚洲三级免费电影| 精品人妻无码一区| 99精品黄色片免费大全| 精产国品一区二区三区| 老色鬼精品视频在线观看播放| 欧美韩国日本在线| 狠狠爱成人网| 特大黑人娇小亚洲女mp4| 欧美精品一区二区三区中文字幕 | 91在线不卡| 亚洲欧美另类在线观看| 亚洲aⅴ在线观看| 欧美精品一区二区三区四区| 99久久久无码国产精品免费| 欧美日韩高清一区二区| 欧美 亚洲 另类 激情 另类 | 97在线免费公开视频| 伊人成人在线视频| 蜜桃网站在线观看| 欧美日一区二区三区在线观看国产免| 色乱码一区二区三区熟女| 久久中文字幕av| 亚洲电影一二三区| 日本不卡免费一区| 亚洲mv在线看| 全球成人免费直播| 在线一区日本视频| 99久久综合| 日本久久高清视频| 永久91嫩草亚洲精品人人| 国产对白在线播放| 亚洲天天影视网| 中文字幕日韩精品无码内射| 欧美+日本+国产+在线a∨观看| 日本在线视频www色| 希岛爱理一区二区三区| 超碰免费在线公开| 一区二区三区在线| 18禁裸男晨勃露j毛免费观看| 韩日成人av| 91国视频在线| 日韩精品高清不卡| 午夜免费福利视频在线观看| 久久66热偷产精品| 韩国一区二区三区四区| 不卡一区中文字幕| 国产精品jizz| 中文字幕不卡在线播放| 亚洲人做受高潮| 亚洲一卡二卡三卡四卡五卡| 国产精品a成v人在线播放| 欧美日韩免费一区| 免费黄色一级大片| 91精品国产高清一区二区三区蜜臀 | 久久国产一区| 欧美日韩精品一区二区视频| 中文字幕成人一区| 亚洲国产免费| 爱情岛论坛vip永久入口| 国产在线麻豆精品观看| 日韩精品视频一区二区| 久久精品男人天堂av| 日本中文在线视频| 精品久久久久久久大神国产| 97人妻精品视频一区| 日韩精品一区二区三区在线观看| 午夜一区在线观看| 日韩中文字幕在线| 日本不卡网站| 91精品久久久久久| 麻豆一区二区| 综合操久久久| 午夜在线精品| 能看毛片的网站| 99re在线精品| 91精品国产高清一区二区三蜜臀| 韩曰欧美视频免费观看| 国产一区二区三区三州| 日韩av在线免费看| 麻豆传媒视频在线观看| 国产91对白在线播放| 亚洲狼人综合| 日本精品二区| 亚洲成人原创| 91香蕉视频免费看| 国产午夜一区二区三区| 久久久久人妻一区精品色欧美| 在线视频你懂得一区二区三区| 亚洲成a人片在线| 亚洲天堂久久av| 里番在线播放| 成人黄色中文字幕| 精品香蕉视频| 国产精品亚洲αv天堂无码| 国产一区在线视频| av在线播放中文字幕| 欧美日韩免费区域视频在线观看| 精品国自产在线观看| 日韩在线免费av| 日韩欧美精品电影| 精品国产一区二区三区日日嗨| 亚洲第一偷拍| 三上悠亚在线一区二区| 久久精品一区二区三区不卡| 国产精品23p| 精品欧美一区二区在线观看 | 亚洲免费在线视频| 亚洲综合免费视频| 国产一区二区三区在线看 | 黄色短视频在线观看| 亚洲一区二区精品3399| 国产精品一区二区免费视频| 亚洲色图国产精品| 激情开心成人网| 久久久久无码国产精品一区| 亚洲国产99| 久久久久久婷婷| 亚洲超丰满肉感bbw| 超碰福利在线观看| 久久久久久国产精品三级玉女聊斋| 在线视频成人| 永久免费在线看片视频| 国内精品伊人久久久久av影院| 国产白丝一区二区三区| 精品视频123区在线观看| 成人综合影院| 国产精品一区二区三区久久久| 精品国内自产拍在线观看视频| www.欧美日本| 国产精品乱码一区二区三区软件| 六月丁香婷婷综合| 亚洲欧美国产一本综合首页| 欧美日韩免费观看视频| 亚洲精品日韩在线观看| 久久99九九99精品| 午夜爱爱毛片xxxx视频免费看| 在线播放欧美女士性生活| av在线导航| 国产福利不卡| 国产视频一区三区| 91网站免费视频| 欧美三级电影网站| 麻豆av在线免费看| 91中文字精品一区二区| 伊人久久婷婷| 黑人巨大精品欧美| 欧美日韩免费一区二区三区| 久草免费在线观看| 国产精品免费一区二区| 亚洲女同在线| 九九热免费在线| 日韩欧美不卡一区| 亚洲涩涩在线| 一本一道久久a久久精品综合| 国产麻豆日韩欧美久久| 国产精品成人国产乱| 亚洲乱码国产乱码精品精| 国产成+人+综合+亚洲欧美| 潘金莲一级淫片aaaaa免费看| 成人免费视频网站在线观看| 欧美一区二区三区不卡视频| 精品激情国产视频| 久久午夜影院| 99re精彩视频| 亚洲高清免费视频| av网站在线播放| 高清av免费一区中文字幕| 日韩精品福利网| 久久久国产精品人人片| 亚洲丝袜av一区| 中文一区二区三区四区| 日日摸天天爽天天爽视频| 亚洲欧美日韩精品久久久久| 深夜福利在线观看直播| 91热精品视频| 日韩不卡手机在线v区| 青青草在线观看视频| 国产一区二区三区在线播放免费观看 | 成人免费视频网站入口| 日韩**一区毛片| 日产精品久久久久久久| 日韩一区av在线| 亚州av一区|