日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

前端渲染引擎doT.js解析

發布時間:2024/7/5 HTML 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端渲染引擎doT.js解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

前端渲染有很多框架,而且形式和內容在不斷發生變化。這些演變的背后是設計模式的變化,而歸根到底是功能劃分邏輯的演變:MVC—>MVP—>MVVM(忽略最早混在一起的寫法,那不稱為模式)。近幾年興起的React、Vue、Angular等框架都屬于MVVM模式,能幫我們實現界面渲染、事件綁定、路由分發等復雜功能。但在一些只需完成數據和模板簡單渲染的場合,它們就顯得笨重而且學習成本較高了。

例如,在美團外賣的開發實踐中,前端經常從后端接口取得長串的數據,這些數據擁有相同的樣式模板,前端需要將這些數據在同一個樣式模板上做重復渲染操作。

解決這個問題的模板引擎有很多,doT.js(出自女程序員Laura Doktorova之手)是其中非常優秀的一個。下表將doT.js與其他同類引擎做了對比:

| 框架 | 大小 | 壓縮版本大小 | 迭代 | 條件表達式 | 自定義語法 | | ———— | ————- | ———— | ———— | | doT.js | 6KB | 4KB | ? | ? | ? | | mustache | 18.9 KB | 9.3 KB | ? | ? | ? | | Handlebars | 512KB | 62.3KB | ? | ? | ? | | artTemplate(騰訊) | - | 5.2KB | ? | ?| ? | | BaiduTemplate(百度) | 9.45KB | 6KB | ? | ? | ? | | jQuery-tmpl | 18.6KB | 5.98KB | ? | ? | ? |

可以看出,doT.js表現突出。而且,它的性能也很優秀,本人在Mac Pro上的用Chrome瀏覽器(版本為:56.0.2924.87)上做100條數據10000次渲染性能測試,結果如下:

從上可以看出doT.js更值得推薦,它的主要優勢在于: 1. 小巧精簡,源代碼不超過兩百行,6KB的大小,壓縮版只有4KB; 2. 支持表達式豐富,涵蓋幾乎所有應用場景的表達式語句; 3. 性能優秀; 4. 不依賴第三方庫。

本文主要對doT.js的源碼進行分析,探究一下這類模板引擎的實現原理。

如何使用

如果之前用過doT.js,可以跳過此小節,doT.js使用示例如下:

<script type="text/html" id="tpl"><div><a>name:{{= it.name}}</a><p>age:{{= it.age}}</p><p>hello:{{= it.sayHello() }}</p><select>{{~ it.arr:item}}<option {{?item.id == it.stringParams2}}selected{{?}} value="{{=item.id}}">{{=item.text}}</option>{{~}}</select></div> </script> <script>$("#app").html(doT.template($("#tpl").html())({name:'stringParams1',stringParams1:'stringParams1_value',stringParams2:1,arr:[{id:0,text:'val1'},{id:1,text:'val2'}],sayHello:function () {return this[this.name]}})); </script>

可以看出doT.js的設計思路:將數據注入到預置的視圖模板中渲染,返回HTML代碼段,從而得到最終視圖。

下面是一些常用語法表達式對照表:

項目JavaScript語法對應語法案例
輸出變量={{= 變量名}}{{=it.name }}
條件判斷if{{? 條件表達式}}{{? i > 3}}
條件轉折else/else if{{??}}/{{?? 表達式}}{{?? i ==2}}
循環遍歷for{{~ 循環變量}}{{~ it.arr:item}}…{{~}}
執行方法funcName(){{= funcName() }}{{= it.sayHello() }}

源碼分析及實現原理

