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

模塊化高擴展性的前端框架 KISSY

開發 前端
淘寶在 2012 年 12 月 25 號發布了 KISSY 最新版本 1.3, 在這篇文章中我將對 KISSY 1.3 結合在淘寶的實踐做一次全面概述,希望能對想了解淘寶前端技術的朋友有所幫助。

介紹

伴隨著淘寶的快速發展,誕生已三年多的 KISSY 也取得了巨大的成長。 目前應用于阿里集團的多個業務團隊,特別是淘寶,天貓,一淘的絕大多數業務都采用了 KISSY, 滿足了從前臺的 web page 到后臺的 web app 再到移動端應用(起步階段)的廣泛需求。

在阿里集團以外也有不少公司和個人使用 KISSY,交流旺旺群成員已將近千人, 在 github 源碼庫也時常有外部人員參與提交 issue,發起 pull request,另外在 oschina 等開源社區也受到了一定的關注。

淘寶在 2012 年 12 月 25 號發布了 KISSY ***版本 1.3, 在這篇文章中我將對 KISSY 1.3 結合在淘寶的實踐做一次全面概述,希望能對想了解淘寶前端技術的朋友有所幫助。

為什么選擇 KISSY

KISSY 作為國內一個完全自底向上開發起來的框架,誕生三年來歷經淘寶的各種業務變化的考驗,體現了 KISSY 的可擴展性,高穩定性和可維護性。 它在以下方面具有一定優勢:

·擁有大量的中文文檔: 方便不熟悉英文的國內開發者快速入門學習。

·在國內具備一定的社區規模: 通過旺旺群,google group,微博,官方網站等用戶隨時可以和開發人員快速交流。

·開發便捷: 在模塊化,組件以及工具輔助方面形成了一套完善的機制,可以高效應對日常的需求開發。

·綜合借鑒國際先進的框架類庫設計:

·在吸收 jquery 穩定的 dom 核心之外提供了模塊化,按需加載的基礎架構。

·在學習 yui 堅實的架構之外著重于組件開發,積累了一批貼近淘寶應用的組件集。

·在研究 extjs 優秀的組件設計之外探索輕量級,可擴展的組件開發,同時滿足 web app 與 web page 的需求。

·應用場景廣泛: 在各種設備上都有所支持。

·可以使用 seed 和 core 簡單快速地搭建頁面

·也可以進一步使用 KISSY 的大量組件構建富客戶端應用

·也可以使用統一的 API 開發移動應用

·更可以利用 KISSY 靈活的模塊化機制高效進行大規模團隊協作

不過由于 KISSY 開發時間還不長,在組件完備性以及可測試性上有待進一步完善,我們堅信這種情況會隨著團隊的不斷努力而逐步解決。

架構

KISSY 的架構由淘寶復雜多變的業務決定,在松耦合、無污染、模塊化的核心前提下,也從眾多優秀類庫和框架的思路得到一些啟發。 如圖1所示:

圖1: KISSY 整體架構圖

KISSY-architecture

·***層的 seed 是類似目前流行的 AMD 模塊化機制實現,為了更高效地共享通用組件加入了自動 combo 的支持, 另外 seed 也包含一些像 each(循環數組以及對象),mix(合并對象),param(編碼對象為 url), ready(等待 dom ready)等常用的靜態工具方法以及 Path,Uri,Promise,UA 等模塊化需要用到的基礎類。

·seed 之上的第二層是處理 dom 兼容性的核心模塊,其中每個模塊都是由更小的模塊打包合并而來。 特殊之處在于 KISSY 把一些不標準瀏覽器的兼容代碼單獨抽取成內部模塊,用戶可用的外部模塊會根據不同的設備分別依賴不同的內部模塊。 雖然加載不同的具體實現模塊代碼,但是最終提供給用戶的是一致的模塊名,api 以及漸進增強的能力。 例如用戶使用 event 模塊,在 touch 設備上會加載 event/touch 模塊從而可以使用一些手勢事件, 而在 ie<9 下會加載 event/hashchange 模塊,以類似 es5-shim 的方式來補全瀏覽器的能力,提供給用戶統一的 api。

·第三層為組件架構層。提供包括模擬 es5 屬性管理,插件和多繼承機制的 rich-base 模塊, 所有 UI 組件渲染機制的基類 component 模塊以及具備一定邏輯的模板引擎 xtemplate。

