久久精品中文字幕av,av.涩涩涩涩涩涩涩涩,亚洲国产日韩欧美精品成人久久久,成人福利电影免费在线观看,日产国产原创av,日韩av午夜激情,bt天堂中文字幕,超级碰人妻在线视频,欧美老熟妇久久一区二区

企業(yè)??AI智能體構(gòu)建引擎,智能編排和調(diào)試,一鍵部署,支持知識(shí)庫和私有化部署方案 廣告
# MVVM MVVM(Model View ViewModel)是一種基于MVC和MVP的架構(gòu)模式,它試圖將用戶界面(UI)從業(yè)務(wù)邏輯和行為中更加清晰地分離出來。為了這個(gè)目的,很多例子使用聲明變量綁定來把View層的工作從其他層分離出來。 這促進(jìn)了UI和開發(fā)工作在同一代碼庫中的同步進(jìn)行。UI開發(fā)者用他們的文檔標(biāo)記(HTML)綁定到ViewModel,在這個(gè)地方Model和ViewModel由負(fù)責(zé)邏輯的開發(fā)人員維護(hù)。 ## 歷史 MVVM(如其大名)最初是由微軟定義,用于Windows Presentation Foundation(WPF)和Silverlight,在John Grossman2005年的一篇關(guān)于Avalon(WPF的代號(hào))的博文中被官方推出。它也作為方便使用MVC的一種可選方案,為Adobe Flex社區(qū)積累了一些用戶量。 先于微軟采用的MVVM名稱,在社區(qū)中已經(jīng)有了一場(chǎng)由MVC像MVPM遷移的運(yùn)動(dòng):模型-視圖-展現(xiàn)模型。Marton Fowler在2004年為那些對(duì)此感興趣的人寫了一篇關(guān)于展現(xiàn)模型的文章。展現(xiàn)模型的理念的內(nèi)容要遠(yuǎn)遠(yuǎn)長于這篇文章,然而這篇文章被認(rèn)為是這一理念的重大突破,并且極大的捧紅了它。 在微軟推出作為MVPM的可選方案的MVVM后,就出現(xiàn)了許多沸沸揚(yáng)揚(yáng)的“alt.net”圈子。其中許多聲稱這個(gè)公司在GUI世界的霸主地位給與了它們將社區(qū)統(tǒng)一為整體的機(jī)會(huì),出于市場(chǎng)營銷的目的,按照它們所高興的方式對(duì)已有的概念重新命名。一個(gè)進(jìn)步的群體也承認(rèn)MVVM和MVPM其實(shí)實(shí)在是同樣的概念,只是展現(xiàn)出來的是不同的包而已。 在近幾年,MVVM已經(jīng)在Javascript中得到了實(shí)現(xiàn),其構(gòu)造框架的形式諸如KnockoutJS,Kendo MVVM和Knockback.js,獲得了整個(gè)社區(qū)的積極響應(yīng)。 現(xiàn)在就讓我們來看看組成了MVVM的這三個(gè)組件。 ## 模型 和其它MV*家族成員一樣,MVVM中的模型代表我們的應(yīng)用用到的領(lǐng)域相關(guān)的數(shù)據(jù)或者信息。一個(gè)領(lǐng)域相關(guān)的數(shù)據(jù)的典型例子是用戶賬號(hào)(例如名字,頭像,電子郵件)或者音樂唱片(例如唱片名,年代,專輯)。 模型持有信息,但是通常沒有操作行為。它們不會(huì)格式化信息,也不會(huì)影響數(shù)據(jù)在瀏覽器中的表現(xiàn),因?yàn)檫@些不是模型的責(zé)任。相反,數(shù)據(jù)格式化是由視圖層處理的,盡管這種行為被認(rèn)為是業(yè)務(wù)邏輯,這個(gè)邏輯應(yīng)該被另外一個(gè)層封裝,這個(gè)層和模型交互,這個(gè)曾就是視圖模型。 這個(gè)規(guī)則唯一的例外是驗(yàn)證,由模型進(jìn)行數(shù)據(jù)驗(yàn)證是被認(rèn)為可以接受的,這些數(shù)據(jù)用于定義或者更新現(xiàn)存的模型(例如輸入的電子郵件地址是否滿足特定的正則表達(dá)式要求?)。 在KnockoutJS中,模型遵從上面的定義,但是通常對(duì)服務(wù)端服務(wù)的Ajax調(diào)用被做成即可以讀取也可以寫入模型數(shù)據(jù)。 如果我們正在構(gòu)建一個(gè)簡(jiǎn)單的Todo應(yīng)用,使用KnockoutJS模型來表示一個(gè)Todo條目,看起來像下面這個(gè)樣子: ~~~ var Todo = function ( content, done ) { this.content = ko.observable(content); this.done = ko.observable(done); this.editing = ko.observable(false); }; ~~~ > 注意:在上面小段代碼里面,你可能發(fā)現(xiàn)了,我們?cè)贙nockoutJS的名字空間里面調(diào)用observable()方法。在KnockoutJS中,觀察者是一類特殊的JavaScript對(duì)象,可以將變化通知給訂閱者,并且自動(dòng)檢測(cè)依賴關(guān)系。這個(gè)特性使我們?cè)谀P椭敌薷闹?,可以同步模型和視圖模型。 ## 視圖 使用MVC,視圖是應(yīng)用程序中用戶真正與之打交道的唯一一個(gè)部分.它們是展現(xiàn)一個(gè)視圖模型狀態(tài)的一個(gè)可交互UI.此種意義而言,視圖是主動(dòng)的而不是被動(dòng)的,而這也是真正的MVC和MVP的觀點(diǎn).在MVC,MVP和MVVM中視圖也可以是被動(dòng)的,而這又是什么意思呢? 被動(dòng)視圖僅僅只輸出要展示的東西,而不去接受任何用戶的輸入。 這樣一個(gè)視圖在我們的應(yīng)用程序中可能也沒有真正的模型的概念,而可以被一個(gè)代理控制.MVVM的主動(dòng)視圖包含數(shù)據(jù)綁定,事件和需要能夠理解視圖模型的行為.盡管這些行為能夠被映射到屬性,視圖仍然處理這來自視圖模型的事件。 記住視圖在這里并不負(fù)責(zé)處理狀態(tài)時(shí)很重要的——它使得其與視圖模型得以同步。 KnockoutJS視圖是簡(jiǎn)單的一個(gè)帶有聲明鏈接到視圖模型的HTML文檔。KnockoutJS視圖展示來自視圖模型的信息,并且傳遞命令給他(比如,用戶在一個(gè)元素上面點(diǎn)擊),并且針對(duì)視圖模型的變化更新狀態(tài)。而使用來自視圖模型的數(shù)據(jù)來生成標(biāo)記的模板也能夠被用在這個(gè)目的上。 未來給出一個(gè)簡(jiǎn)單的初始示例,我們可以看看Javascritpt的MVVM框架KnockoutJS,看它如何允許一個(gè)視圖模型的定義,還有它在標(biāo)記中的相關(guān)綁定。 視圖模型: ~~~ var aViewModel = { contactName: ko.observable("John") }; ko.applyBindings(aViewModel); ~~~ 視圖: ~~~ <p><input id="source" data-bind="value: contactName, valueUpdate: 'keyup'" /></p> <div data-bind="visible: contactName().length > 10"> You have a really long name! </div> <p>Contact name: <strong data-bind="text: contactName"></strong></p> ~~~ 我們的text-box輸入(源)從contactName獲取它的初始值,無論何時(shí)contactName發(fā)生了改變都會(huì)自動(dòng)更新這個(gè)值.由于數(shù)據(jù)綁定是雙向的,像text-box中輸入也將據(jù)此更新contactName,以此保持值總是同步的。 盡管這個(gè)實(shí)現(xiàn)特定于KnockoutJS,但是包含著"You have a really long name!"文本的 標(biāo)簽包含有簡(jiǎn)單的驗(yàn)證(同樣是以數(shù)據(jù)綁定的形式呈現(xiàn))。如果輸入超過10個(gè)字符,這個(gè)標(biāo)簽就會(huì)顯示,否則保持隱藏。 讓我們看看一個(gè)更高級(jí)的例子,我們可以看看我們的Todo應(yīng)用。一個(gè)用于這個(gè)應(yīng)用的裁剪后的KnockoutJS的視圖,包含有所有必要的數(shù)據(jù)綁定,這個(gè)視圖看起來是下面這個(gè)樣子。 ~~~ <div id="todoapp"> <header> <h1>Todos</h1> <input id="new-todo" type="text" data-bind="value: current, valueUpdate: 'afterkeydown', enterKey: add" placeholder="What needs to be done?"/> </header> <section id="main" data-bind="block: todos().length"> <input id="toggle-all" type="checkbox" data-bind="checked: allCompleted"> <label for="toggle-all">Mark all as complete</label> <ul id="todo-list" data-bind="foreach: todos"> <!-- item --> <li data-bind="css: { done: done, editing: editing }"> <div class="view" data-bind="event: { dblclick: $root.editItem }"> <input class="toggle" type="checkbox" data-bind="checked: done"> <label data-bind="text: content"></label> <a class="destroy" href="#" data-bind="click: $root.remove"></a> </div> <input class="edit' type="text" data-bind="value: content, valueUpdate: 'afterkeydown', enterKey: $root.stopEditing, selectAndFocus: editing, event: { blur: $root.stopEditing }"/> </li> </ul> </section> </div> ~~~ 請(qǐng)注意,這個(gè)標(biāo)記的基本布局是相對(duì)直觀的,包含有一個(gè)輸入文本框(新的todo)用于增加新條目,用于標(biāo)記條目完成的開關(guān),以及一個(gè)擁有模板的列表(todo列表),這個(gè)模板以anli的形式展現(xiàn)Todo條目。 上面標(biāo)記中綁定的數(shù)據(jù)可以分成下面幾塊: * 輸入的文本框new-todo 有一個(gè)當(dāng)前屬性的數(shù)據(jù)綁定,當(dāng)前要增加的條目的值存儲(chǔ)在這里。我們的視圖模型(后面就會(huì)看到)觀察當(dāng)前屬性,并且綁定在添加事件上。當(dāng)回車鍵按下的時(shí)候,添加事件就被出發(fā)了,我們的視圖模型就可以處理當(dāng)前的值按照需要并且將其加入到Todo列表中。 * 輸入勾選框可以通過點(diǎn)擊標(biāo)示所有當(dāng)前條目為完成狀態(tài)。如果勾選了,觸發(fā)完成事件,這個(gè)事件可以被模型視圖觀察到。 * 有一類條目是進(jìn)行中狀態(tài)。當(dāng)一個(gè)任務(wù)被標(biāo)記為進(jìn)行中,CSS類也會(huì)根據(jù)這個(gè)狀態(tài)進(jìn)行標(biāo)識(shí)。如果雙擊條目,$root.editItem 回調(diào)就會(huì)被執(zhí)行。 * toggle類的勾選框表明當(dāng)前的進(jìn)行狀態(tài)。 * 一個(gè)文本標(biāo)簽包含有Todo條目的內(nèi)容 * 當(dāng)點(diǎn)擊一個(gè)移除按鈕時(shí)可以調(diào)用$root.remove 回調(diào)函數(shù)。 * 編輯模式下的一個(gè)輸入文本框可以保存Todo條目的內(nèi)容?;剀囨I事件將會(huì)設(shè)定編輯屬性為真或者假。 ## 視圖模型 視圖模型被認(rèn)為是一個(gè)專門進(jìn)行數(shù)據(jù)轉(zhuǎn)換的控制器。它可以把對(duì)象信息轉(zhuǎn)換到視圖信息,將命令從視圖攜帶到對(duì)象。 例如,我們想象我們有一個(gè)對(duì)象的日期屬性是unix格式的(e.g 1333832407),而不是用戶視圖的所需要的日期格式(e.g 04/07/2012 @ 5:00pm),這時(shí)就有必要把unix的日期格式轉(zhuǎn)換為視圖需要的格式。我們的對(duì)象只簡(jiǎn)單保存原始的unix數(shù)據(jù)格式日期,視圖模型作為一個(gè)中間人角色會(huì)格式化原始的unix數(shù)據(jù)格式轉(zhuǎn)換為視圖需要的日期格式。 在這個(gè)場(chǎng)景下,視圖模型可以被看做一個(gè)對(duì)象,它處理很多視圖顯示邏輯。視圖模型也對(duì)外提供更新視圖狀態(tài)的方法,并通過視圖方法和觸發(fā)事件更新對(duì)象。 簡(jiǎn)單來說,視圖模型位于我們UI層后面層。它通過視圖發(fā)布對(duì)象的公共數(shù)據(jù),同時(shí)它作為視圖源提供數(shù)據(jù)和方法。 KnockoutJS描述視圖模型作為數(shù)據(jù)的表現(xiàn)和操作可以在UI上訪問和執(zhí)行。視圖模型并不是一個(gè)UI對(duì)象,也不是數(shù)據(jù)持久化對(duì)象,而是一個(gè)能夠?yàn)橛脩籼峁﹥?chǔ)存狀態(tài)及操作的層次對(duì)象。Knockout的視圖模型實(shí)現(xiàn)了JavaScript對(duì)象與HTML語言無關(guān)性。通過這個(gè)實(shí)現(xiàn)使開發(fā)保持了簡(jiǎn)單,意味著我們可以在視圖層更加簡(jiǎn)單的管理更多的組合方法。 對(duì)于我們的ToDo應(yīng)用程序的一部分KnockoutJS視圖模型可以是像下面這樣: ~~~ // our main ViewModel var ViewModel = function ( todos ) { var self = this; // map array of passed in todos to an observableArray of Todo objects self.todos = ko.observableArray( ko.utils.arrayMap( todos, function ( todo ) { return new Todo( todo.content, todo.done ); })); // store the new todo value being entered self.current = ko.observable(); // add a new todo, when enter key is pressed self.add = function ( data, event ) { var newTodo, current = self.current().trim(); if ( current ) { newTodo = new Todo( current ); self.todos.push( newTodo ); self.current(""); } }; // remove a single todo self.remove = function ( todo ) { self.todos.remove( todo ); }; // remove all completed todos self.removeCompleted = function () { self.todos.remove(function (todo) { return todo.done(); }); }; // writeable computed observable to handle marking all complete/incomplete self.allCompleted = ko.computed({ // always return true/false based on the done flag of all todos read:function () { return !self.remainingCount(); }, // set all todos to the written value (true/false) write:function ( newValue ) { ko.utils.arrayForEach( self.todos(), function ( todo ) { //set even if value is the same, as subscribers are not notified in that case todo.done( newValue ); }); } }); // edit an item self.editItem = function( item ) { item.editing( true ); }; .. ~~~ 上面我們基本上提供了必需的加入、編輯或者移除記錄的方法,還有標(biāo)記所有現(xiàn)存的記錄已經(jīng)被完成的邏輯。注意:唯一真正需要關(guān)注的同前面我們的視圖模型的示例的不同之處就是觀察數(shù)組.在KnockoutJS中,如果我們希望監(jiān)測(cè)到并且去回應(yīng)一個(gè)單獨(dú)的對(duì)象發(fā)生的改變,我們可以使用觀察.然而如果我們希望檢測(cè)并且去回應(yīng)一個(gè)集合的事物所發(fā)生的改變,我們可以換用一個(gè)觀察數(shù)組.如何使用觀察數(shù)組的一個(gè)簡(jiǎn)單示例就像下面這樣: ~~~ // Define an initially an empty array var myObservableArray = ko.observableArray(); // Add a value to the array and notify our observers myObservableArray.push( 'A new todo item' ); ~~~ > 注意:感興趣的話,我們?cè)谇懊嫠岬降耐暾腒nockoutJS Todo應(yīng)用程序可以從 TodoMVC 獲取到。 ### 扼要重述: 視圖和視圖模型 視圖和視圖模型使用數(shù)據(jù)綁定和事件進(jìn)行通信。正如我們之前的視圖模型例子所見,視圖模型不僅僅發(fā)布對(duì)象屬性,它還提供其他的方法和特性,諸如驗(yàn)證。 我們的視圖處理自己的用戶接口事件,并會(huì)把相關(guān)事件映射到視圖模型。對(duì)象和它屬性與視圖模型是同步的,且通過雙向數(shù)據(jù)綁定進(jìn)行更新。 觸發(fā)器(數(shù)據(jù)觸發(fā)器)允許我們進(jìn)一步在視圖狀態(tài)變化后改變我們的對(duì)象屬性。 ### 小結(jié):視圖模型和模型 雖然可能會(huì)出現(xiàn)在MVVM中視圖模型完全對(duì)模型負(fù)責(zé)的情況,這些關(guān)系確實(shí)有一些值得關(guān)注的微妙之處.處于數(shù)據(jù)綁定的目的,視圖模型可以暴露出來一個(gè)模型或者模型屬性,而且也能夠包含獲取和操作視圖中暴露出來的屬性。 #### 優(yōu)點(diǎn)和缺點(diǎn) 現(xiàn)在,我們完全對(duì)MVVM是什么,以及它是如何工作的,有了一個(gè)更好的了解.現(xiàn)在就讓我們來看看使用這種模式的優(yōu)點(diǎn)和缺點(diǎn)吧: 優(yōu)點(diǎn): * MVVM更加便于UI和驅(qū)動(dòng)UI的構(gòu)造塊,這兩部分的并行開發(fā) * 抽象視圖使得背后所需要的業(yè)務(wù)邏輯(或者粘合劑)的代碼數(shù)量得以減少 * 視圖模型比事件驅(qū)動(dòng)代碼更加容易進(jìn)行單元測(cè)試 * 視圖模型(比視圖更加像是模型)能夠在不用擔(dān)心UI自動(dòng)化和交互的前提下被測(cè)試 缺點(diǎn): * 對(duì)于更簡(jiǎn)單的UI而言,MVVM可能矯枉過正了 * 雖然數(shù)據(jù)綁定可以是聲明性質(zhì)的并且工作得很好,但在我們簡(jiǎn)單設(shè)置斷點(diǎn)的地方,它們比當(dāng)務(wù)之急的代碼更加難于調(diào)試 * 在非凡的應(yīng)用程序中的數(shù)據(jù)綁定能夠創(chuàng)造許多的賬簿.我們也并不希望以綁定比被綁定目標(biāo)對(duì)象更加重量級(jí),這樣的境地告終 * 在大型的應(yīng)用程序中,將視圖模型的設(shè)計(jì)提升到獲取足夠所需數(shù)量的泛化,會(huì)變得更加的困難 ## MVVM 的低耦合數(shù)據(jù)綁定 常見到有著MVC或者M(jìn)VP開發(fā)經(jīng)驗(yàn)的JavaScript程序員評(píng)論MVVM的時(shí)候在抱怨它會(huì)分散他們的關(guān)注點(diǎn)。也就是說,他們習(xí)慣在一個(gè)視圖中有相當(dāng)數(shù)量的數(shù)據(jù)被耦合在了HTML標(biāo)簽中。 我必須承認(rèn)當(dāng)我第一次體驗(yàn)實(shí)現(xiàn)了MVVM的JavaScript框架后(例如 KnockoutJS, Knockback),我很驚訝很多程序員都想要回到一個(gè)難以維護(hù)的混淆了邏輯(JavaScript代碼)和HTML標(biāo)簽做法的過去。然而現(xiàn)實(shí)是使用MVVM會(huì)有很多好處(我們之前說過),包括設(shè)計(jì)師能更容易的通過他們的標(biāo)記去綁定相關(guān)邏輯。 在我們中間的傳統(tǒng)程序員,你會(huì)很開心知道現(xiàn)在我們能夠通過數(shù)據(jù)綁定這個(gè)特性大量減少程序代碼的耦合程度,且KnockoutJS從1.3這個(gè)版本就開始提供自定義綁定功能。 KnockoutJS 默認(rèn)有一個(gè)數(shù)據(jù)綁定提供者,這個(gè)提供者搜索所有的附屬有數(shù)據(jù)綁定屬性的元素,如下面的例子: ~~~ <input id="new-todo" type="text" data-bind="value: current, valueUpdate: 'afterkeydown', enterKey: add" placeholder="What needs to be done?"/> ~~~ 當(dāng)這個(gè)提供者定位一個(gè)到包含有該屬性的元素時(shí),這個(gè)工具將會(huì)分析該元素,使用當(dāng)前的數(shù)據(jù)上下文來將其轉(zhuǎn)化成一個(gè)綁定對(duì)象。這種方式是 KnockoutJS百分百可以工作的方式,通過這種方式,我們可以采用聲明式的方法對(duì)元素增加綁定,KnockoutJS之后會(huì)在該層上將數(shù)據(jù)綁定到元素上。 當(dāng)我們開始構(gòu)建復(fù)雜的視圖的時(shí)候,我們最終就可能得到大量的元素和屬性在標(biāo)記中綁定數(shù)據(jù),這種方式將會(huì)變得很難管理。通過自定義的綁定提供者,這就不算個(gè)問題。 一個(gè)綁定提供者主要關(guān)心兩件事: * 給定一個(gè)DOM節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)是否包含任何數(shù)據(jù)綁定? * 如果節(jié)點(diǎn)回答是YES,那么這個(gè)綁定的對(duì)象在當(dāng)前數(shù)據(jù)上下文中,看起來是什么樣的? 綁定提供者實(shí)現(xiàn)了兩個(gè)功能: * nodeHasBindings:這個(gè)有一個(gè)DOM的節(jié)點(diǎn)參數(shù),這個(gè)參數(shù)不一定是一個(gè)元素 * getBindings:返回一個(gè)對(duì)象代表當(dāng)前數(shù)據(jù)上下文下的要使用的綁定 一個(gè)框架綁定提供者看起來如下: ~~~ var ourBindingProvider = { nodeHasBindings: function( node ) { // returns true/false }, getBindings: function( node, bindingContext ) { // returns a binding object } }; ~~~ 在我們充實(shí)這個(gè)提供者之前,讓我們先簡(jiǎn)要的討論一下數(shù)據(jù)綁定屬性中的邏輯。 當(dāng)使用Knockout的MVVM,我們會(huì)對(duì)將應(yīng)用邏輯過度綁定到視圖上的這種方法不滿。我們可以實(shí)現(xiàn)像CSS類一樣的東西,將綁定根據(jù)名字賦值給元素。Ryan Niemeyer(knockmeout.net上的)之前提出使用數(shù)據(jù)類用于這個(gè)目的,來避免將展示類和數(shù)據(jù)類混淆,讓我們改造我們的nodeHasBindings 函數(shù),來支持這個(gè)概念: ~~~ // does an element have any bindings? function nodeHasBindings( node ) { return node.getAttribute ? node.getAttribute("data-class") : false; }; ~~~ 接下來,我們需要一個(gè)敏感的getBindings()函數(shù)。既然我們堅(jiān)持使用CSS類的概念,為什么不考慮一下支持空格分割類呢,這樣可以使我們?cè)诓煌刂g共享綁定標(biāo)準(zhǔn)。 讓我們首先看一下我們的綁定長什么樣子。我們建立一個(gè)對(duì)象用于持有它們,在這些綁定處,我們的屬性名需要和我們數(shù)據(jù)類中使用的關(guān)鍵字相匹配。 > 注意:對(duì)于將使用傳統(tǒng)數(shù)據(jù)綁定方式的KnockoutJS應(yīng)用轉(zhuǎn)化成一個(gè)使用自定義綁定提供者的不引人矚目的綁定方式。我們簡(jiǎn)單的拉取我們所有的數(shù)據(jù)綁定屬性,使用數(shù)據(jù)類屬性來替換它們,并且像之前做的一樣,將我們的綁定放到綁定對(duì)象中去。 ~~~ var viewModel = new ViewModel( todos || [] ), bindings = { newTodo: { value: viewModel.current, valueUpdate: "afterkeydown", enterKey: viewModel.add }, taskTooltip : { visible: viewModel.showTooltip }, checkAllContainer : { visible: viewModel.todos().length }, checkAll: { checked: viewModel.allCompleted }, todos: { foreach: viewModel.todos }, todoListItem: function() { return { css: { editing: this.editing } }; }, todoListItemWrapper: function() { return { css: { done: this.done } }; }, todoCheckBox: function() { return { checked: this.done }; }, todoContent: function() { return { text: this.content, event: { dblclick: this.edit } }; }, todoDestroy: function() { return { click: viewModel.remove }; }, todoEdit: function() { return { value: this.content, valueUpdate: "afterkeydown", enterKey: this.stopEditing, event: { blur: this.stopEditing } }; }, todoCount: { visible: viewModel.remainingCount }, remainingCount: { text: viewModel.remainingCount }, remainingCountWord: function() { return { text: viewModel.getLabel(viewModel.remainingCount) }; }, todoClear: { visible: viewModel.completedCount }, todoClearAll: { click: viewModel.removeCompleted }, completedCount: { text: viewModel.completedCount }, completedCountWord: function() { return { text: viewModel.getLabel(viewModel.completedCount) }; }, todoInstructions: { visible: viewModel.todos().length } }; .... ~~~ 上面代碼中,我們丟掉了兩行,我們?nèi)匀恍枰猤etBindings函數(shù),這個(gè)函數(shù)遍歷數(shù)據(jù)類屬性中每一個(gè)關(guān)鍵字,并從中構(gòu)建最終對(duì)象。如果我們檢測(cè)到綁定對(duì)象是個(gè)函數(shù),我們使用當(dāng)前的數(shù)據(jù)調(diào)用它。我們的完成版自定義綁定提供中,如下: ~~~ // We can now create a bindingProvider that uses // something different than data-bind attributes ko.customBindingProvider = function( bindingObject ) { this.bindingObject = bindingObject; // determine if an element has any bindings this.nodeHasBindings = function( node ) { return node.getAttribute ? node.getAttribute( "data-class" ) : false; }; }; // return the bindings given a node and the bindingContext this.getBindings = function( node, bindingContext ) { var result = {}, classes = node.getAttribute( "data-class" ); if ( classes ) { classes = classes.split( "" ); //evaluate each class, build a single object to return for ( var i = 0, j = classes.length; i < j; i++ ) { var bindingAccessor = this.bindingObject[classes[i]]; if ( bindingAccessor ) { var binding = typeof bindingAccessor === "function" ? bindingAccessor.call(bindingContext.$data) : bindingAccessor; ko.utils.extend(result, binding); } } } return result; }; }; ~~~ 我們綁定對(duì)象最后的幾行,定義如下: ~~~ // set ko's current bindingProvider equal to our new binding provider ko.bindingProvider.instance = new ko.customBindingProvider( bindings ); // bind a new instance of our ViewModel to the page ko.applyBindings( viewModel ); })(); ~~~ 我們?cè)谶@里所做的是為我們的綁定處理器有效的定義構(gòu)造器,綁定處理器接受一個(gè)我們用來查找綁定的對(duì)象(綁定)。然后我們可以使用數(shù)據(jù)類為我們應(yīng)用程序視圖的重寫標(biāo)記,像下面這樣做: ~~~ <div id="create-todo"> <input id="new-todo" data-class="newTodo" placeholder="What needs to be done?" /> <span class="ui-tooltip-top" data-class="taskTooltip" style="display: none;">Press Enter to save this task</span> </div> <div id="todos"> <div data-class="checkAllContainer" > <input id="check-all" class="check" type="checkbox" data-class="checkAll" /> <label for="check-all">Mark all as complete</label> </div> <ul id="todo-list" data-class="todos" > <li data-class="todoListItem" > <div class="todo" data-class="todoListItemWrapper" > <div class="display"> <input class="check" type="checkbox" data-class="todoCheckBox" /> <div class="todo-content" data-class="todoContent" style="cursor: pointer;"></div> <span class="todo-destroy" data-class="todoDestroy"></span> </div> <div class="edit'> <input class="todo-input" data-class="todoEdit'/> </div> </div> </li> </ul> </div> ~~~ Nei Kerkin 已經(jīng)使用上面的方式組合成了一個(gè)完整的TodoMVC示例,它可以 從 這里獲取到。 雖然上面的解釋看起來像是有許多的工作要做,現(xiàn)在我們就有一個(gè)一般的getBindingmethod方法要寫。比起為了編寫我們的KnockoutJS應(yīng)用程序而嚴(yán)格使用數(shù)據(jù)綁定,簡(jiǎn)單的重用和使用數(shù)據(jù)類更加的瑣碎。最終的結(jié)果是希望得到一個(gè)干凈的標(biāo)記,其中我們的數(shù)據(jù)綁定會(huì)從視圖切換到一個(gè)綁定對(duì)象。 ## MVC VS MVP VS MVVM MVP和MVVM都是MVC的衍生物。它和它的衍生物之間關(guān)鍵的不同之處在于每一層對(duì)于其它層的依賴,以及它們相互之間是如何緊密結(jié)合在一起的。 在MVC中,視圖位于我們架構(gòu)的頂部,其背后是控制器。模型在控制器后面,而因此我們的視圖了解得到我們的控制器,而控制器了解得到模型。這里,我們的視圖有對(duì)模型的直接訪問。然而將整個(gè)模型完全暴露給視圖可能會(huì)有安全和性能損失,這取決于我們應(yīng)用程序的復(fù)雜性。MVVM則嘗試去避免這些問題。 在MVP中,控制器的角色被代理器所取代,代理器和視圖處于同樣的地位,視圖和模型的事件都被它偵聽著并且接受它的調(diào)解。不同于MVVM,沒有一個(gè)將視圖綁定到視圖模型的機(jī)制,因此我們轉(zhuǎn)而依賴于每一個(gè)視圖都實(shí)現(xiàn)一個(gè)允許代理器同視圖去交互的接口。 MVVM進(jìn)一步允許我們創(chuàng)建一個(gè)模型的特定視圖子集,包含了狀態(tài)和邏輯信息,避免了將模型完全暴露給視圖的必要。不同于MVP的代理器,視圖模型并不需要去引用一個(gè)視圖。視圖可以綁定到視圖模型的屬性上面,視圖模型則去將包含在模型中的數(shù)據(jù)暴露給視圖。像我們所提到過的,對(duì)視圖的抽象意味著其背后的代碼需要較少的邏輯。 對(duì)此的副作用之一就是視圖模型和視圖層之間新增的的用于翻譯解釋的一層會(huì)有性能損失。這種解釋層的復(fù)雜度根據(jù)情況也會(huì)有所差異——它可能像復(fù)制數(shù)據(jù)一樣簡(jiǎn)單,也可能會(huì)像我們希望用視圖理解的一種形式去操作它們,那樣復(fù)雜。由于整個(gè)模型是現(xiàn)成可用的,從而這種操作可以被避免掉,所以MVC沒有這種問題。 ## Backbone.js Vs KnockoutJS 了解MVC,MVP和MVVM之間的細(xì)微差別是很重要的,然而基于我們已經(jīng)了解到的東西,開發(fā)者最終會(huì)問到是否它們應(yīng)該考慮使用KnockoutJS而不是Backbone這個(gè)問題。下面的一些相關(guān)事項(xiàng)對(duì)此可能有些幫助: * 兩個(gè)庫都設(shè)計(jì)用于不同的目標(biāo),它常常不僅僅簡(jiǎn)單的知識(shí)選擇MVC或者M(jìn)VVM的問題。 * 如果數(shù)據(jù)綁定和雙向通信是你主要關(guān)注的問題,KnockoutJS絕對(duì)是應(yīng)該選擇的方式。實(shí)踐中任何存儲(chǔ)在DOM節(jié)點(diǎn)中的值或者屬性都能夠使用此方法映射到Javascript對(duì)象上面。 * Backbone在同RESTful服務(wù)的易于整合方面有其過人之處,而KnockoutJS模型就是簡(jiǎn)單的Javascript對(duì)象,而更新模型所需要的代碼也必須要由開發(fā)者自己來寫。 * KnockoutJS專注于自動(dòng)的UI綁定,如果嘗試使用Backbone來做的話則會(huì)要求更加細(xì)節(jié)的自定義代碼。由于Backbone自身就意在獨(dú)立于UI而存在,所以這并不是它的問題。然而Knockback也確實(shí)能協(xié)助并解決此問題。 使用KnockoutJS,我們能夠?qū)⑽覀冏约簱碛械暮瘮?shù)綁定到視圖模型觀察者上面,任何時(shí)候觀察者一旦發(fā)生了變化,它都會(huì)執(zhí)行。這允許我們能夠擁有同在Backbone中發(fā)現(xiàn)的一樣級(jí)別的靈活性。 * Backbone內(nèi)置有一個(gè)堅(jiān)實(shí)的路由解決方案,而KnockoutJS則沒有提供路由供我們選擇。然而人們?nèi)绻枰脑挘梢院苋菀椎募尤脒@個(gè)行為,使用Ben Alman的BBQ插件或者一個(gè)像Miller Medeiros優(yōu)秀的Crossroads就行了。 總結(jié)下來,我個(gè)人發(fā)覺KnockoutJS更適合于小型的應(yīng)用,而Backbone的特性在任何東西都是無序的場(chǎng)景下面才會(huì)是亮點(diǎn)。那就是說,許多開發(fā)者兩個(gè)框架都已經(jīng)使用過來編寫不同復(fù)雜度的應(yīng)用程序,而我建議在一個(gè)小范圍內(nèi)兩種都嘗試一下,在你決定哪一種能更好的為你工作之前。
久久五月婷婷综合视频| 精品人妻二区中文字幕| 亚洲图色91东京热| 日韩色在线视频观看免费| 激情婷婷综合久久五月天| 日韩欧美xxxx大片| 人妻一区二区三区巨免费| 亚洲aⅴ欧美综合一区二区三区| 国产麻豆剧传媒精品视频| 丰满大屁股熟妇猛交xxx| av在线免费在线观看av| huangse网站在线观看| 婷婷亚洲天堂中文字幕| 精品一区二区三区蜜桃臀的优势| 中文字幕熟女人妻在线观看| 色视频精品视频在线观看| 色哟哟视频在线一区| 蜜桃久久久一区二区三区| 中文字幕的不卡人妻| 婷婷亚洲天堂中文字幕| 成年人晚上免费看的视频| 91成人国产精品视频| 欧美日韩国产色图视频| 最新偷窥偷拍免费视频观看| 久久久国产精品尤物av| 韩国女团午夜大尺度福利| 热久久免费频精品18| 337p亚洲精品色噜噜| 99热2这里只有精品| 天天射天天舔天天射| 九九re精品免费视频| 国产av一区二区三区天美| 色男人天堂东京热| 国产清纯白嫩美女无套| 欧美三级中文字幕久久精品| 色yeye香蕉凹凸人妻三区| www.亚洲成人色| 超碰在线免费成人午夜剧场97| 日韩精品免费91aa| 国产精品久久久久国产| 91在线观看视频,| 国产精品男人的天堂999| 日韩在线免费视频精品| 国产又粗又硬又长又爽视频| 日韩av一区二区三区久久久| 风间由美交换夫中文字幕| 久久精品久久一区二区三区| 精品国产乱码久久久人妻 | 久久精品人妻中文字幕一区| 精品一区二区三区四区| 综合激情伊人久久| 亚洲:西西一区二区三区四区五区| 清纯唯美激情五月| 国产亚洲精久久久久久无码色戒| av日韩在线免费观看网站| 日韩成人免费电影三区| 国产一区二区三区四区中文字幕| 天天干天天插天天操天天日| 日韩黄色一级大片| 亚洲一区视频大全| 午夜精品福利小视频| 韩国女团午夜大尺度福利| 久久久久久精品日韩| 丝袜日韩中文字幕| 国产又大又长又粗又硬免费视频| 首页国产中文字幕av| 欧美3d成人动漫在线| 日韩中文字幕有码人妻在线| 亚洲成a人片,77777| 777亚洲精品乱码久久| 777亚洲精品乱码久久| 蜜桃久久久一区二区三区| 久久久久久久久人妻精品| 伊人久久热青青草| 亚洲aⅴ欧美综合一区二区三区| 天天日天天干一道一小| 亚洲天堂av电影免费在线| 亚洲欧洲色图动图| 人人妻人人澡人人爽国产一区| 搡老熟女一区二区三区四区视频 | 美女18禁久久久久麻豆| 天天操,天天干,天天| 美女18禁久久久久麻豆| 在线观看视频 你懂得| 色婷婷综合免费在线视频| 99热2这里只有精品| 亚洲av高清不卡| 熟女大白屁股在线播放| 视频在线观看黄页| 亚洲情色av网站| 亚洲人妻中文字幕av首页| 欧美日韩亚洲大片在线| 国产69tv精品久久| 亚洲欧美日韩国产精品综合| 国产青青91av在线视频| 人人妻人人澡人人爽dv| 91大神精品大长腿在线观看| 香蕉久久a v一区二区三区| 在线中文免费黄色| 日韩精品久久久久久久软件| 亚洲视频欧美视频另类| 午夜三级中文字幕视频网址大全| 久久精品国产91久久麻豆自制| 日韩美女主播人体视频自拍首页| 欧美一区二区性久久久| 中文字幕日韩久久精品tv| 天天做天天舔天天射| 国产精品久久久久成人片| 99精品高清免费在线视频| 国产91久久久久久久| 一区二区三区内射美女毛片| 欧美日韩成人三级在线| 人妻办公室被强d在线电影| 蜜臀av日韩特黄大片| 久久国产精品色av免费看| 国产成AV人片在线观看天堂无码 | 久久久久久久久久久免费网| 美女18禁久久久久麻豆| 国产欧美一二三区视频| 久久久精品欧美一区二区国产| 日韩欧美激情入口| 99免费观看视频在线| 欧美中文字幕久久久| 熟女少妇视频一区二区在线| 日韩国产91综合精品| av熟妇翔田千里俱乐部| 国产乱子伦视频免费| 精品欧美乱子伦一区二区三区| 在线中文免费黄色| 高清中文字幕乱码在线| 午夜日韩麻豆福利| 3d动漫一区二区在线观看| 免费看久久久久久久性大片| 亚洲国产精品97久久宅男| 日韩av在线观看免费看看| 亚洲丰满熟妇乱xxxxx| 亚洲欧美日韩偷拍综合| 人人狠狠久久综合网| 欧美人妻a∨中文字幕在线| 久久久久精美免费观看视频| 欧美中文字幕在线观看视频| 另类欧美亚洲中文综合| 久久精品人妻中文字幕一区| 久久伊人精品青青草原| 精品一区二区国产在线观看| 久久人妻久久人妻一区| 91精品久久久久久久久不卡网站| 五月天色图婷婷亚洲| 中文字幕亚洲欧美国产| 亚洲av不卡码在线看| 亚洲av精品久久久蜜| 亚洲五月婷婷激情图片| 欧美人妻激情中文视频| 久久国产精品——国产精品| 91一区二区三区精华液| 无码人妻精品一区二区三区久久| 91久久婷婷国产麻豆精品| 91啪啪啪内射网站| 国产又粗又硬又长又爽视频| 北条麻妃裤袜一区二区| 91超碰免费在线播放| 国产有码av一区二区| 中文字幕久久91| 蜜臀av 麻豆av| 日韩精品在线视频播放| 激情一区日韩一区欧美一区| 一区二区三区四区中文字幕| av成人教育在线播放| 国产日韩欧美成人一二三区| 国产三级久久久999111| 亚洲青青青国产观看视频| 中文字幕人妻互换久久视频| 久久精品琪琪男人的天堂| 婷婷 少妇 av| 伊人久久热青青草| 另类欧美亚洲中文综合| 91成人国产精品视频| 日韩在线播放视频1区| 92视频影院视频影院麻豆| 久久一本麻豆天美欧美日韩| 国产+日本+欧美在线观看| 91人妻人人做人碰人人| av久久伊人精品中文字幕| 精品人妻久久久久中文字幕19禁| 50岁老熟女一区二区三区| 国产又大又长又粗又硬免费视频| 91精品乱码久久久久久| 日本高清不卡视频在线播放 | 亚洲自拍偷拍 av| 成年人在线免费观看黄色片| 日韩男女av在线观看| 青青草成人免费电影| 91熟女视频在线观看| 91在线播放视频免费| 蜜桃黄色av网站免费播放| 国产人妻另类综合专区| 人人狠狠久久综合网| 精品人妻熟女在线视频| 久久久精品蜜桃在线| 国产精品首页在线播放| 精品久久精品久久久久| 国产精品欧美日韩五月香蕉| 青草青草视频免费2在线观看 | av国产一区二区三区| 99国产在线拍91揄自揄视| 日韩精品久久久久久久软件| 亚洲 免费在线视频| 人妻夜夜爽天天爽麻豆| 5858s在线视频| 日韩不卡一级成人免费视频| 高清不卡av在线网| 日韩福利视频在线看| 日韩精品综合视频在线| 亚洲aⅴ欧美综合一区二区三区| 欧美一区二区三区激情啪啪啪| 欧美日韩精品一区电影| 亚洲国产欧美日本视频| 久久99久久com| 亚洲天堂性色综合| 美日韩美女三级电影| 亚洲欧美在线制服丝袜| 久久久久久久久久久久久熟女a∨| 久久精品中文闷骚内射| 亚洲视频另类专区| 97国产免费电影网| 偷偷夜夜精品一区二区三区蜜桃| 国产精品99久久久高清| 免费观看a级在线视频| sepapa自拍偷拍| 亚洲激情国产一区| 成人av激情网一区二区三区 | 日韩欧美一二三级| 高潮久久久久久久av免费| 2019年中文字幕在线看| 亚洲欧美自拍偷拍在线观看| 99精品视频在线看17| 欧美最猛性亚洲精品推荐| 中文字幕亚洲中文字幕| 精品国产一区二区三区制服| 真实玩弄白嫩丰满人妻少妇三级| 91欧美亚洲综合网| 久久久精品欧美一区二区国产| 91亚洲精品成人在线| 日本av男优巧克力| 欧美一区二区精品人妻免费视频| 狠狠干中文字幕97视频| 国产欧美一区二区二区精品| 天天日天天干一道一小| 日韩a大片在线观看| 蜜桃av 1区二区| 免费a级电影在线观看| 成人免费av在线网站| 伊人久久热青青草| 日韩手机无线看视频| 日韩av中文字幕一区| 久久久久久夜夜夜精品国产| 日韩av福利大片在线观看| 97偷拍视频在线观看| 日韩国产精品电影网| 久久精品中文字幕av| 亚洲女人中文字幕在线| 制服巨乳人妻在线| 亚洲精品乱码97久久久久久 | 国产欧美日韩亚洲另类第一第二页| 精品久久久久久亚洲国产999| 久久行黑国产露脸精品| 国产91在线播放精品| 亚洲男人天堂久久| 人妻精品无码一区二区三区| 久久综合中文字幕一区二区三区| 国产免费一级a男人的天堂| 色婷婷中文字幕基地| 国产欧美日韩精品专区黑人| 亚洲欧美一二三视频| 久久99国产综合精品无码免费| 欧美日本一道本一区二区| 欧美一区二区三区成人久久片| 蜜桃久久久一区二区三区| 欧美日韩在线观看大香蕉 | 日韩草比网站在线免费观看| 91在线精品国自产拍| 久久久国产一区二区视| 亚洲国模在线视频| 国产高潮国产高潮久久久久久91| 国产精品99久久电影| 亚洲欧洲偷拍自拍| 日本a级2020在线观看| 风间由美交换夫中文字幕| 91精品久久久久久五月天| 丰满人妻一区二区三区av| 成人午夜激情福利片| 欧美一区二区三日韩| 国产亚洲欧美日韩在线首页| 精品人妻二区中文字幕| 欧美亚洲av日韩综合一区| 久久99免费成人在线| 人妻一区二区中文字幕在线| 99热精品国产影视久久久影院| 色熟女蜜臀又伦av| 乱女乱妇熟女熟妇综合站| youwu视频在线| 国产一区二区不卡91| 日韩av午夜精品| 日韩一级黄色大片免费观看| 精品国产一区二区三区无码蜜桃 | 色婷婷久久久swag精品| 日韩av在线精品观看| 在线国产小视频麻豆| 天美麻豆成人av精品小说| 色亚洲天堂色派对欧美色| 亚洲情色av网站| 999热这里只有精品在线 | 亚洲中文字幕成人久久| av国偷自产自拍自在线| 人人妻人人澡人人爽dv| 人妻精品少妇嫩草麻豆| 欧美日韩精品亚洲欧美| 天天干天天插天天操天天日| 日韩人妻插舔激情午夜| 色婷婷国产熟妇人妻露脸| 成人在线观看黄色片| 欧美熟女vides| 色综合久久久久久久久| 日韩国产精品电影网| 亚洲视频欧美视频另类| 国产精品久久久久久xxx| 中文字幕一区二区不卡顿| 成人av电影免费版| 88av亚洲精品日韩一区二区| 日韩成人av在线电影观看| 91人妻人人澡.人人精品| 大香蕉大香蕉大香蕉大香蕉大| 91在线观看视频,| 久久久精品蜜桃在线| 久热中文字幕在线精品| aaaaa亚洲电影| 麻豆丝袜美女人妻中文| 国产欧美一区二区二区精品| 人人狠狠久久综合网| 亚洲精品网站成人久久综合| 91丝袜放荡丝袜脚交| 在线免费av大香蕉| 国产精品成人av在线网站 | 日韩a大片在线观看| 久久久亚洲熟妇熟女在线| 97人妻中文字幕精品视频| 精品国产丝袜久久久一区二区| 大香蕉影视日本大香蕉97| 五月综合缴情婷婷六月| 亚洲中文字幕精品高清| 一区,二区,三区视频| 亚洲欧洲av在线| 国产成人一区二区三区在线视频| 欧美区 日韩区 国产区| 国产成人精品视频免费网站| 欧美一区二区性久久久| 麻豆中文字幕av在线| 欧美一级黄片视频看看| 天天操天天干天天色| 人妻中出视频一区二区| 99久久久99久久91熟女| 热热久久这里只有精品| 色播五月激情四射| 久久久国产精品尤物av| 国产 另类 在线 欧美日韩| 国产成人精品视频免费网站| 欧美不卡高清一区二区三区| 精品乱码久久久久久蜜臀| 一本久久久久久久18| 人妻av不卡一区二区三区| 91人妻露出精品在线| 久久草免费在线视频| 日韩高清av一区| 夜夜撸日日撸夜夜爽日日干| 日韩午夜激情福利免费| 精品人妻久久久久中文字幕19禁| 久久99免费成人在线| 日韩在线播放视频1区| 大香蕉大香蕉大香蕉大香蕉大| 91在线精品国自产拍| 欧美中文字幕在线一区| 精品aa级中文字幕人妻| 久久热最新视频在线观看| 中文国产成人精品久久一| 国产精品成人av麻豆| 在线观看日韩美视频一区| 国产精品午夜蜜av| 精品国产久久久久99| 91在线观看视频,| 欧美熟女人妻一区二区三区| 亚洲国模在线视频| 熟女大白屁股在线播放| 日本少妇人妻xxxx| 日韩久久久三级电影| 偷偷夜夜精品一区二区三区蜜桃| 国产+日本+欧美在线观看| 亚洲欧美一二三视频| 99久久久99久久91熟女| 亚洲精品熟女中文字幕| 亚洲国产aⅴ精品一区二区欧美| av蜜臀懂色啊啊啊| 亚洲 欧美 制服 人妻| 999热精品在线观看| 成人精品1024欧美日韩| 四虎网站免费av| 另类欧美亚洲中文综合| 国产精品一二三四在线| 亚洲少妇黄色一级片| 久久男人精品男人天堂免费视频 | 熟女激情一区二区三区| 人妻日韩精品在线观看视频 | 成人黄色午夜污网站在线观看| 一本一道久久a久久久| 日韩欧美久久免费观看| 国产精品久久久久久xxx| 夜夜撸日日撸夜夜爽日日干| 日韩在线观看免费全集网站| 久久精品熟女人妻一区二区三区| a级黄片在线免费观看 | av国产一区二区三区| 国产精品久久久久国产| 国内精品久久久久久久久久清纯| 99热精品国产影视久久久影院 | 成年人晚上免费看的视频| 99热精品国产影视久久久影院 | 午夜在线观看高清完整版| 少妇人妻成人在线| 久久精品人人看人人爽| 精品蜜臀久久久久抄底| 麻豆成人在线免费观看视频| 精品美女1区2区3区| 中文字幕婷婷网站| 欧美日韩国产一级一顶级| 在线免费观看日韩精品视频| 丰满熟女一区二区三区在线| 日韩中文字幕一区二区三区四区| 欧美三级中文字幕久久精品| 制服巨乳人妻在线| 嫩草一区二区三区四区中文 | 丝袜日韩中文字幕| aaa久久久久久久久久网站| 玖玖资源站中文字幕一区二区| www.成人国产精品| 日韩人妻插舔激情午夜| 精品人妻熟女在线视频| wwxxx中文字幕| 少妇高潮一区二区三区99欧美| 久久久久女优免费视频| 久久精品国产久精果冻传媒| 亚洲一级av大片| 久久精品中文字幕av| 日本亚洲天堂久久| 亚洲一线产区二线产区区| 国产精品综合手机在线| 久久久久女优免费视频| 亚洲一线产区二线产区区| 制服巨乳人妻在线| av国产一区二区三区| 人妻有码中文字幕中文| 亚洲精品,欧美日韩| 久久精品人人看人人爽| 亚洲成a人片,77777| 国产欧美日韩制服丝袜在线| 97网视频免费在线观看| 之久精品一区二区| 91欧美亚洲综合网| 亚洲av不卡码在线看| 日本女优和黑人的| 欧美一区二区精品人妻免费视频| 一级久久久久久久18| 91嫩草17c欧美国产| 精品久久中文字幕系列| 激情黄色开心五月天| 91精品欧美久久久久视频| 久久精品香蕉绿巨人| 日韩av 自拍偷拍| 亚洲狠狠婷婷综合久久a| 日韩av在线不卡网站| 亚洲国产精品综合久久2007| 青青草成人影院在线观看| 欧美一区二区三日韩| 亚洲欧美在线视频播放| 91porny国产九色| 日韩精品综合免费视频| 91制片在线观看视频| 国产欧美版日韩综合| 91在线国产九色porny| 5858s在线视频| 国产亚洲天堂sss| 99re6热在线视频免费观看| 久久久久久久精品综合| 亚洲一区二区三二区厕所偷拍| 日韩中文字幕视频在线播放| 91国偷自产一区二区三区偷拍| 熟女少妇一区二区精品| 色婷婷中文字幕基地| 色综合色综合色综合久久| 中文字幕人妻互换久久视频| 国产青青91av在线视频| 亚洲精品一区二区三区丝袜| 精品国产久久久久蜜臀| 久久久久国产精品免费| 久久精品琪琪男人的天堂| 精品日韩偷拍欧美另类| 四十路av熟女俱乐部| 麻豆亚州av熟女国产一区二| 日韩一区二区三区乱码| 久久精品国产91久久麻豆自制| 亚洲国产精品国自产拍av麻豆| 亚洲av综合久久伊人| 亚洲图色91东京热| 日韩成人免费电影三区| 午夜日韩麻豆福利| 一级久久久久久久18| 欧洲美女黑人粗性暴交视| 久久成人福利视频资源| 日韩精品在线播放第三页| 色图av亚洲综合| av在线免费播放成人| 99.com精品视频| 偷偷夜夜精品一区二区三区蜜桃| 少妇人妻成人在线| 少妇人妻一区2区中文字幕| 青青青在线视频自拍| 欧美一区二区三区综合色| 日韩欧美激情入口| 国产a级片免费在线观看| 日韩在线中文字幕不卡| 日韩尤物人妻av在线网| 精品99国内中文字幕| 欧美人妻激情中文视频| 五月天丁香婷婷国产| 日韩精品少妇人妻熟女| 91在线精品一区二区网站| 国产一区二中文字幕在线免费观看 | 偷偷夜夜精品一区二区三区蜜桃 | av日韩在线免费观看网站| 日韩av手机在线电影| 日韩免费美女电影| a级黄片在线免费观看| 91国偷自产一区二区三区老熟女| 国语黄色淫秽录像带| 日韩在线免费视频精品| 亚洲不卡一区av| 中文字幕亚洲专区欧美| 国产91在线播放精品| 99.com精品视频| 日韩少妇视频在线直播| 2020日本中文字幕| 久久人妻久久人妻一区| 亚洲欧美日韩一区17c| 国产精品久久久久久久网站门| 色婷婷中文字幕基地| 欧美中文字幕久久久| 人妻熟 中文字幕| 成人精品1024欧美日韩| 亚洲精品熟女中文字幕| 青青草国产福利视频| 日韩午夜激情福利免费| 久久精品国产91久久麻豆自制| 欧美性久久久久久久久久久| 中文字幕 日本伊人| 精品aa级中文字幕人妻| 日日日日日夜夜夜夜| 四虎国产精品久久免费精品| 18禁成年av网站免费看| 88在线观看91蜜桃国自产| 国产99久久久国产精品成人免费| 91超碰熟女在线97| 午夜探花在线免费观看| av国产一区二区三区| 91中日在线中文字幕| 欧美va亚洲va精品| 亚洲最黄色的视频| 男人的天堂久久久亚洲| 337p亚洲精品色噜噜| 五月天丁花香婷婷| 日韩电影黄色免费| 国产欧美一区二区二区精品| 99re在线精品国产欧美久久| 蜜桃av 1区二区| av国产一区二区三区| 国产一区二中文字幕在线免费观看| 久久99国产综合精品无码免费| 亚洲欧美日韩大陆| av福利网站在线观看| 国产欧美日韩一区二区三区''| 人妻精品少妇嫩草麻豆| 婷婷激情免费视频| 91人妻精品久久久久久久久| 午夜无人影视在线| 欧美一区二区性久久久| 日本最新中文字幕| 男人的天堂久久久亚洲| 欧美va亚洲va精品| 人妻熟女视频免费观看| 久久av资源男人站| 99精品视频在线看17| 国产精品久久久久久久久粉嫩av| 日韩av电影在线观看的| 丰满大屁股熟妇猛交xxx| 日韩成视频在线播放| 久久久久久人妻无码| 日韩av电影免费在线播放| 中文字幕一区二区不卡顿| 天天在线天天综合网色| 久久精品国产91久久麻豆自制| 青娱乐国产视频盛| 国产欧美精品久久无广告| 亚洲欧美日韩综合专区| 91在线播放视频免费| 日韩av黄片在线观看| 制服丝袜亚洲欧美第一| 少妇激情视频一区二区| 久久精品国产av网| 污视频在线观看91| 亚洲国产精选久久| 欧美日韩亚洲大片在线| 久久99永久免费看| 草裙成人精品一区二区三区| 人妻精品无码一区二区三区| 亚洲综合在线伊人| 国产网址手机上可以看的国产网站| 日产av一区二区在线观看| 亚洲五月婷婷激情图片| 久久久久在线免费看| 人妻办公室被强d在线电影| 亚洲熟妇av熟妇在线| 国产69tv精品久久| 男人的天堂久久精平| 亚洲精品蜜桃久久久久| 亚洲欧美av在线观看| 美女免费一二三区视频| 国产 欧美 日韩 视频| 97人人人欧美人人妻人人| 国产精品久久久久成人片| 欧美熟女高清视频一区二区| 中文字幕av最新在线| 久久亚洲精品日韩高清| 国产视频av一区二区| 久久精品色婷婷国产网站| 日韩中文字幕视频在线播放| 麻豆免费国产福利免费国产福利| 一本色道久久亚洲综合精品蜜桃| 亚洲欧美一二三视频| 五月天色图婷婷亚洲| 久久久亚洲熟妇熟女在线| 激情婷婷综合久久五月天| 67914熟女在线观看| 国产av一区二区三区天美| 久久久精品欧美一区二区国产| ass日本丰满熟妇pics| 青草青草视频免费2在线观看| 久久av资源男人站| 色yeye香蕉凹凸人妻三区| 天天做天天舔天天射| 2023亚洲男人的天堂| 精品乱码一区二区三四五六区| 日韩尤物人妻av在线网| 久久免费视频观看99| 久久99久久com| 国产91在线播放精品| 天美麻豆成人av精品小说| 熟女激情一区二区三区| 日本中文字幕久久免费精品| 精品人妻一区二区三区线国色天香| 久久蜜桃视频亚洲精品| 亚洲久久精品午夜| 久久久久久久久久久最新| 亚洲激情国产一区| 国语一区二区在线观看| 日韩一级黄色大片免费观看 | 在线国产小视频麻豆| 青娱乐国产视频盛| 亚洲成年人黄色片| 色综合久久久久久久久| 欧美一区二区三日韩| 嫩草一区二区三区四区中文 | sepapa自拍偷拍| 亚洲激情有码一区二区| 婷婷在线综合观看视频| 99九九99九九热视频| 国产中文字幕在线91| 天天色天天日天天操| 激情亚洲一区蜜桃在线| 肥臀熟女一区二区三区肥女人| 日本vs欧美一区二区三区| 欧美熟女vides| 少妇一区二区在线免费观看| 十八禁久久久久久久久久久久久久| 人妻日韩精品在线观看视频| 欧美日韩一区二区综合视频| 91国偷自产一区二区三区老熟女| 青青草久久大香蕉| 久久免费视频观看99| 色熟女蜜臀又伦av| 色婷婷国产熟妇人妻露脸| 欧美日韩亚洲国产ay| 日韩av一区二区三区久久久| 国产成人无码AA精品一区 | 97国产免费电影网| 精品欧美乱子伦一区二区三区| 丝袜日韩中文字幕| 在线人妻国产精品| 日韩一区二区三区水蜜桃| 日韩av网址在线播放| 韩国女团午夜大尺度福利| 国产精品久久久久久xxx| 亚洲少妇黄色一级片| 日韩 美女 在线观看| 精品日韩偷拍欧美另类| 99久久国语露脸精彩对白| 亚洲伊人网在线观看| 亚洲熟妇av日韩熟妇在线| 五月天色图婷婷亚洲| 欧美一级黄片视频看看| 欧美熟女人妻一区二区三区| 亚洲精品久久第一页| 日本美女大学生一区二区三区| 另类h小视频在线观看| 日韩精品午夜免费观看| 日韩美女在线视频一区| 久久传奇网站一区三区视频| 亚洲欧美日韩一区二区三区不卡| 日韩男女av在线观看| 丝袜日韩中文字幕| 久久精品久久一区二区三区| 久久久久精美免费观看视频| 亚洲丰满熟妇乱xxxxx| 国产精品久久久久久久漫画| 2020日韩中文字幕| 色丁香婷婷综合久久| 91成人国产精品视频| 日韩a视频在线播放视频| 五月爱婷婷六月丁香性| 久久精品 中文字幕| 天天日天天干一道一小| av青青草原在线观看| 久久婷婷亚洲中文一区二区| 国产欧美日韩一区二区三区''| 亚洲久久久久久久人妻| 麻豆中文字幕av在线| 国产日韩av免费一区二区三区| 午夜精品福利小视频| 风间由美交换夫中文字幕| ass日本丰满熟妇pics| 91啪啪啪内射网站| 骚妻少妇一区二区| 日韩av手机在线电影| 91超碰免费在线播放| 午夜日韩麻豆福利| 免费精品国产日韩热久久| 蜜桃av 1区二区| 久久婷婷亚洲中文一区二区 | 成人黄色国产网站在线观看| 日韩av在线天堂| 亚洲日本韩国欧美一起| 中文字幕理伦福利片| 五月天丁花香婷婷| 91麻豆免费国产在线| 三级亚洲天堂亚洲天堂| 91偷拍老熟女露脸合集| 国产精品一区二区三区三级| 亚洲熟妇av熟妇在线| 亚洲情色av网站| 国产精品日韩欧美综合| 91在线播放视频免费| 久久久久国产精品免费| 厕所偷拍视频一区二区三区| 精品国产乱码久久久人妻| 国产免费一级a男人的天堂| 91人妻人人做人碰人人| 安斋拉拉中文字幕在线| 蜜臀av久久久久av蜜臀| 久久久久中文字幕免费久久久久久| 国产91在线播放精品| 天天做天天舔天天射| 青青草久久大香蕉| 日本久久久大片中文字幕| 日韩在线观看免费全集网站| 中文字幕一区二区三区六区9区| 欧洲av偷拍亚洲av偷拍| 最美人妻一区二区三区| 91在线国产九色porny| 欧美中文字幕久久久| 国产激情综合视频在线观看| youwu视频在线| 亚洲精品久久第一页| 欧美人妻激情中文视频| 亚洲欧洲国产一区二区| 色哟哟视频在线观看国产| 国产+日本+欧美在线观看| 在线不卡日韩视频播放| 丰满的人妻一区七区| 国产91极品身材白皙| 国产精品网址在线观看| 美国av 在线播放| 午夜精品久久久久久久久二区三区 | 欧美一级黄片视频看看| 337p亚洲精品色噜噜| 99久久极品蜜桃臀精品久久| 视频在线观看黄页| 精品国产乱码久久久久久蜜坠欲下| 人人妻人人澡人人爽国产一区| 婷婷亚洲天堂中文字幕| 精品999久久久一免费ww| 天天日天天干天天爱天天| 最美人妻一区二区三区| 午夜无人影视在线| 久久精品久久一区二区三区| av国偷自产自拍自在线| 亚洲综合精品久久| 久久五月天天婷婷激情综合| 国产自拍 偷拍 在线| 国产91极品身材白皙| 国产精品一二三四在线| 五月婷婷久久久久久久久| 99热在线精品免费观看| 国产精品欧美日韩五月香蕉| 久久99精品国产91| 日韩欧美一级在线视频| 久久国产精品人妻酒店| 91免费av在线观看| 日韩厕所偷拍美女| 国产精品久久久久久久久粉嫩av| 蜜久久久91精品人妻| 91国偷自产一区二区三区老熟女| 精品97人妻无码中文永久| 婷婷激情五月天图片| 成人免费av在线网站| 91人妻露出精品在线| 久久 99 精品视频| 日本黄页在线播放日本网站| 亚洲欧美日韩国产精品综合| 综合 另类 自拍| 亚洲天堂av电影| 91插插插操美女视频| 88在线观看91蜜桃国自产| 亚洲av激情小说| 国产精品福利久久久久久久| 99热在线精品免费观看| 欧美一区二区精品人妻免费视频| 日本18禁片免费久久| 熟女大白屁股在线播放| 久久久久女优免费视频| 久久久久久久久久无吗| 免费麻豆国产一区二区三区| 97色视频在线看视频| 美国av 在线播放| 91偷拍老熟女露脸合集| 人人妻人人澡人人爽dv| 香蕉在线蕉久在线| 国产成人精品视频免费网站| 精品欧美乱子伦一区二区三区 | 亚洲天堂黄色在线| 亚洲天堂av电影| 成人av电影免费版| 国产精品网址在线观看| 蜜桃黄色av网站免费播放| 亚洲男人天堂久久| 清纯唯美激情五月| 97偷拍视频在线观看| 久久精品中文闷骚内射| 五月婷婷久久久久久久久| 日韩中文字幕一区二区三区四区| 久久精品人妻中文字幕一区| 久久亚洲AV成人无码| 亚洲最大成人网一区二区三区| 久久视频一区二区三| 亚洲av亚洲av亚洲| av日韩中文字幕人妻| 五月婷久久综合狠狠爱97| 蜜臀av日韩特黄大片| 中文字幕版婷婷久久| 久久久久999蜜桃视频| 久久视频这里都是精品| 337p亚洲精品色噜噜| 亚洲男人天堂久久| 91精品久久久久久久久不卡网站| 中文字幕亚洲中文字幕| 精品国产麻豆免费成人网| 麻豆成人在线免费观看视频| 亚洲激情 欧美激情| 久久精品国产91久久麻豆自制| 99久久久99久久91熟女| 五月婷婷激情狠狠| 亚洲日本韩国欧美一起| 日韩欧美亚州综合久久| 久久99免费成人在线| av青青草原在线观看| 日韩av一区中文| 国产精品99久久电影| 97国产免费电影网| 久久视频精彩在线观看| 99re热在线精品视频9| 国产aⅴ爽av久久久久成| 亚洲五月婷婷激情图片| 伊人久久中文字幕综合观看| 一区二区三区精品乱子伦……| 精品乱码一区二区三四五六区| 日韩中文字幕视频在线播放| 日韩欧美不卡一区二区三区五区| 精品人妻久久久久中文字幕19禁| 又爽又黄的免费视频91| 中文字幕亚洲专区欧美| 精品美女1区2区3区| 国产精品久久久久久久久粉嫩av| av蜜臀懂色啊啊啊| 国产中文字幕在线91| 色丁香婷婷综合久久| 精品乱码一区二区三四五六区| 色综合色综合色综合久久| 日韩精品刺激视频| 又爽又黄的免费视频91| 精品国产乱码久久久久夜深 | 日韩成人av影视在线观看| 青娱乐国产视频盛| 精品中文久久久久久| 久久蜜臀精品一区二区| 人妻精品少妇嫩草麻豆| 欧美不卡高清一区二区三区| 欧美高清在线视频99| 福利日韩精品中文字幕专区| 国产日韩欧美成人一二三区| 丰满人妻一区二区三区视频看看 | av久久伊人精品中文字幕| 久久久久久久精品综合| 亚洲欧美日韩国产精品综合| 欧美熟女vides| 亚洲精品网站成人久久综合| 免费精品国产日韩热久久| 天天干天天天天射天天操| 日韩av在线点播| 国产亚洲天堂sss| 91影视一区二区三区| 国产成人av吴梦梦视频| 50岁老熟女一区二区三区| 国产成人精品视频免费网站| 国产亚洲精久久久久久无码色戒| 天天色天天日天天操| 精品乱码一区二区三四五六区| 日韩福利视频在线看| 99久久999久久久精品综合| 精品蜜臀久久久久抄底| 国产精品首页在线播放| 色综合久久999| 风间由美交换夫中文字幕| 97国产免费电影网| 久久久久久少妇被弄高潮| 一区二区三区精品乱子伦……| 日韩厕所偷拍美女| 久久久久久最新精品| 久久视频黄色观看网站| 亚洲青青青国产观看视频| 另类蜜桃刺激视频在线观看| 亚洲国产精品五月天久久久| 国产乱子伦视频免费| 久久久九九九九九精品6| 久久传奇网站一区三区视频| 一区二区 熟女人妻| 亚洲欧美日韩偷拍综合| 日韩av电影免费在线播放| 蜜臀av日韩特黄大片| 人人狠狠久久综合网| www.视频一区二区三区| 五月婷婷久久久久久久久| 精品无码久久久久久毛片| 欧美日韩精品在线观看免费| 日韩欧美一级在线视频| 亚洲女人中文字幕在线| 国产一区二区三区黄色| 人妻中文字幕一二三区| 日本午夜在线免费观看| 亚洲欧美日产人妻| 久久久久久夜夜夜精品国产| 亚洲欧洲黄色图区| 婷婷在线综合观看视频| 天天日天天干天天爱天天| 日韩美女夜夜爽av| 亚洲一级av大片| 日韩卡一卡二卡三卡四卡五| 国产成人免费精品视频大全| 日本av熟女人妻| 在线观看视频 你懂得| 国产成人无码AA精品一区| 骚妻少妇一区二区| 少妇惨叫久久久久久久| 国产激情综合视频在线观看| 久久久精品99国产国产精 | 日本中文字幕一区二区在线视频| 欧美一区二区三区综合色| 99热在线精品免费观看| 麻豆亚州av熟女国产一区二| 天天色天天干天天舔| 亚洲人的午夜影院| 亚洲av亚洲av亚洲| 成年人在线免费观看黄色片| 色播网站在线播放| 成年女人晚上碰免费视频| 国产亚洲欧美日韩在线首页| 中文字幕日韩天堂| 欧美肥臀精品一区二区三区| 日韩一区二区三区水蜜桃| 人妻办公室被强d在线电影| 国产又粗又猛又爽又黄的刘涛视| 午夜寻花美女在线| 亚洲中文字幕福利视频| 婷婷 少妇 av| 免费观看a级在线视频| 亚洲视频另类专区| 欧美老熟妇重口另类xxx| 97精品久久人人爽人人爽| 日本黄页在线播放日本网站| 国产91在线播放精品| 亚洲欧美日韩综合专区| 人妻精品无码一区二区三区| 国产成人精品久久久女| 人妻熟女视频免费观看| 欧美中文字幕久久久| 中文字幕亚洲中文字幕| youwu视频在线| 日韩精品在线播放第三页| 最美人妻一区二区三区| 先锋男人资源中文字幕| 亚洲不卡一区av| 之久精品一区二区| av福利网站在线观看| 国产有码av一区二区| 欧美一区二区三区激情啪啪啪| 日韩美女主播人体视频自拍首页| 国产又大又猛又黄的视频| 日韩av在线观看免费看看| 玖玖资源站中文字幕一区二区| 色熟女蜜臀又伦av| 日韩午夜激情福利免费| 日本av都有哪些系列| 亚洲伊人网在线观看| 日韩av午夜免费| 热香蕉和冷香蕉功效一样吗| 日韩美女在线视频一区| 久久精品熟女人妻一区二区三区| 欧美中文字幕在线一区| 欧美一区二区三区综合色| 中文字幕的不卡人妻| 激情四射五月开心六月婷婷| 91在线播放视频免费| 五月天丁香婷婷国产| 婷婷亚洲免费基地| 香蕉久久久久久久久久久久女| 丰满的人妻一区七区| 北条麻妃裤袜一区二区| 67914熟女在线观看| 国产日本精品久久久久| 亚洲综合在线伊人| 久久久亚洲精品久久仙| 日韩手机在线一区二区三区| 欧美中文字幕在线观看视频| 人妻熟 中文字幕| 国产精品一区二区三区福利| 午夜日韩麻豆福利| 久久精品国产久精果冻传媒| 日韩乱妇乱女熟妇熟女网红| 久久久亚洲熟妇熟女ⅹx| 成年美女黄色av网站| 色男人天堂东京热| 男人的天堂久久精平| 亚洲综合在线伊人| 久久 99 精品视频| 精品一区二区三区蜜桃臀的优势| 视频免费在线观看91| 18在线观看久久久麻豆| 日韩精品刺激视频| 中文字幕av最新资源| 麻豆丝袜美女人妻中文| 久久久久999蜜桃视频| 亚洲第一黄色天堂| 亚洲综合色激情五月| 日韩欧美三级一区二区在线观看| 日韩a大片在线观看| 国产日韩欧美人妻在线观看| 国产91极品身材白皙| 蜜桃av 1区二区| 亚洲不卡一区av| 人人狠狠久久综合网| 99日本亚洲精品视频| 欧美日韩v中文在线| 青娱乐国产视频盛| 91高级会所在线播放| 亚洲欧美日韩一区17c| 5858s在线视频| 精品国产久久久久蜜臀| 亚洲国产精品综合久久2007| 精品久久久久久999| av在线免费在线观看av| 色哟哟视频在线观看国产| 精品无码久久久久久毛片| 91麻豆精品91久久久久同性| 又粗又猛又爽黄老大爷视频| 亚洲天堂av电影免费在线| 成人黄视频在线播放| 中文在线字幕a在线| 在线观看色有小视频| 日韩一区二区三区水蜜桃| 中文字幕久久91| 蜜臀av日韩特黄大片| 天天日天天干天天爱天天| 亚洲欧洲偷拍自拍| 欧美一区二区三区成人久久片| 精品人妻一区二区三区人妻视频 | 日本东京热天天日天天干| 亚洲青青青国产观看视频| 俺去鲁婷婷六月色综合| 麻豆免费国产福利免费国产福利| 久久av一区中文字幕| 色综合久久久久久久久| www.亚洲成人色| 欧美最猛性亚洲精品推荐| 日韩不卡高清视频| 久久久久久添逼视频| 亚洲熟妇av日韩熟妇在线| 久久久精品蜜桃在线| 之久精品一区二区| 欧美日韩亚洲国产ay| 精品成人1区2区3区在线看片| 亚洲国产aⅴ精品一区二区欧美| 最新偷窥偷拍免费视频观看| 成年人晚上免费看的视频| 久久久亚洲熟妇熟女ⅹx| 人妻精品少妇嫩草麻豆| 日本久久久大片中文字幕| 高潮久久久久久久av免费| 中文字幕亚洲欧美国产| 99热这里只有精品网| 亚洲欧美日韩国产另类专区| 久久久久久久久久久免费网| 国产有码av一区二区| 欧美日韩精品综合在线一区二区| 日韩免费美女电影| 久久久久久久久久无吗 | 国产av在线观看麻豆| 欧美不卡高清一区二区三区 | 中文字幕一线一区和二区| 91免费版下载成人| 亚洲天堂av电影| 国产精品成人av在线网站 | 中文字幕一线一区和二区| 天天干天天草天天日天天天射伊人| 久久蜜臀精品一区二区| 最新偷窥偷拍免费视频观看| 久久精品国产亚洲av久丨| 91精品久久久久久久久不卡网站| 日韩精品午夜免费观看| 99热在线精品免费观看| 久久久久国产精品免费| 日韩欧美国产成人一区| 安斋拉拉中文字幕在线| 俺去鲁婷婷六月色综合| 91久久亚洲成人精品| 一本久久久久久久18| 久久久久久精品国产成人| 色视频在线观看123| 免费色婷婷在线视频| 婷婷亚洲天堂中文字幕| 日韩av中文网址| 欧美精品一区二区在线视频| 国语黄色淫秽录像带| 亚洲一区二区三二区厕所偷拍| 久久久久国产精品免费| 日韩中文字幕在线网站| 中文字幕熟女人妻乳一区二区| 欧美日韩国产色图视频| 中文字幕av最新资源| 天天色天天干天天舔| 久久久久久久黄色午夜精品| 国产成人av吴梦梦视频| 久久久久久久久久无吗| 88在线观看91蜜桃国自产| av日韩在线免费观看网站| 国产天堂avwww| 国产精品久久久久久久久久网站| 日韩精品在线视频播放| 青青91免费视频| 国产精品日韩欧美综合| av国偷自产自拍自在线| 又爽又黄的免费视频91| 97人妻中文字幕精品视频| 88av亚洲精品日韩一区二区| 欧美精品人妻丝袜一区| 91免费版下载成人| 欧美日韩成人精品视频| 日韩午夜激情福利免费| 亚洲激情 欧美激情| 欧美自拍 亚洲偷拍| 久久久久国产麻豆婷婷| 婷婷激情免费视频| 自拍偷拍亚洲欧美另类| 亚洲国模私拍视频| 伊人久久婷婷色综合98网| 亚洲激情熟女色图| 国产91久久久久久久| 四十路av熟女俱乐部| www.199麻豆在线视频| 成年女人晚上碰免费视频| 精品国产乱码久久久久久蜜坠欲下| 国产有码av一区二区| 久久人搡人人玩人妻精品| 久久视频一区二区三| 国产青青91av在线视频| 激情四射五月开心六月婷婷| 亚洲阿v天堂久久|