和后端渲染不同,doT.js的渲染完全交由前端來進行,這樣做主要有以下好處:

  • 脫離后端渲染語言,不需要依賴后端項目的啟動,從而降低了開發耦合度、提升開發效率;
  • View層渲染邏輯全在JavaScript層實現,容易維護和修改;
  • 數據通過接口得到,無需考慮后端數據模型變化,只需關心數據格式。
  • doT.js源碼核心:

    ... // 去掉所有制表符、空格、換行 str = ("var out='" + (c.strip ? str.replace(/(^|\r|\n)\t* +| +\t*(\r|\n|$)/g," ").replace(/\r|\n|\t|\/\*[\s\S]*?\*\//g,""): str).replace(/'|\\/g, "\\$&").replace(c.interpolate || skip, function(m, code) {return cse.start + unescape(code,c.canReturnNull) + cse.end;}).replace(c.encode || skip, function(m, code) {needhtmlencode = true;return cse.startencode + unescape(code,c.canReturnNull) + cse.end;})// 條件判斷正則匹配,包括if和else判斷.replace(c.conditional || skip, function(m, elsecase, code) {return elsecase ?(code ? "';}else if(" + unescape(code,c.canReturnNull) + "){out+='" : "';}else{out+='") :(code ? "';if(" + unescape(code,c.canReturnNull) + "){out+='" : "';}out+='");})// 循環遍歷正則匹配.replace(c.iterate || skip, function(m, iterate, vname, iname) {if (!iterate) return "';} } out+='";sid+=1; indv=iname || "i"+sid; iterate=unescape(iterate);return "';var arr"+sid+"="+iterate+";if(arr"+sid+"){var "+vname+","+indv+"=-1,l"+sid+"=arr"+sid+".length-1;while("+indv+"<l"+sid+"){"+vname+"=arr"+sid+"["+indv+"+=1];out+='";})// 可執行代碼匹配.replace(c.evaluate || skip, function(m, code) {return "';" + unescape(code,c.canReturnNull) + "out+='";})+ "';return out;")...try {return new Function(c.varname, str);//c.varname 定義的是new Function()返回的函數的參數名} catch (e) {/* istanbul ignore else */if (typeof console !== "undefined") console.log("Could not create a template function: " + str);throw e;} ...

    這段代碼總結起來就是一句話:用正則表達式匹配預置模板中的語法規則,將其轉換、拼接為可執行HTML代碼,作為可執行語句,通過new Function()創建的新方法返回。

    代碼解析重點1:正則替換

    正則替換是doT.js的核心設計思路,本文不對正則表達式做擴充講解,僅分析doT.js的設計思路。先來看一下doT.js中用到的正則:

    templateSettings: {evaluate: /\{\{([\s\S]+?(\}?)+)\}\}/g, //表達式interpolate: /\{\{=([\s\S]+?)\}\}/g, // 插入的變量encode: /\{\{!([\s\S]+?)\}\}/g, // 在這里{{!不是用來做判斷,而是對里面的代碼做編碼use: /\{\{#([\s\S]+?)\}\}/g,useParams: /(^|[^\w$])def(?:\.|\[[\'\"])([\w$\.]+)(?:[\'\"]\])?\s*\:\s*([\w$\.]+|\"[^\"]+\"|\'[^\']+\'|\{[^\}]+\})/g,define: /\{\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\}/g,// 自定義模式defineParams:/^\s*([\w$]+):([\s\S]+)/, // 自定義參數conditional: /\{\{\?(\?)?\s*([\s\S]*?)\s*\}\}/g, // 條件判斷iterate: /\{\{~\s*(?:\}\}|([\s\S]+?)\s*\:\s*([\w$]+)\s*(?:\:\s*([\w$]+))?\s*\}\})/g, // 遍歷varname: "it", // 默認變量名strip: true,append: true,selfcontained: false,doNotSkipEncoded: false // 是否跳過一些特殊字符 }

    源碼中將正則定義寫到一起,這樣方便了維護和管理。在早期版本的doT.js中,處理條件表達式的方式和tmpl一樣,采用直接替換成可執行語句的形式,在最新版本的doT.js中,修改成僅一條正則就可以實現替換,變得更加簡潔。

    doT.js源碼中對模板中語法正則替換的流程如下:

    代碼解析重點2:new Function()運用

    函數定義時,一般通過Function關鍵字,并指定一個函數名,用以調用。在JavaScript中,函數也是對象,可以通過函數對象(Function Object)來創建。正如數組對象對應的類型是Array,日期對象對應的類型是Date一樣,如下所示:

    var funcName = new Function(p1,p2,...,pn,body);

    參數的數據類型都是字符串,p1到pn表示所創建函數的參數名稱列表,body表示所創建函數的函數體語句,funcName就是所創建函數的名稱(可以不指定任何參數創建一個匿名函數)。

    下面的定義是等價的。

    例如:

    // 一般函數定義方式 function func1(a,b){return a+b; } // 參數是一個字符串通過逗號分隔 var func2 = new Function('a,b','return a+b'); // 參數是多個字符串 var func3 = new Function('a','b','return a+b'); // 一樣的調用方式 console.log(func1(1,2)); console.log(func2(2,3)); console.log(func3(1,3)); // 輸出 3 // func1 5 // func2 4 // func3

    從上面的代碼中可以看出,Function的最后一個參數,被轉換為可執行代碼,類似eval的功能。eval執行時存在瀏覽器性能下降、調試困難以及可能引發XSS(跨站)攻擊等問題,因此不推薦使用eval執行字符串代碼,new Function()恰好解決了這個問題。回過頭來看doT代碼中的”new Function(c.varname, str)“,就不難理解varname是傳入可執行字符串str的變量。

    具體關于new Fcuntion的定義和用法,詳細請閱讀Function詳細介紹。

    性能之因

    讀到這里可能會產生一個疑問:doT.js的性能為什么在眾多引擎如此突出?通過閱讀其他引擎源代碼,發現了它們核心代碼段中都存在這樣那樣的問題。

    jQuery-tmpl

    function buildTmplFn( markup ) {return new Function("jQuery","$item",// Use the variable __ to hold a string array while building the compiled template. (See https://github.com/jquery/jquery-tmpl/issues#issue/10)."var $=jQuery,call,__=[],$data=$item.data;" +// Introduce the data as local variables using with(){}"with($data){__.push('" +// Convert the template into pure JavaScriptjQuery.trim(markup).replace( /([\\'])/g, "\\$1" ).replace( /[\r\t\n]/g, " " ).replace( /\$\{([^\}]*)\}/g, "{{= $1}}" ).replace( /\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function( all, slash, type, fnargs, target, parens, args ) {//省略部分模板替換語句,若要閱讀全部代碼請訪問:https://github.com/BorisMoore/jquery-tmpl}) +"');}return __;");}

    在上面的代碼中看到,jQuery-teml同樣使用了new Function()的方式編譯模板,但是在性能對比中jQuery-teml性能相比doT.js相差甚遠,出現性能瓶頸的關鍵在于with語句的使用。

    with語句為什么對性能有這么大的影響?我們來看下面的代碼:

    var datas = {persons:['李明','小紅','趙四','王五','張三','孫行者','馬婆子'],gifts:['平民','巫師','狼','獵人','先知']}; function go(){with(datas){var personIndex = 0,giftIndex = 0,i=100000;while(i){personIndex = Math.floor(Math.random()*persons.length);giftIndex = Math.floor(Math.random()*gifts.length)console.log(persons[personIndex] +'得到了新的身份:'+ gifts[giftIndex]);i--;}} }

    上面代碼中使用了一個with表達式,為了避免多次從datas中取變量而使用了with語句。這看起來似乎提升了效率,但卻產生了一個性能問題:在JavaScript中執行方法時會產生一個執行上下文,這個執行上下文持有該方法作用域鏈,主要用于標識符解析。當代碼流執行到一個with表達式時,運行期上下文的作用域鏈被臨時改變了,一個新的可變對象將被創建,它包含指定對象的所有屬性。此對象被插入到作用域鏈的最前端,意味著現在函數的所有局部變量都被推入第二個作用域鏈對象中,這樣訪問datas的屬性非???#xff0c;但是訪問局部變量的速度卻變慢了,所以訪問代價更高了,如下圖所示。

    這個插件在GitHub上面介紹時,作者Boris Moore著重強調兩點設計思路:

  • 模板緩存,在模板重復使用時,直接使用內存中緩存的模板。在本文作者看來,這是一個雞肋的功能,在實際使用中,無論是直接寫在String中的模板還是從Dom獲取的模板都會以變量的形式存放在內存中,變量使用得當,在頁面整個生命周期內都能取到這個模板。通過源碼分析之后發現jQuery-tmpl的模板緩存并不是對模板編譯結果進行緩存,并且會造成多次執行渲染時產生多次編譯,再加上代碼with性能消耗,嚴重拖慢整個渲染過程。
  • 模板標記,可以從緩存模板中取出對應子節點。這是一個不錯的設計思路,可以實現數據改變只重新渲染局部界面的功能。但是我覺得:模板將渲染結果交給開發者,并渲染到界面指定位置之后,模板引擎的工作就應該結束了,剩下的對節點操作應該靈活的掌握在開發者手上。
  • 不改變原來設計思路基礎之上,嘗試對源代碼進行性能提升。

    先保留提升前性能作為對比:

    首先來我們做第一次性能提升,移除源碼中with語句。

    第一次提升后:

    接下來第二部提升,落實Boris Moore設計理念中的模板緩存:

    優化后的這一部分代碼段被我們修改成了:

    function buildTmplFn( markup ) {if(!compledStr){// Convert the template into pure JavaScriptcompledStr = jQuery.trim(markup).replace( /([\\'])/g, "\\$1" ).replace( /[\r\t\n]/g, " " ).replace( /\$\{([^\}]*)\}/g, "{{= $1}}" ).replace( /\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,//省略部分模板替換語句}return new Function("jQuery","$item",// Use the variable __ to hold a string array while building the compiled template. (See https://github.com/jquery/jquery-tmpl/issues#issue/10)."var $=jQuery,call,__=[],$data=$item.data;" +// Introduce the data as local variables using with(){}"__.push('" + compledStr +"');return __;") }

    在doT.js源碼中沒有用到with這類消耗性能的語句,與此同時doT.js選擇先將模板編譯結果返回給開發者,這樣如要重復多次使用同一模板進行渲染便不會反復編譯。

    僅25行的模板:tmpl

    (function(){var cache = {};this.tmpl = function (str, data){var fn = !/\W/.test(str) ?cache[str] = cache[str] ||tmpl(document.getElementById(str).innerHTML) :new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};" +"with(obj){p.push('" +str.replace(/[\r\t\n]/g, " ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g, "$1\r").replace(/\t=(.*?)%>/g, "',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+ "');}return p.join('');");return data ? fn( data ) : fn;}; })();

    閱讀這段代碼會驚奇的發現,它更像是baiduTemplate精簡版。相比baiduTemplate而言,它移除了baiduTemplate的自定義語法標簽的功能,使得代碼更加精簡,也避開了替換用戶語法標簽而帶來的性能消耗。對于doT.js來說,性能問題的關鍵是with語句。

    綜合上述我對tmpl的源碼進行移除with語句改造:

    改造之前性能:

    改造之后性能:

    如果讀者對性能對比源碼比較感興趣可以訪問 https://github.com/chen2009277025/TemplateTest 。

    總結

    通過對doT.js源碼的解讀,我們發現:

  • doT.js的條件判斷語法標簽不直觀。當開發者在使用過程中條件判斷嵌套過多時,很難找到對應的結束語法符號,開發者需要自己嚴格規范代碼書寫,否則會給開發和維護帶來困難。
  • doT.js限制開發者自定義語法標簽,相比較之下baiduTemplate提供可自定義標簽的功能,而baiduTemplate的性能瓶頸恰好是提供自定義語法標簽的功能。
  • 很多解決我們問題的插件的代碼往往簡單明了,那些龐大的插件反而存在負面影響或無用功能。技術領域有一個軟件設計范式:“約定大于配置”,旨在減少軟件開發人員需要做決定的數量,做到簡單而又不失靈活。在插件編寫過程中開發者應多注意使用場景和性能的有機結合,使用恰當的語法,盡可能減少開發者的配置,不求迎合各個場景。

    作者簡介

    • 建輝,美團外賣高級前端研發工程師,2015年加入美團外賣事業部。目前在前端業務增長組,主要負責運營平臺搭建,主導運營活動業務。

    總結

    以上是生活随笔為你收集整理的前端渲染引擎doT.js解析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    免费又黄又爽的视频 | 蜜桃视频在线视频 | 99re国产视频| 色www精品视频在线观看 | 成人免费在线视频观看 | 丁香婷婷色 | 91亚洲欧美| 亚洲精品视频在线观看视频 | 久久精品在线 | 91字幕| 99久久综合狠狠综合久久 | 免费看的毛片 | 天天操天天操天天爽 | 日韩美女免费线视频 | 日韩在线精品一区 | 九九九国产 | 操久久免费视频 | 久久精品一区 | 亚洲国产精品成人va在线观看 | 色综合天天做天天爱 | 国产精品毛片久久久久久 | 91亚洲精品国偷拍 | 波多野结衣亚洲一区二区 | 亚洲日日夜夜 | 欧美精品乱码久久久久 | 久草在线免费新视频 | avwww在线观看 | 亚洲精品午夜国产va久久成人 | 久久久久久久久爱 | 国产免费不卡av | 中文字幕文字幕一区二区 | 国产麻豆精品一区二区 | 欧美a级成人淫片免费看 | 日韩超碰 | 久久午夜鲁丝片 | 日本aa在线| 中文字幕在线播出 | 天天做天天爱天天综合网 | 国产成人a v电影 | 久久精品日产第一区二区三区乱码 | 天天操天天综合网 | 国产精品一区二区三区视频免费 | av大全在线观看 | 中文字幕永久免费 | 欧美,日韩 | 久久视频免费观看 | 久久久久女教师免费一区 | 日韩电影在线视频 | 亚州精品成人 | 久久1区| 久久av影院 | 深爱激情开心 | 免费在线观看中文字幕 | 三级视频日韩 | 欧美日韩后| 69av免费视频 | www日韩视频 | 2019中文| 在线观看一| 国产美女精品人人做人人爽 | 国产视频不卡 | 午夜视频99| 久色婷婷| 91在线看| 国产裸体无遮挡 | 久久在草| 日韩av美女| 又黄又爽又刺激的视频 | 国产精品99久久久久久宅男 | 国产又粗又猛又爽又黄的视频免费 | 久久er99热精品一区二区 | 国产高h视频 | 97手机电影网 | 蜜桃视频成人在线观看 | 国产午夜av | 国产999在线| 亚洲激情小视频 | 日韩三区在线观看 | 天天操狠狠干 | 成人精品一区二区三区中文字幕 | 中文字幕av免费观看 | 久久草| 欧洲精品码一区二区三区免费看 | 日本激情动作片免费看 | 天天超碰| 黄色99视频 | 综合色中文 | 国模视频一区二区 | 久草视频在线资源站 | 999视频网 | 精品国产免费一区二区三区五区 | 婷婷中文字幕综合 | 成人国产精品一区二区 | 日本三级大片 | 一区二区在线影院 | 韩国视频一区二区三区 | 午夜黄色影院 | 国产精品毛片久久 | 日韩v欧美v日本v亚洲v国产v | 日韩大陆欧美高清视频区 | 91传媒在线 | 韩国av三级| 欧美整片sss | 亚洲天天 | 成人免费共享视频 | av一级黄| www.亚洲在线 | 欧美精品在线视频观看 | 国产精品区二区三区日本 | 久久国产精品视频免费看 | 黄色软件在线观看免费 | 五月综合网站 | 中文字幕专区高清在线观看 | 99久高清在线观看视频99精品热在线观看视频 | 国产自偷自拍 | 国产精品不卡一区 | 久久超碰99 | 国产视频九色蝌蚪 | 亚洲精品一区二区三区高潮 | 免费一级日韩欧美性大片 | 国产高清不卡av | 激情五月婷婷综合网 | 国产免费人成xvideos视频 | 97视频人人免费看 | 亚洲精品中文字幕在线观看 | 亚洲高清精品在线 | 久久久久久久久黄色 | 欧美日韩免费观看一区=区三区 | 四虎国产精品成人免费4hu | 国产成人亚洲在线观看 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 中文字幕永久免费 | 欧美国产大片 | 在线日韩视频 | 狠狠操狠狠 | 在线 日韩 av | 五月天欧美精品 | 国产一区免费看 | 久久精品这里都是精品 | 久久久不卡影院 | 三级黄色大片在线观看 | 国产精品99久久久久久小说 | 五月婷综合网 | av免费线看 | 在线一区二区三区 | 波多野结衣一区 | 日韩精品一区二区三区第95 | 国产精品久久久久久久久久三级 | 成人免费共享视频 | 国产黄色片一级三级 | 色综合久久久久网 | 999久久久免费精品国产 | 夜夜操狠狠干 | 亚洲乱码精品久久久久 | 五月天网站在线 | 久久人人爽人人爽 | 国产麻豆视频在线观看 | 久久久免费毛片 | 国产高清一级 | 日韩av专区 | 国产精品成人免费一区久久羞羞 | 日韩二区三区在线观看 | 特级西西444www大胆高清无视频 | 97在线精品视频 | 精品国产一区二区三区噜噜噜 | 香蕉视频日本 | 成人精品一区二区三区电影免费 | 五月天伊人 | 久久99热这里只有精品 | 丁香久久久 | 少妇搡bbbb搡bbb搡69 | 亚州av成人 | 五月激情久久久 | 国产精品一区二区免费视频 | 亚洲激情久久 | 欧美精品免费在线观看 | 92精品国产成人观看免费 | 久久久麻豆精品一区二区 | 在线播放你懂 | 97av色| 午夜精品久久久久久久99无限制 | 超级碰99 | 久久综合狠狠综合 | 狠狠色狠狠色综合系列 | av电影免费看| 欧美精品国产精品 | 久 久久影院 | 国产录像在线观看 | 日韩免费在线观看网站 | 日韩在线资源 | 天天色天天射天天综合网 | 97超碰免费在线观看 | 日韩视频一区二区 | 欧洲色吧 | 色综合天天色综合 | 曰韩在线 | 伊人狠狠 | 日韩欧美在线观看一区二区三区 | av不卡中文字幕 | 色天天综合久久久久综合片 | 久久黄色影视 | 欧美国产亚洲精品久久久8v | 国产99久久久国产精品成人免费 | 天天射天天干天天爽 | 美女视频黄频大全免费 | 成人av高清 | 亚洲视频一 | 在线亚洲人成电影网站色www | 国产一二区免费视频 | 天天综合五月天 | 国产精品嫩草影院123 | 亚州日韩中文字幕 | 免费网站在线观看成人 | 亚洲精品视频网站在线观看 | av视屏在线播放 | 婷婷av色综合 | 成人电影毛片 | 免费在线观看的av网站 | 91av大全| 国产精品99久久久精品免费观看 | 国产在线一区二区 | 天天天干天天射天天天操 | 中文字幕av在线免费 | 丁香视频五月 | 久久人人爽视频 | 中文字幕av一区二区三区四区 | 伊人av综合 | 99视频国产精品 | 欧美成人h版在线观看 | 国产五月 | 天天干视频在线 | 四虎国产| 深夜免费小视频 | 亚洲三级黄色 | av看片网址 | 狠狠插狠狠干 | 国产黄色播放 | 国产精品videoxxxx | 成年人视频在线观看免费 | 成人在线视频论坛 | 成人资源在线播放 | 在线精品播放 | 国产在线播放观看 | 精品国产综合区久久久久久 | 精品99视频| 久草视频首页 | 97看片吧 | 丁香六月天婷婷 | av片一区| 五月激情在线 | 亚洲精品国产欧美在线观看 | 国产日韩精品一区二区在线观看播放 | 97在线观视频免费观看 | 久久夜夜操 | 日本99热| 97国产一区二区 | 免费观看av | 久久99热久久99精品 | 日韩欧美视频一区二区三区 | 色香天天| 欧美性生交大片免网 | 欧美精品在线一区 | 精品国产乱码久久久久久1区二区 | 欧美一区二区三区四区夜夜大片 | 国产午夜精品理论片在线 | 美女激情影院 | 欧美日韩国产二区三区 | 区一区二在线 | 亚洲欧美日韩一二三区 | 久久艹艹 | 久久午夜羞羞影院 | 奇米影视四色8888 | 在线免费观看羞羞视频 | 欧美国产亚洲精品久久久8v | 欧美韩日在线 | 久久中文字幕导航 | 国产成人一区二 | 99精品欧美一区二区三区黑人哦 | 欧美在线观看视频一区二区三区 | 狠狠干狠狠色 | 日韩欧美视频免费观看 | 国产h片在线观看 | 超碰97在线人人 | 狠狠ri| 九九九九热精品免费视频点播观看 | 99精品在这里| 13日本xxxxxⅹxxx20| 国内精品免费久久影院 | av免费看网站 | 亚洲欧洲一区二区在线观看 | 亚洲视频精品在线 | a黄色大片 | 日韩午夜大片 | 亚洲国产日韩欧美 | 97色婷婷成人综合在线观看 | 国产区精品| 国产亚洲精品久久久久秋 | 激情五月播播久久久精品 | 在线观看视频在线观看 | 六月丁香色婷婷 | 草免费视频 | 国产精品久久久99 | 天天色综合1 | 永久免费精品视频网站 | 蜜臀av性久久久久蜜臀av | 久久久久久久久免费视频 | 中文字幕高清免费日韩视频在线 | 国产精品久久久久久久久久尿 | 久草免费电影 | 色综合久久久久久久久五月 | 最新av中文字幕 | 91黄色影视 | 日韩精品一区二区三区视频播放 | 九色视频网 | 久久电影网站中文字幕 | 国产精品久久久久久久婷婷 | 福利电影一区二区 | 免费高清无人区完整版 | 亚洲伊人第一页 | 久久99国产精品免费 | 欧美色888 | 欧美在线aa | 人人干在线| 精品一区二区三区久久久 | 日韩一区二区在线免费观看 | 日韩精品不卡 | 91av蜜桃| 天天摸天天舔天天操 | 日本深夜福利视频 | 久久久免费少妇 | 欧美a级片网站 | 香蕉视频免费在线播放 | 国产精品美女久久久久久免费 | 黄色在线观看网站 | 久久久免费毛片 | 91麻豆精品国产91久久久无限制版 | 欧美一级黄色片 | 日韩在线不卡av | www视频免费在线观看 | 精品国产一区二区三区在线观看 | 99视频久| 日韩精品无码一区二区三区 | 激情五月在线 | 天天搞天天干天天色 | 人人爽人人爽人人片av免 | av网站在线观看免费 | 一级黄色片在线观看 | 国产精品精 | 亚洲精品9 | 国产一区视频在线播放 | 中文字幕.av.在线 | 99视频导航 | 国产xvideos免费视频播放 | 一区二区成人国产精品 | 久久久官网 | 日本中文字幕免费观看 | 人人添人人澡人人澡人人人爽 | 国产精品免费视频网站 | 精品亚洲va在线va天堂资源站 | 91久久爱热色涩涩 | 久久99久久99久久 | 久草视频免费观 | 国色天香第二季 | 久久精品久久久久电影 | 色wwwww | 欧美日韩中文字幕综合视频 | 毛片美女网站 | 久久看毛片 | 国产黄色精品在线 | 欧美久久久久久久久久久久久 | 日日躁你夜夜躁你av蜜 | 日韩肉感妇bbwbbwbbw | 天天插天天爱 | 亚洲va在线va天堂 | 国产老太婆免费交性大片 | 久久精品韩国 | 婷婷激情站| 亚洲乱码国产乱码精品天美传媒 | 少妇性色午夜淫片aaaze | 九九在线播放 | 亚洲免费av片 | 我爱av激情网 | 日本久久电影 | 国内精品在线看 | 丁香六月欧美 | 国产免费一区二区三区网站免费 | 久久不卡视频 | 97**国产露脸精品国产 | 久久国产精品久久国产精品 | 亚洲精品欧美成人 | 久久国产精品色av免费看 | 日日夜夜天天久久 | 久久精品高清视频 | 午夜电影av | 亚洲黄色av | 最新中文字幕视频 | 久久综合九色综合欧美就去吻 | 日日日操操 | 五月天网站在线 | 在线免费高清一区二区三区 | 人人干人人搞 | 在线97| 久草精品视频在线看网站免费 | 精品国产乱码久久久久久三级人 | 欧洲精品一区二区 | 91完整版观看 | 免费日韩| 在线视频 国产 日韩 | 乱男乱女www7788| 丰满少妇在线观看 | av片在线观看 | 日韩精品短视频 | 九九在线高清精品视频 | 伊人色播 | 免费三级黄 | 午夜精品一区二区三区四区 | 久久在线一区 | 99精品国产高清在线观看 | 国产精品video | 在线网站黄 | 国产精品成人在线 | 午夜国产福利在线 | 伊人视频| 国产成人av电影在线观看 | 日本不卡123 | 亚洲精品免费在线视频 | 亚洲专区在线播放 | 亚洲综合在线五月 | 日韩电影中文字幕在线观看 | 国产精品久久一区二区三区不卡 | 在线播放91 | 日韩69av | 国产 一区二区三区 在线 | 最新日韩视频在线观看 | 色五月激情五月 | 天天操天天干天天综合网 | 日韩免费一区 | 国产精品自在线 | 三级视频片 | 成年人三级网站 | 有没有在线观看av | 成人黄色一级视频 | 人人揉人人揉人人揉人人揉97 | 国产xx视频 | 免费成人在线电影 | 精品视频9999 | 亚洲综合网站在线观看 | 亚洲 欧洲 国产 日本 综合 | 亚洲国产日韩在线 | 日韩色高清| 人人舔人人爱 | 五月天伊人 | 99久久这里只有精品 | 国产破处精品 | 久草久热 | 天天做天天射 | 欧美老人xxxx18 | 日日日网 | 夜添久久精品亚洲国产精品 | 免费看的黄色网 | 亚洲精品tv| 久久久久久久久久久影院 | 色偷偷88欧美精品久久久 | 天天骚夜夜操 | 国产 日韩 在线 亚洲 字幕 中文 | 久久综合久久综合这里只有精品 | 国产黄在线免费观看 | 国产免费观看高清完整版 | 中文字幕精品三区 | 精品久久久久久综合日本 | 97在线视频免费播放 | 日日操狠狠干 | 视频91 | 97精品国产91久久久久久久 | 国产在线观看你懂得 | 国产高清中文字幕 | 91精品国产91久久久久 | 国产亚洲欧美精品久久久久久 | 免费看成人a | 夜夜躁狠狠燥 | www.少妇| 成人a级免费视频 | 亚洲美女久久 | 精品国产亚洲日本 | 99在线观看精品 | 黄色av观看 | 亚洲精品男人的天堂 | 日日干天夜夜 | 精品国产91亚洲一区二区三区www | 日韩系列在线 | 91久久久久久久一区二区 | 日韩黄色中文字幕 | 免费在线一区二区 | 久久首页| 狠狠色噜噜狠狠狠合久 | wwwwww色| 久久99国产精品久久99 | 精品一区二区影视 | 午夜三级福利 | 精品一区二区av | 日本精品视频网站 | 美女视频网 | 日韩三级av | av九九九 | 99在线精品免费视频九九视 | www.亚洲视频.com | 成人免费一区二区三区在线观看 | 亚洲天堂网站视频 | 美女网站视频免费都是黄 | 国产精品去看片 | 91精品一区二区三区蜜桃 | 日日日天天天 | 国产九色91| 国产高清 不卡 | 精品国产诱惑 | 精品中文字幕在线播放 | 日韩免费av在线 | 亚欧日韩成人h片 | 免费观看福利视频 | 五月综合激情婷婷 | 久久综合给合久久狠狠色 | 国内99视频 | 国产成人在线网站 | 国产精品二区在线 | 97**国产露脸精品国产 | 久久久99精品免费观看app | 久草视频在线观 | 五月婷婷深开心 | 国产午夜精品一区二区三区四区 | 亚洲人成在| 日韩视频免费观看高清 | 91亚洲精品国偷拍自产在线观看 | 亚洲高清视频在线观看免费 | 精品久久久久久国产 | 国产日韩视频在线播放 | 成人免费观看a | 日韩在线视频免费播放 | 狠狠色丁香婷婷综合欧美 | 亚洲欧美视频在线观看 | 成人av影视 | 2019免费中文字幕 | 亚洲精品视频网址 | 美女一区网站 | 久久综合久久综合这里只有精品 | 亚洲第一区精品 | 久久视频国产精品免费视频在线 | 国产一线二线三线在线观看 | 中文在线| 亚洲国产视频网站 | 毛片永久免费 | 久久午夜影视 | 极品嫩模被强到高潮呻吟91 | 91 在线视频播放 | 午夜视频免费播放 | 国产精品18久久久久vr手机版特色 | 精品亚洲在线 | 狠狠狠狠狠狠操 | 日本一区二区三区免费看 | 一区在线观看 | 探花视频在线观看免费 | www.国产视频 | 伊人伊成久久人综合网小说 | 一色屋精品视频在线观看 | 91福利视频网站 | 超碰在线观看99 | 色综合欧洲 | 91在线欧美| 久久免费av电影 | 人人澡超碰碰97碰碰碰软件 | 免费精品国产 | 国产精品美女久久久久久久网站 | 国产不卡免费 | 99久久婷婷国产综合亚洲 | 中文字幕观看av | 18久久久久 | 国产 欧美 日本 | 国产精品嫩草影视久久久 | 久久久久久久久久久久久影院 | 国产一级在线看 | 色综合 久久精品 | 亚州精品国产 | 国产精品久久久区三区天天噜 | 久久色视频 | 美女免费视频黄 | 成人黄色在线观看视频 | 亚洲欧洲成人 | 久久精品二区 | 日本三级不卡视频 | 麻豆视频免费播放 | 国产精品久久久久影院 | 天天做天天爱天天综合网 | 香蕉手机在线 | 国产视频中文字幕在线观看 | 免费网站看av片 | 久草视频免费在线播放 | 国产美女精品人人做人人爽 | aav在线| 麻豆果冻剧传媒在线播放 | 在线观看免费色 | 麻豆超碰 | 亚洲aⅴ免费在线观看 | wwwwwww黄| 999一区二区三区 | 精品一区二区在线播放 | www.亚洲黄色 | 中文字幕在线观看你懂的 | 成人av在线网 | 娇妻呻吟一区二区三区 | 六月婷操 | 在线黄色av | 久久久一本精品99久久精品 | 久草在线视频中文 | 一区二区三区精品久久久 | 97国产大学生情侣白嫩酒店 | 毛片一级免费一级 | 亚洲国产资源 | 欧美日韩视频在线 | 免费久久视频 | 狠狠做深爱婷婷综合一区 | 日韩在线国产精品 | 蜜臀av夜夜澡人人爽人人 | 99久久激情视频 | 一级片视频免费观看 | 在线观看亚洲免费视频 | av一区二区三区在线播放 | 亚洲日本精品 | 国产成人精品一区二区在线 | 国产a精品 | 亚洲成人黄色网址 | 日日夜色 | 麻豆国产在线视频 | 日本二区三区在线 | 日韩精品视频第一页 | 香蕉久草在线 | 亚洲97在线 | 久久精品视 | 天天插天天干天天操 | av在线影片| 欧美日韩激情视频8区 | 国产视 | 99免费观看视频 | 亚洲精品美女久久久久网站 | 成人午夜av电影 | 麻豆视频国产在线观看 | 国产成人一二三 | 不卡视频在线看 | 人人艹人人 | 五月婷社区| 超碰在线91 | 久久久国产精品免费 | 国产精品二区三区 | 黄色国产在线观看 | 99色免费 | 久草在线看片 | 成人午夜电影免费在线观看 | 日韩肉感妇bbwbbwbbw | 午夜视频免费播放 | 国产伦精品一区二区三区高清 | 久草电影免费在线观看 | 国产手机在线观看视频 | 亚洲精品在线观看的 | 毛片网站在线观看 | 精品国产一区二区三区在线 | 欧美9999| av中文字幕av | 91麻豆精品国产自产 | 91手机在线看片 | av日韩不卡 | 国产精品欧美久久久久天天影视 | 欧美日韩另类视频 | 国产福利不卡视频 | 五月天欧美精品 | 久久99婷婷 | 天天草av | 处女av在线 | www.夜色.com| 欧美一区视频 | 久草在线欧美 | 91完整版观看| 日韩av在线小说 | 午夜狠狠干 | 久久综合网色—综合色88 | 江苏妇搡bbbb搡bbbb | 亚洲一区二区麻豆 | 最近中文字幕在线中文高清版 | 亚洲精品乱码久久 | 国产91综合一区在线观看 | 又黄又刺激视频 | 黄色亚洲免费 | av成人免费在线 | 亚洲第一中文网 | 国产精品一区二区吃奶在线观看 | 亚洲综合在线视频 | 国产馆在线播放 | 日韩在线观看视频在线 | 国产精品久久久久久久久久久久冷 | 国产精品综合在线 | 久久久久伊人 | 精品久久视频 | www.天天干 | 96视频免费在线观看 | 亚州国产精品视频 | 久久久久久久久久久网站 | 亚洲在线视频免费 | 九色91在线视频 | 国产免费亚洲高清 | 久久精品4| 天天看天天操 | av大全在线看 | 久久三级视频 | 亚洲aⅴ一区二区三区 | 激情六月婷婷久久 | 公与妇乱理三级xxx 在线观看视频在线观看 | 欧美91av| av在线免费不卡 | 最新日本中文字幕 | 国产日韩欧美在线播放 | 黄色国产成人 | 成人黄色片免费 | 91在线欧美 | 国产高清视频免费最新在线 | 国产精品久久久久久久久婷婷 | 国产日产精品久久久久快鸭 | 欧美日韩高清在线 | 91视频国产高清 | 国产精品一区二区在线免费观看 | 天天艹天天操 | 免费裸体视频网 | 狠狠狠狠狠狠天天爱 | 99精品国产99久久久久久97 | 欧美成人精品欧美一级乱 | 成人动漫视频在线 | 成年人在线免费视频观看 | 香蕉在线观看 | 91精品国产乱码在线观看 | 美女一级毛片视频 | 中文字幕视频免费观看 | 亚洲欧美日韩一二三区 | 五月天婷婷在线观看视频 | 国产精品免费观看在线 | 婷婷丁香激情五月 | 成年人黄色免费网站 | 久久久久久久久久亚洲精品 | 天天拍天天干 | 久久国产免费看 | 在线观看网站av | 国产免费国产 | 久久欧美综合 | 999久久国产| 五月天亚洲婷婷 | 国产资源在线观看 | 久久久国产在线视频 | 91少妇精拍在线播放 | 久久成人国产精品免费软件 | 欧美另类网站 | 天天操天天操一操 | 99超碰在线播放 | 精品在线一区二区 | 亚洲 欧洲av | 超碰97免费在线 | 黄色网在线播放 | 99999精品 | 欧美日韩三区二区 | 久久这里精品视频 | 最新国产在线视频 | 一级a毛片高清视频 | 国产手机视频精品 | 成人免费网视频 | 久久精品在线免费观看 | 三级黄色在线 | av线上看 | 日日日操 | 国产中的精品av小宝探花 | 操操操com| 日韩高清免费观看 | 黄色影院在线免费观看 | 黄色一级网 | 五月婷婷导航 | 天天弄天天操 | 国产精品日韩高清 | 国产精品日韩久久久久 | 国产精品久久久久久久久久久免费看 | 91免费在线播放 | 91精品在线视频 | 少妇精69xxtheporn| 中文字幕在线观看完整 | 精品在线观看国产 | 西西4444www大胆艺术 | 99精品视频免费看 | 国内精品久久久 | 午夜123| 久久99久久99精品 | 欧美日韩国产在线观看 | 免费观看mv大片高清 | 欧美日韩视频在线播放 | 国产精品久久久久久久久大全 | 精品av网站| 久久国产一区 | 国内精品久久久 | 日韩精品电影在线播放 | 波多野结衣在线观看一区 | 特黄免费av | 成人在线免费看视频 | 激情久久久 | 色五月情 | 精品久久久久久久久中文字幕 | 日韩视频在线观看视频 | 特级西西444www大胆高清无视频 | 久久草视频| 国产传媒中文字幕 | 亚洲人成在线观看 | 久久久久精 | 国产精品综合av一区二区国产馆 | 国产69精品久久app免费版 | 九月婷婷色 | 久久,天天综合 | 在线免费观看国产 | 欧美激精品| 激情五月亚洲 | 国产精品video爽爽爽爽 | 九九99靖品 | 97在线播放视频 | 激情五月综合 | 九九久久影院 | 亚洲成人av电影在线 | 成年人免费看 | 日韩一级电影在线观看 | 天天操天天综合网 | 91视频下载 | 天天曰视频 | 91av国产视频 | 97色狠狠 | 日韩免费高清在线 | 欧美91片 | 亚洲另类久久 | 在线免费观看欧美日韩 | 亚洲欧美日韩一二三区 | 精品一区二区三区久久 | 欧美激情亚洲综合 | 国产高清免费av | 久久夜av | 国产成人精品久久久 | 久久人人爽人人爽人人片av软件 | 色福利网 | 91精品91| 热久久在线视频 | 欧美性黄网官网 | 日韩二区三区在线观看 | av在线超碰 | 四虎影视av | 欧美精品久久久久久久久老牛影院 | 中文字幕人成一区 | 成人av在线影院 | 最近日本字幕mv免费观看在线 | 麻花豆传媒一二三产区 | 日韩在线免费视频观看 | 国产理论免费 | 天天干天天天天 | 日韩在线观看精品 | 狠狠干夜夜操天天爽 | 日韩欧美在线高清 | 欧美日韩一区二区三区视频 | 婷婷色中文 | 欧美性免费 | 久久久精品国产一区二区电影四季 | 精品免费一区二区三区 | 国产色在线 | 成 人 黄 色 视频播放1 | 天天操天天干天天摸 | 国产精品久久久久永久免费观看 | av日韩av | 一级成人网 | 亚洲色图美腿丝袜 | 日韩最新中文字幕 | 精品国产亚洲一区二区麻豆 | 国产 亚洲 欧美 在线 | 嫩模bbw搡bbbb搡bbbb | 欧美一级性生活视频 | 奇米影视8888在线观看大全免费 | 国产精品久久久久永久免费 | 中文字幕免费高清在线观看 | 欧美在线观看禁18 | 色网站在线免费观看 | 97天堂网 | 激情五月婷婷综合 | 久久久久高清毛片一级 | 玖玖在线观看视频 | 福利一区视频 | 免费在线观看不卡av | 麻豆国产视频下载 | 久久免费中文视频 | 美女久久精品 | 午夜av大片 | 欧美日韩在线视频免费 | 日本精品视频在线观看 | 欧美日韩免费在线观看视频 | 国产视频精品视频 | 91精品国产欧美一区二区 | 日韩一二三区不卡 | 国产免费午夜 | 五月婷婷天堂 | 99婷婷狠狠成为人免费视频 | 精品久久久久久久久久 | 波多野结衣一区二区 | 91av在线看 | 国产黄色av影视 | 国产精品久久久久久久久大全 | 在线91视频 | 97视频入口免费观看 | 超碰在线97国产 | 亚洲欧美日韩一二三区 | 在线 国产一区 | 亚洲dvd| 色吧av色av| 国产美女在线观看 | 日韩一三区 | 亚洲午夜小视频 | 九色激情网 | 免费精品久久久 | 欧美极品少妇xbxb性爽爽视频 | 黄色一区三区 | 日本特黄特色aaa大片免费 | 成人黄色中文字幕 | 黄色的网站在线 | 国产美女黄网站免费 | 成人h在线观看 | 成人h视频在线 | 亚洲精色| 免费成人黄色片 | 久草网在线视频 | 黄色av电影一级片 | 99精品影视 | 色噜噜色噜噜 | 国产一区二区电影在线观看 | 精品在线观看一区二区 | 亚洲 欧美 国产 va在线影院 | 91在线日本| 午夜av剧场 | 中文字幕在线观看视频一区二区三区 | 亚洲高清在线精品 | 国产四虎影院 | 亚洲精品乱码久久久久久9色 | 中文字幕大全 | 精品亚洲免费 | 亚洲永久精品在线观看 | 福利片视频区 | 欧美另类性 | 成人福利在线播放 | 337p日本欧洲亚洲大胆裸体艺术 | 在线电影 你懂得 | 国产伦精品一区二区三区在线 | 亚洲综合色激情五月 | 亚洲九九九在线观看 | 九色porny真实丨国产18 | 久久综合偷偷噜噜噜色 | 国产精品乱码久久久久 | 国产精品视频久久久 | 欧美a级片免费看 | 国产精品欧美久久 | 中文字幕日韩电影 | 精品国产乱子伦一区二区 | 日韩激情小视频 | av在线专区 | 97电影网手机版 | 不卡精品 | 最新91在线视频 | 日韩成人av在线 | 黄污视频大全 | 亚洲黄色免费电影 | 在线观看 国产 | 国产青春久久久国产毛片 | 丁香激情五月婷婷 | 欧美黑吊大战白妞欧美 | 国产黄色美女 | 日韩免费观看高清 | 中文久久精品 | 97超碰免费在线观看 | 色91av| 午夜精品久久久99热福利 | 色wwwww| 久草视频中文 | 99精品视频免费看 | 国产日韩精品一区二区三区 | 在线观看av不卡 | 日韩网站中文字幕 | 亚洲黄网址 | 人人玩人人添人人澡97 | 久草在线免费看视频 | 免费久久99精品国产 | 亚洲国产精品电影在线观看 | 在线日韩三级 | 精品视频国产一区 | 狠狠干狠狠艹 | 国产裸体视频bbbbb | 久久影视中文字幕 | 黄色片视频在线观看 | 日韩精品久久久久久久电影竹菊 | 日韩免费电影 |