·第四層為獨立可用的 KISSY 組件,用戶可自由組合繼承搭建最終頁面。包括:

·工具模塊,例如拖放,調整大小,操作 swf,操作樣式表,mvc(model,router)架構等。

·UI 組件,例如彈窗,菜單,標簽,日歷等。

·最外層為 KISSY gallery,KISSY 社區開發的一些通用模塊會放入 gallery 中, 從而可以方便得在所有使用 KISSY 的團隊間共享模塊。 如果該模塊確實十分通用則會經過重構放入 KISSY 自身。

 #p#

模塊化機制

介紹

由于淘寶業務的復雜,為了提高代碼的可維護性和重用性,KISSY 在早期就引入了簡單的模塊化機制,并且隨著前端技術的發展而不斷改進。 KISSY 1.3 的模塊化機制與目前的 AMD 規范比較類似,并根據淘寶自身業務特點加入了自動 combo 功能。

注:combo 舉例:請求 a.tbcdn.cn/??a.js,b.js 相當于把 a.tbcdn.cn/a.js 與 a.tbcdn.cn/b.js 的文件內容合并后返回。

KISSY 之外的每個模塊必須屬于一個包,一個包內可以有很多相關模塊,它們具備相同的加載基地址。 包的設計一方面通過約定優先配置的原則可以減少同一個包內多個模塊的請求路徑配置, 另一方面也方便了部署在不同地址的多個應用間互相調用模塊。 所以開發應用前請先配置包地址,例如:

  1. KISSY.config('packages', {  
  2.     myapp: {  
  3.         base:'./x' 
  4.     }  
  5. }); 

之后在 x 目錄下建立 myapp 目錄,并在 myapp 目錄下新建模塊 a 對應的代碼文件: a.js

  1. KISSY.add(function(S,JSON){  
  2.     return JSON.stringify({a:'ok'});  
  3. },{  
  4.     requires:['json']  
  5. }); 

以及依賴 a 的入口主模塊 main 的代碼文件: main.js

  1. KISSY.add(function(S,DOM,a){  
  2.     S.ready(function(){  
  3.         DOM.text(document.body,a);  
  4.     });  
  5. },{  
  6.     requires:['dom','./a']  
  7. }); 

應用模塊可依賴 KISSY 自身模塊,例如以上的 dom json。

***新建 index.html 來調用應用模塊:

  1. // ... 上述包配置  
  2.  
  3. KISSY.use('myapp/main',function(){  
  4.     alert('page loaded');  
  5. }); 

工具支持

打開上述 index.html 會發現鏈接數不少,有從淘寶 cdn 的鏈接也有本地的鏈接。 因此 KISSY 提供了配套工具 KISSY Module Compiler 進行腳本打包以及抽取依賴后用 cdn combo 來解決這個問題, 對工具有興趣可查看參考資料中的鏈接地址,以下僅作簡單介紹:
腳本打包

如果應用腳本非常多,可以用 module compiler 將入口模塊 main 以及其依賴的所有應用模塊打包壓縮到 main-min.js 中, 同時 module compiler 會生成一份依賴描述文件:

  1. KISSY.config('modules',{  
  2.     'myapp/main':{  
  3.         requires:['dom','json']  
  4.     }  
  5. }); 

接著設置 KISSY 啟用 combo 模式,并載入上述的依賴描述文件:

  1. KISSY.config('combine',true); 

***修改 index.html 引用 seed-min.js,打開網絡面板后會發現現在只產生兩個鏈接請求:

  1. http://a.tbcdn.cn/s/kissy/??dom/base,json/native.js  
  2.  
  3. http://localhost/myapp/main-min.js 

注:在 ie<9 等非標準瀏覽器下***個鏈接地址會加上 dom/ie json/json2 等腳本地址

抽取依賴

如果應用腳本不多,并且自身服務器也支持 combo 的話,那么可以采用更加靈活的抽取依賴后全部 combo 的解決方案。 這時 module compiler 會做兩件事情:

補全模塊名,例如 a.js 變為

  1. KISSY.add('myapp/a',function(S,JSON){  
  2.     return JSON.stringify({a:'ok'});  
  3. },{  
  4.     requires:['json']  
  5. }); 

將各個模塊的依賴收集為一個單獨的文件,例如

  1. KISSY.config('modules',{  
  2.     'myapp/main':{  
  3.         requires:['dom,','./a']  
  4.     },  
  5.     'myapp/a':{  
  6.         requires:['json']  
  7.     }  
  8. }); 

接著設置 KISSY 啟用 combo 模式,并載入上述的依賴描述文件:

  1. KISSY.config('combine',true); 

訪問 index.html,打開網絡面板會發現同樣只產生兩個鏈接請求:

  1. http://a.tbcdn.cn/s/kissy/??dom/base,json/native.js  
  2. http://localhost/myapp/??a.js,main.js 

KISSY-PIE

KISSY 還提供了一套基于約定的前端打包解決方案 KISSY-PIE,通過統一的約定,提升應用的可維護性,將大家從重復的打包腳本的編寫中解放出來。

KISSY-PIE 包括了以下功能:

·JS(KISSY 的模塊編譯,HTML 模板到 KISSY 模塊編譯,代碼壓縮)

·CSS(基于 CSS-Combo 的合并,壓縮)

·Less

·Sass

并且在命令行之外還提供了 web 操作界面,如圖2所示:

圖2: KISSY-PIE 打包界面

#p#

組件機制

核心

KISSY 目前包括眾多即開即用的組件, 包括工具性質的例如 dd(拖放),resizable(調整大小),swf(插入flash),stylesheet(操作樣式表)等 和 UI 性質的例如 overlay(彈窗),menu(菜單),menubutton(菜單按鈕),imagezoom(放大鏡),editor(編輯器), tabs(標簽),tree(樹)等。 這些組件都基于公共的 rich-base 以及 component 模塊: rich-base 和 component 模塊充分利用了 javascript 語言的 mixin 和原型鏈繼承, 提供了屬性綁定,類繼承,擴展以及插件等特性。

其中的重點是 Component,它是所有 UI 組件的基類,提供了兩種通用的渲染方式:

·組件實例由 javascript 完全渲染 dom 樹。其中對于 menu 等組件在 javascript 完全渲染的情況亦可以通過 json 初始化內部嵌套組件。例如

  1. KISSY.use('menu',function(S,Menu){  
  2.     // javascript 渲染一個菜單到 body  
  3.     new Menu({  
  4.         children:[{  
  5.             content:'item1' 
  6.         }]  
  7.     }).render();  
  8. }); 

·從已有的 dom 樹節點得到組件實例。

下面以 KISSY 中常用的一個組件 Overlay 為例講解下,首先看圖3類結構圖:

圖3: Overlay 類結構圖

Overlay 繼承自 Component,然后靜態地由一些分散的功能類擴展而來,包括定位功能類,對齊功能類,關閉功能類,遮罩層功能類, 這些功能類底層利用 javascript 的 mixin 功能將自己的方法和屬性匯入到 Overlay 類中,使得最終的 Overlay 具備了這些能力。

組件在運行時也可以選擇性依賴某些插件模塊,將插件的功能注入到組件中去, 既避免了一個組件過于功能繁多導致的文件過大,又大大增強了組件的可擴展性。

以下為 Overlay 的使用示例代碼:

  1. KISSY.use('overlay,component/plugin/resize',function(S,Overlay,ReizePlugin){  
  2.  
  3.     // 完全由 javascript 將組件實例渲染到 body 中  
  4.     new Overlay({  
  5.         content:'test' 
  6.     }).render();  
  7.  
  8.     // 從已有的 dom 樹節點生成 Overlay 實例  
  9.     var overlay = new Overlay({  
  10.         srcNode:'#existing' 
  11.     }).render();  
  12.  
  13.     // 運行時加入調整大小的插件能力  
  14.     overlay.plug(new ReizePlugin({  
  15.         handles:['t']  
  16.     }));  
  17.  
  18. }); 

Brix

除了 KISSY 自身的組件機制,一淘開發人員根據自己的應用特點在組件開發和使用上找尋了另一條途徑。即 Brix 解決方案:

·基于統一的渲染方式:模板(tmpl)和數據(data)產生html片段后使用 innerHTML 到 DOM 節點中.

·提取子模板,結合數據的更新,達到局部刷新,開發者不需要再關心頁面的表現,而專心于數據的變化。

·DOM 節點自定義屬性設置組件標志,Brix 提供 Pagelet 按照統一的方式實例化組件。

圖4: Brix 類庫結構

設備普適性

當前 javascript 的使用范圍越來越廣,平臺包括 pc 瀏覽器與讀屏器,nodejs,移動端瀏覽器以及各種外殼,window8 等。 KISSY 也盡量在各個平臺給予支持,保證統一的開發體驗。

在 nodejs 上 KISSY 通過調整模塊加載器使得 KISSY 可以直接將自身的模塊加載到 nodejs 中使用。例如

·可以使用 KISSY 的 UA 解析模塊來分析日志中的 UA 串

·可以載入 jsdom 模塊在 nodejs 環境下做單元測試

·用 xtemplate 在服務器端渲染前端模板

·使用 KISSY 的 htmlparser,color 等工具模塊

經統計約有 1000 萬殘疾人用戶在使用淘寶,其中不少是受影響***的盲人朋友,他們實際上是通過讀屏器來和淘寶交互, KISSY 組件通過遵循 WAI-ARAI 規范來給視力受損的朋友提供無障礙的訪問環境,網上人人平等。

KISSY 也計劃對 windows8 進行支持,在即將發布的 tmall windows8 app 中僅僅通過使用 KISSY 的模塊化機制以及一些語法糖 API 就可以達到和平常開發一樣的高效。

隨著用戶越來越多地在移動設備上購物產生交易,移動應用在流量的比重上也越來越多,KISSY 及時適配移動設備, 目前在兩方面進行了支持:

·根據設備條件加載。對于移動端由于網絡速度等原因對于文件大小比較敏感,KISSY 為了保證一致的 API 又不能隨意刪減功能, 因而采取了獨立兼容模塊的方法來保持瘦身。在架構一節也闡述過,KISSY 對基礎核心模塊中的兼容非標準瀏覽器的模塊進行選擇性加載, 同時移動設備上都是標準瀏覽器,從而可以大大減少實際下載到用戶設備上的代碼大小。部分組件也實行了拆分,將 pc 的功能交互獨立到單獨的模塊,在移動觸摸設備上只加載觸摸交互需要用到的模塊。

·漸進增強 API。對于觸屏設備,很多交互是建立在手勢操作上。而手勢操作除了在 safari 上有 gesture 事件做有限支持外, 在 android 上則完全沒有對應事件。 得益于 KISSY 易于擴展的事件機制,KISSY 在底層多點觸摸 touch 事件的基礎上模擬出了 tap rotate pinch 等觸屏設備上獨有的事件,這對于用戶則是透明,用戶完全可以把這些事件當做原生事件來使用,例如

  1. KISSY.use('event',function(S,Event){  
  2.     // 監聽 div 上的 tap 事件  
  3.     Event.on('#div','tap',function(){  
  4.     });  
  5. }); 

ZOOJS

另外淘寶北京團隊還基于 KISSY 核心打造了專門面向 Web 無線設備的一整套工具庫 ZOOJS, 包含控件級的事件支持、觸屏行為的封裝、富控件、皮膚、App的基礎架構等。 這套獨特的 Web 無線解決方案力爭將 HTML5 和 CSS3 的優勢發揮至***,做到即調即用。

測試與持續集成

KISSY 經過三年的開發代碼庫已經相當龐大了,模塊間還常常有依賴關系,修改代碼有牽一發而動千鈞的后果。 為了應對此問題,KISSY 也在逐漸完善單元測試,自動化測試與持續集成。

單元測試

KISSY 一個模塊的常見目錄結構如圖5所示:

圖5: 模塊目錄結構

其中 tests 目錄下為測試資源,runner 目錄下啟動測試的 html 文件,specs 下為對應模塊的單元測試代碼。 KISSY 采用的單元測試框架為 jasmine ,測試代碼舉例如下:

  1. describe('S.mix',function(){  
  2.     it('works for simple case',function(){  
  3.         expect(S.mix({x:1},{y:1})).toEqual({x:1,y:1});  
  4.     });  
  5. }); 

然后打開啟動測試的 html 文件 即可看到圖6所示的單元測試結果:

圖6: 單元測試結果

持續集成

為了提高測試效率,KISSY 還依賴 travis 平臺和 phamtomjs 進行持續集成測試。 每次提交代碼都會在 travis 平臺上啟動 phantomjs 來運行 KISSY 所有模塊的單元測試代碼。 如圖7所示:

圖7: travis 平臺上的 KISSY

淘寶應用場景舉例

淘寶目前的絕大多數頁面已經采用 KISSY 搭建,這次我選取兩個大家使用比較多的應用來介紹下 KISSY 在淘寶的實踐:

店鋪頁面

店鋪頁面是商家店鋪的門戶,除了淘寶頁頭之下都可以由商家自定義內容,如圖8所示:

圖8:典型的店鋪頁面

可以看出頁面本身就是區塊化的組織,在程序內部也是分成很多個模塊,例如店內搜索模塊,寶貝分類模塊,銷量統計模塊等, 每個模塊負責頁面一塊區域的交互實現,這些模塊又會調用 KISSY 的模塊來實現自身的邏輯。 而每個商家的店鋪可能使用到的區塊并不相同,這也意味著每個商家店鋪所用到的程序模塊也不相同。

店鋪模塊與 KISSY 模塊依賴關系如圖9所示:

圖9:店鋪模塊與 KISSY 模塊的關系

在實際開發中配置店鋪應用為一個包,其內的所有模塊都放入這個包內,***由頁面初始化腳本加載當前店鋪需要的模塊列表。例如:

  1. KISSY.use('shop/search,shop/category,...'); 

在線上會發出兩個 combo 請求:一個為店鋪頁面需要的應用模塊集,一個為 KISSY 自己的模塊集,例如

  1. http://a.tbcdn.cn/s/kissy/1.3.0/??dom/base.js,event/base.js,overlay.js...  
  2.  
  3. http://a.tbcdn.cn/p/shop/??search.js,category.js... 

寶貝詳情應用

寶貝詳情頁面用來展示商家單個商品的詳細信息,評價,成交趨勢等信息,并為下一步購買做準備,是目前淘寶訪問量***的頁面。

該應用和店鋪應用緊密相關,從頁面可以看出,很多區塊和店鋪頁面對應區塊相同,實際上在代碼層面也是引用同一份模塊, 首先寶貝詳情應用和店鋪應用一樣加載當前頁面用到的店鋪模塊,然后再加載這個頁面本身的應用模塊。 但是寶貝詳情業務本身邏輯十分復雜,若像店鋪應用一樣也是采用模塊 combo 的方式則會導致請求 url 過長, 進而 KISSY 會對過長的 combo url 拆分成多個短的 url,反而適得其反。 因此這里會把寶貝詳情頁自身的模塊打包合并,將自己模塊的主模塊和依賴模塊都合并到主模塊中去, 最終線上會發出三個請求,其中兩個為 combo 請求,一個為非 combo 請求,例如:

  1. http://a.tbcdn.cn/s/kissy/1.3.0/??dom/base.js,event/base.js,overlay.js...  
  2. http://a.tbcdn.cn/p/shop/??search.js,category.js...  
  3. http://a.tbcdn.cn/p/detail/main.js 

總結

KISSY 才剛剛處于成長初期,相對于國外成熟框架尚有不小差距,不過依然承受住了淘寶復雜多變業務的考驗。 下一步 KISSY 會繼續完善基礎組件例如 date,datasource,selector,graphics 等, 重構已有組件例如 switchable,calendar 等, 增加 package manager 方便基于 KISSY 模塊的提交與共享,補全測試用例,實現代碼覆蓋率檢測,不斷提高運行穩定性。 將來我們堅信 KISSY 會隨著淘寶的發展而繼續成長,也會隨著國內外前端技術的不斷發展而不斷進步。 希望有興趣的你也能加入到 KISSY 開發中,一起學習進步,享受成長的樂趣。

原文鏈接:http://ued.taobao.com/blog/2013/03/modular-scalable-kissy/

責任編輯:張偉 來源: 淘寶UED
相關推薦

2024-04-18 14:19:39

UPS系統模塊化數據中心

2012-06-04 11:04:46

虛擬化

2020-08-18 08:04:16

DubboSPI框架

2017-05-08 08:44:07

TCP負載均衡擴展性架構

2020-10-28 08:07:58

TCP負載均衡網絡協議

2023-12-20 09:26:20

高可用高吞吐高擴展性

2021-09-02 09:42:11

測試軟件可擴展性開發

2020-09-17 10:30:21

前端模塊化組件

2020-09-18 09:02:32

前端模塊化

2010-06-30 17:15:39

向外擴展SQL Ser

2010-07-21 11:21:05

SQL Server

2010-07-01 11:38:13

向外擴展 SQL Se

2022-09-05 15:17:34

區塊鏈比特幣可擴展性

2018-04-10 14:38:10

區塊鏈

2009-09-03 17:18:40

C#擴展性對象模型

2015-05-13 17:15:01

Elasticsear分布式搜索插件

2022-09-05 09:01:13

前端模塊化

2023-10-06 12:08:53

Java代碼

2009-09-03 17:33:08

C#常規擴展性模型

2013-08-20 15:31:18

前端模塊化
點贊
收藏

51CTO技術棧公眾號

亚洲乱码在线观看| 三级黄色片网站| 超碰在线97国产| 国产亚洲午夜高清国产拍精品| 国产成人综合精品在线| 午夜剧场免费在线观看| 狼人精品一区二区三区在线| 欧美日韩免费一区二区三区视频| 国产a级黄色大片| 可以免费看污视频的网站在线| 九九久久精品视频 | www.超碰在线| 中文字幕中文在线不卡住| 国产三级精品在线不卡| 91国产免费视频| 久久国产精品99国产| 欧美成人自拍视频| 少妇无套高潮一二三区| 国产做受高潮漫动| 国产一区精品| 国产精品综合av一区二区国产馆| 91国内产香蕉| 潮喷失禁大喷水aⅴ无码| 国产精品午夜av| 欧美乱熟臀69xxxxxx| 中国丰满人妻videoshd| 亚洲第一图区| 中文字幕五月欧美| 日本一区视频在线播放| 日本黄色大片视频| 国产精品一二三四五| 国产精品午夜国产小视频| 日本少妇裸体做爰| 欧美午夜不卡| 久久综合色影院| 中国美女黄色一级片| 亚洲人成网77777色在线播放| 日韩欧美国产电影| 成人av毛片在线观看| 成人精品高清在线视频| 免费观看亚洲视频大全| 亚洲一区在线视频观看| 91社在线播放| 欧美尤物美女在线| 国产精品丝袜黑色高跟| 日本精品一区二区三区高清 久久| 色一情一乱一乱一区91av| 国产一区不卡精品| 成人黄色中文字幕| 在线观看毛片av| 日韩中文字幕区一区有砖一区| 97在线日本国产| 日产欧产va高清| 黄色在线成人| 欧美精品videos性欧美| 国产一级aa大片毛片| 欧美精品一卡| 孩xxxx性bbbb欧美| 国产亚洲成人av| 日韩天天综合| 97av在线视频免费播放| 成人在线观看小视频| 欧美综合精品| 日韩精品一二三四区| 国产三级视频网站| 欧美美乳视频| 北条麻妃一区二区三区中文字幕 | 中文字幕 人妻熟女| 三级成人在线视频| 国产精品视频区1| 一卡二卡在线观看| 国产福利一区二区三区视频| 国产99在线播放| 日本1级在线| 国产精品久久午夜| 自拍偷拍视频在线| 激情av在线播放| 欧美色xxxx| 亚洲精品久久久中文字幕| 亚洲青青一区| 亚洲成人三级在线| 免费网站在线高清观看| 影视亚洲一区二区三区| 91国产美女在线观看| 黄色网址中文字幕| 国产一区欧美一区| 亚洲一区二区少妇| 欧美视频xxx| 国产网红主播福利一区二区| 中文字幕中文字幕99 | 亚洲国产成人91porn| 亚洲人成无码www久久久| 午夜不卡一区| 亚洲韩国欧洲国产日产av| 国产精品久久免费观看| 欧美日韩理论| 国产精品久久久久久久久久小说| 国产美女www爽爽爽视频| 99视频在线精品| 亚洲一区精品视频| bl在线肉h视频大尺度| 欧美午夜一区二区三区| 日本wwww色| 成人影院天天5g天天爽无毒影院| 欧美精品在线免费| 波多野结衣一本一道| 国产成人免费视频| 亚洲一区高清| 激情黄产视频在线免费观看| 91精品国产综合久久福利| www在线观看免费视频| 91精品高清| 国产精品久久久久99| 日本波多野结衣在线| 最近中文字幕一区二区三区| 成人黄色片视频| 91精品日本| 日韩在线视频一区| 午夜久久久久久久久久影院| 成人性生交大片免费看中文网站| 亚洲砖区区免费| 国产精品迅雷| 亚洲精品www| 欧美黄色免费在线观看| 九九精品视频在线看| 青青草成人激情在线| 成入视频在线观看| 精品久久久久久久一区二区蜜臀| 午夜激情福利电影| 免费黄网站欧美| 欧美不卡福利| 国产伦子伦对白在线播放观看| 精品日韩一区二区三区| 侵犯稚嫩小箩莉h文系列小说| 免费成人av资源网| 日韩av电影免费在线观看| 26uuu亚洲电影| 亚洲精品福利资源站| 国产在线观看99| 高清shemale亚洲人妖| 午夜久久久久久久久久久| 欧美伊人亚洲伊人色综合动图| 国产一区二区日韩精品欧美精品| 亚洲s码欧洲m码国产av| 91丨九色丨尤物| www一区二区www免费| 西野翔中文久久精品国产| 91国内在线视频| 四虎精品在线| 色狠狠综合天天综合综合| 欧美色图亚洲激情| 久久一区二区三区超碰国产精品| 久久久一本精品99久久精品| 中文在线аv在线| 亚洲欧美中文另类| 中文字幕在线天堂| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 色综合视频一区中文字幕| 99久久精品国产色欲| 一区二区三区欧美激情| 在线观看一区二区三区四区| 狠色狠色综合久久| 久久99久久精品国产| 亚洲欧洲自拍| 少妇激情综合网| 国产视频一区二区三区四区五区| 亚洲精品写真福利| 岛国精品资源网站| 葵司免费一区二区三区四区五区| 四虎影视永久免费在线观看一区二区三区 | 神马午夜电影一区二区三区在线观看| 亚洲v中文字幕| 91网站免费视频| 麻豆精品一区二区| 精品人妻人人做人人爽| 亚洲精品进入| 成人激情视频网| 2020国产在线| 中文字幕日韩专区| 午夜精品一区二区三| 欧美日韩中文字幕| 国产喷水在线观看| av在线播放一区二区三区| 亚洲五月天综合| 欧美va天堂| 女同一区二区| 国产精一区二区| 69久久夜色精品国产69| 最新电影电视剧在线观看免费观看| 欧美一区二区三区喷汁尤物| 精品成人av一区二区在线播放| 国产欧美一区二区精品性色 | 久久亚洲欧美日韩精品专区 | 国产午夜精品福利| 在线观看你懂的视频| 美女爽到呻吟久久久久| 成人免费看片视频在线观看| 欧美日韩爱爱| 国产另类第一区| 国产成人福利夜色影视| 97视频免费观看| 国产午夜精品久久久久免费视| 日韩黄色在线免费观看| 一二三区在线播放| 精品久久久久久中文字幕一区奶水| 成年人网站在线观看视频| 91麻豆成人久久精品二区三区| 国产精品探花在线播放| 免费在线欧美黄色| 日韩 欧美 视频| 欧美电影一二区| 日本黑人久久| 精品人人人人| 91入口在线观看| 成人av在线播放| 青青久久av北条麻妃海外网| 国产探花视频在线观看| 精品国产美女在线| 国产在线视频网站| 亚洲欧美视频在线| 欧美自拍偷拍一区二区| 日韩午夜精品电影| 影音先锋国产资源| 色狠狠桃花综合| 亚洲 欧美 日韩 在线| 性久久久久久久久| 精品人妻在线播放| 一区二区三区小说| 91在线播放观看| 亚洲图片欧美激情| 欧美成人久久久免费播放| 国产女主播视频一区二区| 熟妇高潮精品一区二区三区| 粉嫩av一区二区三区粉嫩| 熟妇无码乱子成人精品| 国产一区二区在线观看视频| www.色欧美| 久久99国产精品久久99| 午夜精品中文字幕| 免费高清在线一区| 国产一区二区在线免费播放| 日韩va欧美va亚洲va久久| 美女网站免费观看视频| 日韩精品每日更新| 91淫黄看大片| 麻豆一区二区三区| 欧美成人福利在线观看| 美女诱惑一区二区| gogogo高清免费观看在线视频| 精品在线观看免费| 精品国产鲁一鲁一区二区三区| 韩国精品一区二区| 下面一进一出好爽视频| 国产成人精品综合在线观看| 中文字幕第3页| 91在线码无精品| 韩国女同性做爰三级| 日本一区二区三区国色天香 | 91久久久久久久久久久久久| 成人黄色91| 97视频资源在线观看| 精品人人人人| 日韩女优中文字幕| 视频在线不卡免费观看| 欧美 亚洲 视频| 国产亚洲永久域名| 超碰在线97免费| 国产在线视视频有精品| 亚洲少妇一区二区| 久久综合99re88久久爱| 国产探花视频在线播放| 亚洲精选免费视频| 国产一区二区99| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 91成年人网站| 日韩毛片一二三区| 国产亚洲精品久久久久久无几年桃| 精品久久久久久| 中文字幕免费在线看| 欧美一区二区久久| 天堂а√在线8种子蜜桃视频 | 久久久久欧美| 婷婷中文字幕一区| 国产精品国产亚洲精品看不卡| 天堂在线一区二区| av中文字幕网址| 99久久伊人精品| 久久久久99精品成人| 亚洲国产你懂的| 中文字幕av影视| 欧美精品一区二区高清在线观看| 黄网站在线观看| 欧美精品电影在线| 日韩不卡在线| 亚洲一区二区在线观| 国产999精品在线观看| 国产伦精品一区二区三区免费视频| 综合伊思人在钱三区| 在线观看福利一区| 免费精品视频| 久久久久久无码精品人妻一区二区| 99视频超级精品| 亚洲天堂一级片| 日韩人在线观看| 亚洲欧美黄色片| 日韩在线资源网| 欧美性猛交xxx高清大费中文| 亚洲一区美女视频在线观看免费| 美女久久久久| 极品粉嫩国产18尤物| 国产综合成人久久大片91| 新91视频在线观看| 婷婷久久综合九色综合绿巨人| 国产精品国产三级国产aⅴ| 亚洲色图综合网| 永久免费毛片在线播放| 成人av男人的天堂| 久久精品亚洲人成影院 | 日本成人三级| 综合在线视频| 亚洲五月天综合| 91亚洲精品乱码久久久久久蜜桃| 日本一二三区在线观看| 91黄色免费版| 男同在线观看| 欧美一级电影免费在线观看| 我要色综合中文字幕| 亚洲永久一区二区三区在线| 日韩综合在线视频| 国产美女喷水视频| 午夜国产精品一区| 性做久久久久久久久久| 久久久精品久久| 免费一级欧美在线观看视频| 日韩精品大片| 天堂va蜜桃一区二区三区 | 国产精品传媒入口麻豆| 丁香社区五月天| 亚洲欧美国产一区二区三区| 蜜桃视频在线观看播放| 久久精品成人一区二区三区蜜臀| 极品日韩av| 国产大学生视频| 五月婷婷另类国产| 五月天婷婷在线播放| 91国产精品视频在线| 私拍精品福利视频在线一区| 91国视频在线| 2017欧美狠狠色| 无码人妻久久一区二区三区 | 欧美日韩黄色网| 91精品国产福利| 91蜜桃在线视频| 成人在线资源网址| 精品96久久久久久中文字幕无| 一本色道久久hezyo无码| 亚洲高清视频在线| 三级无遮挡在线观看| 欧美在线视频网| av影片在线一区| 亚洲免费成人在线视频| 一区二区成人在线| 神宫寺奈绪一区二区三区| 亲爱的老师9免费观看全集电视剧| 欧美人妖在线| 日日干日日操日日射| 亚洲一区二区三区视频在线播放| 乱色精品无码一区二区国产盗| 97成人在线视频| 国产日产精品_国产精品毛片| 永久免费的av网站| 一区二区免费在线| 男女污视频在线观看| 成人网在线免费观看| 欧美在线高清| 右手影院亚洲欧美| 欧美日本一区二区在线观看| 亚洲小说区图片区都市| 久久免费99精品久久久久久| 六月丁香婷婷久久| 免费一级a毛片夜夜看| 精品亚洲aⅴ在线观看| 成人在线视频免费| 免费看毛片的网址| 日本一区二区免费在线| 精品黑人一区二区三区国语馆| 欧美一级免费看| 香蕉国产精品| 五十路六十路七十路熟婆| 欧美无砖砖区免费| 国精一区二区三区| 亚洲国内在线| 成人avav影音| 91 中文字幕| 欧美亚洲成人免费| 亚洲欧美网站在线观看| 亚洲精品视频大全| 欧美一区二区三区视频免费| 欧美极度另类| av网站手机在线观看|