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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

前端_网页编程 Form表单与模板引擎(中)

發(fā)布時(shí)間:2024/9/27 HTML 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端_网页编程 Form表单与模板引擎(中) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • ... ...
  • (續(xù)上篇)
  • 四、模板引擎的基本概念
    • 1.定義
    • 2. 優(yōu)點(diǎn)
  • 五、art-template模板引擎
    • 1.art-template模板引擎介紹
    • 2. art-template的安裝
    • 3. art-template模板引擎的基本使用
      • 3.1 使用傳統(tǒng)方式渲染UI結(jié)構(gòu)
      • 3.2 art-template的使用步驟
    • 4. art-template語法
      • 4.1 輸出
      • 4.2 原文輸出
      • 4.3 條件輸出
      • 4.4 循環(huán)輸出
      • 4.5 定義變量
      • 4.6 過濾器
      • 4.7 調(diào)試
      • 4.8 模板變量
        • 4.8.1 導(dǎo)入變量
        • 4.8.2 內(nèi)置變量
    • 5 案例 - 新聞列表
      • 5.1 實(shí)現(xiàn)步驟
      • 5.2 實(shí)現(xiàn)過程
        • 5.2.1 獲取新聞數(shù)據(jù)
        • 5.2.2 定義 template 模板
        • 5.2.3 編譯模板
      • 5.3 新聞列表案例完整`js`代碼
    • 6. 模板引擎的實(shí)現(xiàn)原理


… …

(續(xù)上篇)

上一篇:前端_網(wǎng)頁編程 Form表單與模板引擎(上)


四、模板引擎的基本概念

在上一篇中,引申出了模板引擎的概念,這一篇在繼續(xù)介紹模板引擎的相關(guān)知識(shí)和使用前,再次理清它的概念或定義。

1.定義

模板引擎,顧名思義,它可以根據(jù)程序員指定的 模板結(jié)構(gòu)數(shù)據(jù),自動(dòng)生成一個(gè)完整的HTML頁面。

#mermaid-svg-KUQImt47fJjKZCGg .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-KUQImt47fJjKZCGg .label text{fill:#333}#mermaid-svg-KUQImt47fJjKZCGg .node rect,#mermaid-svg-KUQImt47fJjKZCGg .node circle,#mermaid-svg-KUQImt47fJjKZCGg .node ellipse,#mermaid-svg-KUQImt47fJjKZCGg .node polygon,#mermaid-svg-KUQImt47fJjKZCGg .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-KUQImt47fJjKZCGg .node .label{text-align:center;fill:#333}#mermaid-svg-KUQImt47fJjKZCGg .node.clickable{cursor:pointer}#mermaid-svg-KUQImt47fJjKZCGg .arrowheadPath{fill:#333}#mermaid-svg-KUQImt47fJjKZCGg .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-KUQImt47fJjKZCGg .flowchart-link{stroke:#333;fill:none}#mermaid-svg-KUQImt47fJjKZCGg .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-KUQImt47fJjKZCGg .edgeLabel rect{opacity:0.9}#mermaid-svg-KUQImt47fJjKZCGg .edgeLabel span{color:#333}#mermaid-svg-KUQImt47fJjKZCGg .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-KUQImt47fJjKZCGg .cluster text{fill:#333}#mermaid-svg-KUQImt47fJjKZCGg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-KUQImt47fJjKZCGg .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-KUQImt47fJjKZCGg text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-KUQImt47fJjKZCGg .actor-line{stroke:grey}#mermaid-svg-KUQImt47fJjKZCGg .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-KUQImt47fJjKZCGg .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-KUQImt47fJjKZCGg #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-KUQImt47fJjKZCGg .sequenceNumber{fill:#fff}#mermaid-svg-KUQImt47fJjKZCGg #sequencenumber{fill:#333}#mermaid-svg-KUQImt47fJjKZCGg #crosshead path{fill:#333;stroke:#333}#mermaid-svg-KUQImt47fJjKZCGg .messageText{fill:#333;stroke:#333}#mermaid-svg-KUQImt47fJjKZCGg .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-KUQImt47fJjKZCGg .labelText,#mermaid-svg-KUQImt47fJjKZCGg .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-KUQImt47fJjKZCGg .loopText,#mermaid-svg-KUQImt47fJjKZCGg .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-KUQImt47fJjKZCGg .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-KUQImt47fJjKZCGg .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-KUQImt47fJjKZCGg .noteText,#mermaid-svg-KUQImt47fJjKZCGg .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-KUQImt47fJjKZCGg .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-KUQImt47fJjKZCGg .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-KUQImt47fJjKZCGg .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-KUQImt47fJjKZCGg .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KUQImt47fJjKZCGg .section{stroke:none;opacity:0.2}#mermaid-svg-KUQImt47fJjKZCGg .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-KUQImt47fJjKZCGg .section2{fill:#fff400}#mermaid-svg-KUQImt47fJjKZCGg .section1,#mermaid-svg-KUQImt47fJjKZCGg .section3{fill:#fff;opacity:0.2}#mermaid-svg-KUQImt47fJjKZCGg .sectionTitle0{fill:#333}#mermaid-svg-KUQImt47fJjKZCGg .sectionTitle1{fill:#333}#mermaid-svg-KUQImt47fJjKZCGg .sectionTitle2{fill:#333}#mermaid-svg-KUQImt47fJjKZCGg .sectionTitle3{fill:#333}#mermaid-svg-KUQImt47fJjKZCGg .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KUQImt47fJjKZCGg .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-KUQImt47fJjKZCGg .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KUQImt47fJjKZCGg .grid path{stroke-width:0}#mermaid-svg-KUQImt47fJjKZCGg .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-KUQImt47fJjKZCGg .task{stroke-width:2}#mermaid-svg-KUQImt47fJjKZCGg .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KUQImt47fJjKZCGg .taskText:not([font-size]){font-size:11px}#mermaid-svg-KUQImt47fJjKZCGg .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KUQImt47fJjKZCGg .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-KUQImt47fJjKZCGg .task.clickable{cursor:pointer}#mermaid-svg-KUQImt47fJjKZCGg .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-KUQImt47fJjKZCGg .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-KUQImt47fJjKZCGg .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-KUQImt47fJjKZCGg .taskText0,#mermaid-svg-KUQImt47fJjKZCGg .taskText1,#mermaid-svg-KUQImt47fJjKZCGg .taskText2,#mermaid-svg-KUQImt47fJjKZCGg .taskText3{fill:#fff}#mermaid-svg-KUQImt47fJjKZCGg .task0,#mermaid-svg-KUQImt47fJjKZCGg .task1,#mermaid-svg-KUQImt47fJjKZCGg .task2,#mermaid-svg-KUQImt47fJjKZCGg .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-KUQImt47fJjKZCGg .taskTextOutside0,#mermaid-svg-KUQImt47fJjKZCGg .taskTextOutside2{fill:#000}#mermaid-svg-KUQImt47fJjKZCGg .taskTextOutside1,#mermaid-svg-KUQImt47fJjKZCGg .taskTextOutside3{fill:#000}#mermaid-svg-KUQImt47fJjKZCGg .active0,#mermaid-svg-KUQImt47fJjKZCGg .active1,#mermaid-svg-KUQImt47fJjKZCGg .active2,#mermaid-svg-KUQImt47fJjKZCGg .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-KUQImt47fJjKZCGg .activeText0,#mermaid-svg-KUQImt47fJjKZCGg .activeText1,#mermaid-svg-KUQImt47fJjKZCGg .activeText2,#mermaid-svg-KUQImt47fJjKZCGg .activeText3{fill:#000 !important}#mermaid-svg-KUQImt47fJjKZCGg .done0,#mermaid-svg-KUQImt47fJjKZCGg .done1,#mermaid-svg-KUQImt47fJjKZCGg .done2,#mermaid-svg-KUQImt47fJjKZCGg .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-KUQImt47fJjKZCGg .doneText0,#mermaid-svg-KUQImt47fJjKZCGg .doneText1,#mermaid-svg-KUQImt47fJjKZCGg .doneText2,#mermaid-svg-KUQImt47fJjKZCGg .doneText3{fill:#000 !important}#mermaid-svg-KUQImt47fJjKZCGg .crit0,#mermaid-svg-KUQImt47fJjKZCGg .crit1,#mermaid-svg-KUQImt47fJjKZCGg .crit2,#mermaid-svg-KUQImt47fJjKZCGg .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-KUQImt47fJjKZCGg .activeCrit0,#mermaid-svg-KUQImt47fJjKZCGg .activeCrit1,#mermaid-svg-KUQImt47fJjKZCGg .activeCrit2,#mermaid-svg-KUQImt47fJjKZCGg .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-KUQImt47fJjKZCGg .doneCrit0,#mermaid-svg-KUQImt47fJjKZCGg .doneCrit1,#mermaid-svg-KUQImt47fJjKZCGg .doneCrit2,#mermaid-svg-KUQImt47fJjKZCGg .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-KUQImt47fJjKZCGg .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-KUQImt47fJjKZCGg .milestoneText{font-style:italic}#mermaid-svg-KUQImt47fJjKZCGg .doneCritText0,#mermaid-svg-KUQImt47fJjKZCGg .doneCritText1,#mermaid-svg-KUQImt47fJjKZCGg .doneCritText2,#mermaid-svg-KUQImt47fJjKZCGg .doneCritText3{fill:#000 !important}#mermaid-svg-KUQImt47fJjKZCGg .activeCritText0,#mermaid-svg-KUQImt47fJjKZCGg .activeCritText1,#mermaid-svg-KUQImt47fJjKZCGg .activeCritText2,#mermaid-svg-KUQImt47fJjKZCGg .activeCritText3{fill:#000 !important}#mermaid-svg-KUQImt47fJjKZCGg .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KUQImt47fJjKZCGg g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-KUQImt47fJjKZCGg g.classGroup text .title{font-weight:bolder}#mermaid-svg-KUQImt47fJjKZCGg g.clickable{cursor:pointer}#mermaid-svg-KUQImt47fJjKZCGg g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-KUQImt47fJjKZCGg g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-KUQImt47fJjKZCGg .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-KUQImt47fJjKZCGg .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-KUQImt47fJjKZCGg .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-KUQImt47fJjKZCGg .dashed-line{stroke-dasharray:3}#mermaid-svg-KUQImt47fJjKZCGg #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-KUQImt47fJjKZCGg #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-KUQImt47fJjKZCGg #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-KUQImt47fJjKZCGg #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-KUQImt47fJjKZCGg #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-KUQImt47fJjKZCGg #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-KUQImt47fJjKZCGg #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-KUQImt47fJjKZCGg #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-KUQImt47fJjKZCGg .commit-id,#mermaid-svg-KUQImt47fJjKZCGg .commit-msg,#mermaid-svg-KUQImt47fJjKZCGg .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KUQImt47fJjKZCGg .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KUQImt47fJjKZCGg .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KUQImt47fJjKZCGg g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KUQImt47fJjKZCGg g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-KUQImt47fJjKZCGg g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-KUQImt47fJjKZCGg g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-KUQImt47fJjKZCGg g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-KUQImt47fJjKZCGg g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-KUQImt47fJjKZCGg .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-KUQImt47fJjKZCGg .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-KUQImt47fJjKZCGg .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-KUQImt47fJjKZCGg .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-KUQImt47fJjKZCGg .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-KUQImt47fJjKZCGg .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-KUQImt47fJjKZCGg .edgeLabel text{fill:#333}#mermaid-svg-KUQImt47fJjKZCGg .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-KUQImt47fJjKZCGg .node circle.state-start{fill:black;stroke:black}#mermaid-svg-KUQImt47fJjKZCGg .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-KUQImt47fJjKZCGg #statediagram-barbEnd{fill:#9370db}#mermaid-svg-KUQImt47fJjKZCGg .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-KUQImt47fJjKZCGg .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-KUQImt47fJjKZCGg .statediagram-state .divider{stroke:#9370db}#mermaid-svg-KUQImt47fJjKZCGg .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-KUQImt47fJjKZCGg .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-KUQImt47fJjKZCGg .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-KUQImt47fJjKZCGg .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-KUQImt47fJjKZCGg .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-KUQImt47fJjKZCGg .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-KUQImt47fJjKZCGg .note-edge{stroke-dasharray:5}#mermaid-svg-KUQImt47fJjKZCGg .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-KUQImt47fJjKZCGg .error-icon{fill:#522}#mermaid-svg-KUQImt47fJjKZCGg .error-text{fill:#522;stroke:#522}#mermaid-svg-KUQImt47fJjKZCGg .edge-thickness-normal{stroke-width:2px}#mermaid-svg-KUQImt47fJjKZCGg .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-KUQImt47fJjKZCGg .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-KUQImt47fJjKZCGg .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-KUQImt47fJjKZCGg .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-KUQImt47fJjKZCGg .marker{fill:#333}#mermaid-svg-KUQImt47fJjKZCGg .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-KUQImt47fJjKZCGg {color: rgba(0, 0, 0, 0.75);font: ;}數(shù) 據(jù)模板結(jié)構(gòu)模板引擎HTML頁面

2. 優(yōu)點(diǎn)

  • 減少了字符串的拼接操作
  • 使代碼結(jié)構(gòu)更清晰
  • 使代碼更易于閱讀與維護(hù)
  • 五、art-template模板引擎

    1.art-template模板引擎介紹

    art-template 是一個(gè)簡約、超快的模板引擎。中文官網(wǎng)首頁為 http://aui.github.io/art-template/zh-cn/docs/installation.html

    art-template 采用作用域預(yù)聲明的技術(shù)來優(yōu)化模板渲染速度,從而獲得接近 JavaScript 極限的運(yùn)行性能,并且同時(shí)支持 NodeJS 和瀏覽器。

    常用模板引擎執(zhí)行效率圖示:

    2. art-template的安裝

    在瀏覽器訪問 http://aui.github.io/art-template/zh-cn/docs/installation.html 頁面,在【在瀏覽器中編譯】板塊中,找到下載鏈接并鼠標(biāo)右鍵,選擇“鏈接另存為”,將 art-template 下載到本地,然后,通過 < script> 標(biāo)簽加載到網(wǎng)頁上進(jìn)行使用。

    示圖:

    安裝方法:

    通過 < script> 標(biāo)簽加載到網(wǎng)頁上進(jìn)行使用

    3. art-template模板引擎的基本使用

    <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!--1、 引入模板引擎 --><script src="./lib/template-web.js"></script> </head>

    3.1 使用傳統(tǒng)方式渲染UI結(jié)構(gòu)

    效果圖_使用傳統(tǒng)方式渲染UI結(jié)構(gòu)

    傳統(tǒng)方式渲染的完整代碼

    HTML:

    <div id="title"></div><div>姓名:<span id="name"></span></div><div>年齡:<span id="age"></span></div><div>會(huì)員:<span id="isVIP"></span></div><div>注冊(cè)時(shí)間:<span id="regTime"></span></div><div style="margin-top:10px;">愛好:<ul id="hobby"><li>愛好1</li><li>愛好2</li></ul></div> </div>

    js代碼

    <script>var data = {title: '<h3>用戶信息</h3>',name: '張三瘋',age: 200,isVIP: true,regTime: new Date(),hobby: ['唱歌', '跳舞', '學(xué)前端']}// 立即執(zhí)行函數(shù)$(function() {$('#name').html(data.name)$('#title').html(data.title)$('#age').html(data.age)$('#isVIP').html(data.isVIP)$('#regTime').html(data.regTime)var rows =[] // 聲明一個(gè)空數(shù)組用于存放獲取的字符串。$.each(data.hobby, function(i, item) {rows.push('<li>' + item + '</li>')})$('#hobby').html(rows.join(''))})</script>

    3.2 art-template的使用步驟

    <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!--1、 引入模板引擎 --><script src="./lib/template-web.js"></script><script src="./lib/jquery.js"></script> </head> <body><div id="container"></div><!-- 3、定義模板 --><!-- 3.1 模板的HTML結(jié)構(gòu) ,必須定義到script中 --><script type="text/html" id="tpl-user"><h1>{{name}}-- {{age}}</h1></script><script>// 2、定義需要渲染的數(shù)據(jù)var data = {name: '張三瘋',age: 200}// 4、調(diào)用template函數(shù)var htmlstr = template('tpl-user', data)// 渲染HTML結(jié)構(gòu)$('#container').html(htmlstr)</script> </body>
  • 導(dǎo)入art-template;
  • 定義數(shù)據(jù);
  • 定義模板;
  • 調(diào)用template函數(shù);
  • 渲染HTML結(jié)構(gòu)。
  • 4. art-template語法

    art-template 支持標(biāo)準(zhǔn)語法原始語法。標(biāo)準(zhǔn)語法可以讓模板易讀寫,而原始語法擁有強(qiáng)大的邏輯表達(dá)能力。

    標(biāo)準(zhǔn)語法支持基本模板語法以及基本 JavaScript 表達(dá)式;原始語法支持任意 JavaScript 語句。

    art-template 提供了 {{ }} 這種語法格式,在 {{ }} 內(nèi)可以進(jìn)行 變量輸出,或 循環(huán)數(shù)組 等操作,這種 {{ }} 語法在 art-template 中被稱為標(biāo)準(zhǔn)語法

    原理:如果想要把數(shù)據(jù)填充到模板里,先通過雙花括號(hào)來放一個(gè)占位符,將來只要調(diào)用template函數(shù),雙花括號(hào)所在的位置就會(huì)自動(dòng)替換為真實(shí)的數(shù)據(jù)。這種雙花括號(hào){{}},在art-tmplate中叫做 標(biāo)準(zhǔn)語法

    {{}}雙花括號(hào)除了代表 占位符 外,還可以做一些其它復(fù)雜的操作:

    4.1 輸出

    1)標(biāo)準(zhǔn)語法 - 輸出:

    {{value}} {{data.key}} {{data['key']}} {{a ? b : c}} {{a || b}} {{a + b}}

    2)原始語法 - 輸出:

    <%= value %> <%= data.key %> <%= data['key'] %> <%= a ? b : c %> <%= a || b %> <%= a + b %>

    4.2 原文輸出

    1)標(biāo)準(zhǔn)語法 - 原文輸出:

    {{@ value}}

    只要在表達(dá)式之前,加了“@”,就表示原文輸出
    如果要輸出的 value 值中,包含了 HTML 標(biāo)簽結(jié)構(gòu),則需要使用原文輸出 語法,才能保證 HTML 標(biāo)簽被正常渲染。

    標(biāo)準(zhǔn)語法-原文輸出示例:

    // 定義需要渲染的數(shù)據(jù)var data = {name: '張三瘋',age: 20,text: '<h3> 測(cè)試原文輸出 </h3>'} <script type="text/html" id="tpl-user"><h1>{{name}}-- {{age}}</h1>{{@ text}}</script>

    (注:@與表達(dá)式之間有個(gè)空格不要漏掉)

    2)原始語法 - 原文輸出:

    <%- value %>

    4.3 條件輸出

    1)標(biāo)準(zhǔn)語法 - 條件輸出:
    如果要實(shí)現(xiàn)條件輸出,則可以在 {{ }} 中使用 ifelse if … /if 的方式,進(jìn)行按需輸出。

    <!--if 判斷 --> {{if value}} 按需輸出的內(nèi)容 {{/if}} <!-- if ... else ... 判斷 --> {{if v1}} 按需輸出的內(nèi)容 {{else if v2}} 按需輸出的內(nèi)容 {{/if}}

    第1個(gè)if代表?xiàng)l件輸出的開始,/if代表?xiàng)l件輸出的結(jié)束。

    2)原始語法 - 條件輸出:

    <!--if 判斷 --> <% if (value) { %>按需輸出的內(nèi)容 <% } %> <!-- if ... else ... 判斷 --> <% if (v1) { %>按需輸出的內(nèi)容 <% else if (v2) { %>按需輸出的內(nèi)容 <% } %>

    4.4 循環(huán)輸出

    1)標(biāo)準(zhǔn)語法 - 循環(huán)輸出:
    如果要實(shí)現(xiàn)循環(huán)輸出,則可以在 {{}} 內(nèi),通過 each 語法循環(huán)數(shù)組,當(dāng)前循環(huán)的索引使用 $index 進(jìn)行訪問,當(dāng)前的循環(huán)項(xiàng)使用 & value 進(jìn)行訪問。

    {{each arr}}{{$index}} {{$value}} {{/each}}

    {{ }} 語法中,可以進(jìn)行變量的輸出、對(duì)象屬性的輸出、三元表達(dá)式輸出、邏輯或輸出、加減乘除等表達(dá)。

    標(biāo)準(zhǔn)語法-循環(huán)輸出示例:

    <div id="container"></div><!-- 3、定義模板 --><!-- 3.1 模板的HTML結(jié)構(gòu) ,必須定義到script中 --><script type="text/html" id="tpl-user"><h1>{{name}}-- {{age}}</h1>{{@ text}}<ul>{{each hobby}}<li>索引{{$index}},item:{{$value}}</li>{{/each}}</ul></script> <script>// 2、定義需要渲染的數(shù)據(jù)var data = {name: '張三瘋',age: 20,text: '<h3> 測(cè)試原文輸出 </h3>',hobby: ['吃飯', '睡覺', '寫代碼']}// 4、調(diào)用template函數(shù)var htmlstr = template('tpl-user', data)// 渲染HTML結(jié)構(gòu)$('#container').html(htmlstr)</script>

    頁面渲染效果:

    2)原始語法 - 循環(huán)輸出:

    <% for (var i = 0; i < arr.length; i++) { %> <%= i %> <% = arr[i] %> <% } %>

    代碼中,arr是目標(biāo)數(shù)組,each是數(shù)組遍歷,$index 是數(shù)組下標(biāo), $value是數(shù)組的值。

    注: arr 支持 array 與object 的迭代,其默認(rèn)值為 $data。

    4.5 定義變量

    1)標(biāo)準(zhǔn)語法:

    {{set temp = data.sub.content}}

    2)原始語法:

    <% var temp = data.sub.content %>

    4.6 過濾器

    過濾器的本質(zhì),就是一個(gè)function處理函數(shù)。

    1)標(biāo)準(zhǔn)語法 - 過濾器:

    {{value | filterName}}

    語法注解】:“|”代表調(diào)用某個(gè)函數(shù)(也叫管道符)。把value當(dāng)做參數(shù),通過管道符,傳遞給后的函數(shù)filterName。

    過濾器語法類似 管道操作符,它的上一個(gè)輸出作為下一個(gè)輸入。
    定義過濾器的基本語法如下:

    template.defaults.imports.filterName = function(value){/*return處理的結(jié)果*/}

    注意:調(diào)用函數(shù)時(shí),函數(shù)名要與這里實(shí)際的filterName名稱一致。最后必須return出去值,供后面的雙花括號(hào){{}}渲染使用。

    2)示例:

    <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- 引入 template-web.js --><script src="./lib/template-web.js"></script> </head><body><div class="container"></div><script type="text/html" id="filterTpl"><!-- 標(biāo)準(zhǔn)語法 --><h3>{{date | dateformat 'YYYy-mM-dd' | addQuotationMarks}}</h3><!-- 原始語法 --><h3><%= $imports.addQuotationMarks($imports.dateformat(date)) %></h3></script>

    ① 定義一個(gè)格式化時(shí)間的過濾器 dateFormat, 如下:

    <script>var data = {date: Date.now(),}template.defaults.imports.dateFormat = function(date,format) {if (!format || format.toLowerCase() === 'yyyy-mm-dd') {var dt = new Date(date);var y = dt.getFullYear();// 月份是從0開始的,所以這里 +1var m = (dt.getMonth() + 1).toString().padStart(2, '0');var d = dt.getDate().toString().padStart(2, '0');// 注意,過濾器最后一定要 return 一個(gè)值return `${y}-${m}-${d}`; } else {return 'invalid date';}}

    ② 定義一個(gè)給字符串加引號(hào)過濾器 addQuotationMarks,如下:

    // 定義給字符串加引號(hào)過濾器 addQuotationMarks 方法:template.defaults.imports.addQuotationMarks = function (str) {return `"${str}"`;}

    注:

    {{date | format 'YYYy-mM-dd' | addQuotationMarks}}

    date 默認(rèn)為 format 過濾器(方法)的第一個(gè)參數(shù), 'YYYy-mM-dd' 才是format 過濾器的第二個(gè)參數(shù),date 經(jīng)過 format 過濾器過濾后,得到的結(jié)果又作為 addQuotationMarks 過濾器的默認(rèn)參數(shù),如果有更多的過濾器,那么就把前一層過濾器過濾的結(jié)果,作為下一個(gè)過濾器的參數(shù)一層層過濾下去。

    3)渲染模板和數(shù)據(jù):

    // 調(diào)用 template 方法,渲染模板和數(shù)據(jù)var html = template('filterTpl', data);document.querySelector('.container').innerHTML = html;

    過濾器 - 完整案例代碼:

    <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- 引入 template-web.js --><script src="./lib/template-web.js"></script> </head><body><div class="container"></div><script type="text/html" id="filterTpl"><!-- 標(biāo)準(zhǔn)語法 --><h3>{{date | dateformat 'YYYy-mM-dd' | addQuotationMarks}}</h3><!-- 原始語法 --><h3><%= $imports.addQuotationMarks($imports.dateformat(date)) %></h3></script><script>var data = {date: Date.now(),}// 定義日期格式化過濾器 format 方法:template.defaults.imports.dateformat = function(date, format) {if (!format || format.toLowerCase() === 'yyyy-mm-dd') {var dt = new Date(date);var y = dt.getFullYear();var m = (dt.getMonth() + 1).toString().padStart(2, '0');var d = dt.getDate().toString().padStart(2, '0');// 注意,過濾器最后一定要 return 一個(gè)值:// return `${y}-${m}-$ozvdkddzhkzd`; 或下面這種寫法return y + '-' + m + '-' + d} else {return '無效的日期!';}}// 定義給字符串加引號(hào)過濾器 addQuotationMarks 方法:template.defaults.imports.addQuotationMarks = function(str) {return `"${str}"`;}// 調(diào)用 template 方法,渲染模板和數(shù)據(jù)var html = template('filterTpl', data);document.querySelector('.container').innerHTML = html;</script> </body></html>

    4.7 調(diào)試

    template.defaults.debug

    art-template 內(nèi)建調(diào)試器,能夠捕獲到語法與運(yùn)行錯(cuò)誤,并且支持自定義的語法。在 NodeJS 中調(diào)試模式會(huì)根據(jù)環(huán)境變量自動(dòng)開啟:process.env.NODE_ENV !== 'production',設(shè)置 template.defaults.debug=true 后,等同于:

    {"cache": false,"minimize": false,"compileDebug": true }

    4.8 模板變量

    template.defaults.imports

    模板通過 $imports 可以訪問到模板外部的全局變量導(dǎo)入的變量

    4.8.1 導(dǎo)入變量

    1)標(biāo)準(zhǔn)語法:

    template.defaults.imports.log = console.log;

    2)原始語法:

    <% $imports.log('Hello, template.defaults.imports.log') %>;

    3)示例代碼:

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- 引入 template-web.js --><script src="./lib/template-web.js"></script> </head><body><div class="container"></div><script type="text/html" id="importsTpl"><% $imports.log('Hello, template.defaults.imports.log') %><%= $imports.date %></script><script>var data = {};template.defaults.imports.log = console.log;template.defaults.imports.date = new Date();template.defaults.debug = true;var html = template('importsTpl', data);document.querySelector('.container').innerHTML = html;</script> </body> </html>

    4.8.2 內(nèi)置變量

    變量清單

    變量名描述
    $data傳入模板的數(shù)據(jù)
    print字符串輸出函數(shù)
    include子模板載入函數(shù)
    extend模板繼承模板導(dǎo)入函數(shù)
    block模板塊生命函數(shù)

    5 案例 - 新聞列表

    5.1 實(shí)現(xiàn)步驟

  • 獲取新聞數(shù)據(jù);
  • 定義 template 模板;
  • 編譯模板;
  • 定義時(shí)間過濾器;
  • 定義補(bǔ)零函數(shù)。
  • 本案例素材:https://pan.baidu.com/s/1VDaCu6MgoLMLGucNy7Mqkw
    提取碼:sm5a

    素材中,HTML結(jié)構(gòu)、CSS樣式代碼已具備,只需要寫js實(shí)現(xiàn)代碼。

    5.2 實(shí)現(xiàn)過程

    5.2.1 獲取新聞數(shù)據(jù)

  • 在素材的 js 文件中,新建news.js并引入到HTML頁面中。
  • <script src="./js/news.js"></script>
  • 書寫 news.js 代碼
  • $(function() { // jQurey入口函數(shù)// 發(fā)起請(qǐng)求獲取新聞列表數(shù)據(jù)的函數(shù)function getNewsList() {$.get('http://www.liulongbin.top:3006/api/news', function(res) {// res接收服務(wù)器響應(yīng)回來的結(jié)果if (res.status !== 200) return alert('新聞列表獲取失敗!');console.log(res.data); // 打印獲取到的數(shù)據(jù)});};// 調(diào)用請(qǐng)求函數(shù)getNewsList()})

    console.log獲取到的數(shù)據(jù)如下:

    5.2.2 定義 template 模板

    1)定義模板的步驟:

  • 要?jiǎng)?chuàng)建 < script>標(biāo)簽;
  • 給這個(gè)標(biāo)簽指定type屬性(type="text/html");
  • 在< script >標(biāo)簽內(nèi)部填充一些HTML的模板結(jié)構(gòu)。
  • 2)定義模板
    在HTML中的< /body>標(biāo)簽結(jié)束之前定義模板:

  • 將 < div class="news-item"> ... < /div>這部分全部剪切,粘貼到上一步建好的模板< script type="text/html"> < /script>內(nèi)。
  • <!-- 定義模板 --><script type="text/html"><div class="news-item"><img class="thumb" src="" alt="" /><div class="right-box"><h1 class="title">5G商用在即,三大運(yùn)營商營收持續(xù)下降</h1><div class="tags"><span>三大運(yùn)營商</span><span>中國移動(dòng)</span><span>5G商用</span></div><div class="footer"><div><span>胡潤百富</span>&nbsp;&nbsp;<span>2019-10-28 10:14:38</span></div><span>評(píng)論數(shù):66</span></div></div></div></script>

    定義好模板,接下來要做的就是編譯模板。

    5.2.3 編譯模板

  • 給模板添加 id(值為"tpl-news")。
  • <script type="text/html" id="tpl-news"><!--... ...--> </script>
  • 在news.js中,調(diào)用template函數(shù)并將返回的字符串,賦值給變量htmlstr。
  • var htmlstr = template('tpl-news', res);

    然后將得到的數(shù)據(jù)填充到< div id="news-list"> < /div>的內(nèi)部。

    $(function() {// 發(fā)起請(qǐng)求獲取新聞列表數(shù)據(jù)的函數(shù)function getNewsList() {$.get('http://www.liulongbin.top:3006/api/news', function(res) {// res接收服務(wù)器響應(yīng)回來的結(jié)果if (res.status !== 200) return alert('新聞列表獲取失敗!');var htmlstr = template('tpl-news', res);// DOM操作$('#news-list').html(htmlstr)});};getNewsList() })

    運(yùn)行效果如圖:

    由前面5.2.1中用console.log在控制臺(tái)輸出的數(shù)據(jù)可知,新聞?dòng)?條數(shù)據(jù),而這里只渲染了1條。

    原因:
    因?yàn)殡m然把數(shù)據(jù)傳到模板里了,但是我們并沒有拿到數(shù)據(jù)去進(jìn)行循環(huán)渲染。所以接下來重點(diǎn)是放在模板內(nèi)部

    思路:

  • 首先,要看下能否拿到傳過來的data數(shù)據(jù);
    驗(yàn)證方法: 在模板內(nèi)部寫上標(biāo)準(zhǔn)語法雙花括號(hào){{data.length}},運(yùn)行后,在頁面正確的顯示data數(shù)組的長度為9。這就說明新聞列表數(shù)據(jù)能夠被訪問到。
  • 用each循環(huán)創(chuàng)建新聞的item項(xiàng)。
  • {{each,data}}{{/each}}

    將模板除< script>標(biāo)簽外,全部放到 each循環(huán)內(nèi),并完善圖片img的src屬性:

    完善前:

    <img class="thumb" src="" alt="" />

    完善后 :

    <img class="thumb" src="{{'http://www.liulongbin.top:3006'+ $value.img}}" alt="" />

    由接口文檔可知,data返回值中的img的地址示例"img": "/images/0.webp"是不完整的,因此模板中加上了它的根路徑。

  • 標(biāo)簽的處理
    接口文檔中,標(biāo)簽的返回結(jié)果,是一個(gè)字符串"tags": "三大運(yùn)營商,中國移動(dòng),5G商用",渲染每個(gè)標(biāo)簽,是要拿到標(biāo)簽的數(shù)組,因此,在渲染前需要將字符串改造成數(shù)組(split函數(shù)):
  • // 把每項(xiàng)的tags屬性,從字符串改為數(shù)組for (var i = 0; i < res.data.length; i++) {res.data[i].tags = res.data[i].tags.split(',')}console.log(res);

    控制臺(tái)輸出結(jié)果如下,可見每項(xiàng)的tags都變成了長度為3的一個(gè)數(shù)組。

  • 有了tags數(shù)組后,就可以在每一個(gè)新聞的item項(xiàng)里,再寫一個(gè)子循環(huán),循環(huán)tags屬性。每循環(huán)一次就創(chuàng)建一個(gè)標(biāo)簽。
    具體實(shí)現(xiàn)如下:
  • 1) 改造HTML文件中的結(jié)構(gòu)代碼:

    對(duì)HTML頁面中寫死的部分進(jìn)行改造。

    改造前:

    <div class="tags"><span>三大運(yùn)營商</span><span>中國移動(dòng)</span><span>5G商用</span></div>

    改造后:

    <div class="tags">{{each $value.tags}}<span>{{$value}}</span> {{/each}}</div>

    注意: < span>標(biāo)簽中的$ value和each循環(huán)中的$ value不一樣,后者是表示當(dāng)前新聞的信息,循環(huán)的是當(dāng)前新聞的這個(gè)$value.tags數(shù)組;每循環(huán)一次,拿到的項(xiàng),就是< span> 中的$value。

    再分別替換信息來源、日期,改造后的代碼如下:

    <!-- 定義模板 --><script type="text/html" id="tpl-news">{{each data}}<div class="news-item"><img class="thumb" src="{{'http://www.liulongbin.top:3006'+$value.img}}" alt="" /><div class="right-box"><h1 class="title">{{$value.title}}</h1><div class="tags">{{each $value.tags}}<span>{{$value}}</span>{{/each}}</div><div class="footer"><div><span>{{$value.source}}</span>&nbsp;&nbsp;<span>{{$value.time}}</span></div><span>評(píng)論數(shù):{{$value.cmtcount}}</span></div></div></div>{{/each}}</script>

    至此,基本結(jié)構(gòu)已完成。剩下時(shí)間格式美化,定義時(shí)間過濾器補(bǔ)零函數(shù)

    2)美化新聞列表中的時(shí)間格式

    ① 編寫時(shí)間過濾器 dateFormat:

    // 定義格式化時(shí)間過濾器 template.defaults.imports.dateFormat = function(dtstr) {var dt = new Date(dtstr);var y = dt.getFullYear();var m = dt.getMonth() + 1;var d = dt.getDate();var hh = dt.getHours();var mm = dt.getMinutes();var ss = dt.getSeconds();return y + '-' + m + '-' + d + ' ' + hh + ':' + mm + ':' + ss}

    調(diào)用過濾器

    <div class="footer"><div><span>{{$value.source}}</span>&nbsp;&nbsp;<span>{{$value.time | dateFormat}}</span> // 調(diào)用過濾器</div><span>評(píng)論數(shù):{{$value.cmtcount}}</span> </div>

    渲染后的效果:

    因此,我們是再次對(duì)時(shí)間進(jìn)行處理,即補(bǔ)零。

    ② 補(bǔ)零函數(shù)

    // 時(shí)間補(bǔ)零函數(shù)function padZero(n) {if (n < 10) {return '0' + n;} else {return n;}}

    然后再在時(shí)間過濾器當(dāng)中調(diào)用padZero函數(shù):

    template.defaults.imports.dateFormat = function(dtstr) {var dt = new Date(dtstr);var y = dt.getFullYear();var m = padZero(dt.getMonth() + 1);var d = padZero(dt.getDate());var hh = padZero(dt.getHours());var mm = padZero(dt.getMinutes());var ss = padZero(dt.getSeconds());return y + '-' + m + '-' + d + ' ' + hh + ':' + mm + ':' + ss}

    5.3 新聞列表案例完整js代碼

    $(function() {// 時(shí)間補(bǔ)零函數(shù)function padZero(n) {if (n < 10) {return '0' + n;} else {return n;}}// 定義格式化時(shí)間的過濾器template.defaults.imports.dateFormat = function(dtstr) {var dt = new Date(dtstr);var y = dt.getFullYear();var m = padZero(dt.getMonth() + 1);var d = padZero(dt.getDate());var hh = padZero(dt.getHours());var mm = padZero(dt.getMinutes());var ss = padZero(dt.getSeconds());return y + '-' + m + '-' + d + ' ' + hh + ':' + mm + ':' + ss}// 發(fā)起請(qǐng)求獲取新聞列表數(shù)據(jù)的函數(shù)function getNewsList() {$.get('http://www.liulongbin.top:3006/api/news', function(res) {// res接收服務(wù)器響應(yīng)回來的結(jié)果if (res.status !== 200) return alert('新聞列表獲取失敗!');// 把每項(xiàng)的tags屬性,從字符串改為數(shù)組for (var i = 0; i < res.data.length; i++) {res.data[i].tags = res.data[i].tags.split(',')}console.log(res);var htmlstr = template('tpl-news', res);// DOM操作$('#news-list').html(htmlstr)});};getNewsList() })

    6. 模板引擎的實(shí)現(xiàn)原理

    ( 轉(zhuǎn)下一篇 )


    上一篇:前端_網(wǎng)頁編程 Form表單與模板引擎(上)

    下一篇:前端_網(wǎng)頁編程 Form表單與模板引擎(下)

    總結(jié)

    以上是生活随笔為你收集整理的前端_网页编程 Form表单与模板引擎(中)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    中文字幕在线观看免费高清完整版 | 欧美日韩国产在线 | 久久艹久久 | 国产视频不卡一区 | 久久精品男人的天堂 | 99欧美精品 | 日韩 在线a | 久久久免费观看完整版 | 国产高清在线视频 | 国产成人精品女人久久久 | 狠狠干成人综合网 | 亚洲成人家庭影院 | 一区二区观看 | 色综合天天综合网国产成人网 | 成人a级大片 | 中文字幕高清有码 | 久操视频在线播放 | 久久视频在线看 | 久久综合九色综合久久久精品综合 | 免费网站v | 国产老太婆免费交性大片 | 久草在线视频免费资源观看 | 免费看污片 | 国产精品人成电影在线观看 | 丁香六月在线观看 | 在线黄色免费av | 日韩av一区在线观看 | 夜色成人网 | 国产美女视频一区 | 久久香蕉国产精品麻豆粉嫩av | 91视频久久久久久 | 天天色综合三 | 又长又大又黑又粗欧美 | 91久久久久久久一区二区 | 九九免费观看视频 | 91精品啪| 天天干天天干天天操 | 人人超碰免费 | av成年人电影 | 久久综合亚洲鲁鲁五月久久 | 中文字幕成人在线 | 国产乱对白刺激视频不卡 | 久草在线欧美 | 久久国产亚洲视频 | 黄色软件在线观看视频 | 在线观看岛国 | 国产不卡在线观看 | 成年人国产在线观看 | 开心激情网五月天 | 久久91久久久久麻豆精品 | 欧美激情精品久久久久久免费印度 | www.狠狠操.com | 成人免费色 | 色婷婷一区 | 国产1区2区3区精品美女 | 97超碰在线久草超碰在线观看 | 久久少妇免费视频 | 亚洲国产中文字幕在线视频综合 | 黄网在线免费观看 | 国产区在线看 | 精品国产网址 | 亚洲一区二区精品在线 | 九九久久影视 | 日本在线精品视频 | 伊人影院得得 | 国产精品观看视频 | 伊人久操 | 国产精品入口a级 | 狠狠操.com | 国产精品久久久久久久久久免费 | 婷婷综合导航 | 欧美日韩国产精品一区二区三区 | 久久久www成人免费精品 | 国产高清日韩欧美 | 99色| 国偷自产视频一区二区久 | 婷婷色综合 | 在线观看视频精品 | 97国产一区 | 日韩三区在线 | 天天操天天操天天操天天操天天操天天操 | 国产福利午夜 | 国产精品自产拍在线观看中文 | 91在线最新| 亚洲美女在线国产 | 国产69久久精品成人看 | 日本xxxx.com | 亚洲理论电影网 | 欧美一区影院 | 免费激情在线电影 | 天堂网av 在线 | 国产成人免费精品 | 中文视频在线 | 91精彩在线视频 | 在线中文字幕播放 | 看av免费| 国产码电影 | 国产精品女视频 | 午夜在线免费观看 | 国产香蕉97碰碰久久人人 | av线上免费观看 | 欧美人zozo| 在线观看视频免费播放 | 欧美日韩伦理在线 | 亚洲免费成人av电影 | 国产精品视频永久免费播放 | a天堂在线看| av日韩av | 亚洲精品视频在线观看免费视频 | 日本性生活免费看 | 色综合久久中文综合久久牛 | 国产免费av一区二区三区 | 日韩中文字幕亚洲一区二区va在线 | 久久在线 | 91精品视频在线 | 超碰.com| 99视频播放 | 中文字幕中文字幕在线一区 | 激情视频免费在线 | 国产亚洲字幕 | 在线电影播放 | 在线看岛国av | 日日躁夜夜躁xxxxaaaa | 久久国产精彩视频 | 免费av视屏 | 欧美整片sss | 亚洲综合涩 | 亚洲成成品网站 | 日本韩国在线不卡 | 国产精品久久久久三级 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 91视频88av | 免费观看xxxx9999片 | 国内视频在线观看 | 日本少妇久久久 | 日韩午夜电影网 | 午夜精品三区 | 免费在线成人 | 国产一区二区日本 | 亚洲91中文字幕无线码三区 | 五月婷婷免费 | 亚洲视频在线视频 | 又黄又刺激 | 亚洲婷婷在线 | 超碰99在线 | 欧美精品久久久久久久久久丰满 | 狠狠躁天天躁 | 亚洲 欧美 日韩 综合 | 27xxoo无遮挡动态视频 | 免费看短 | 欧美日韩在线免费观看 | 日韩专区在线播放 | 探花视频在线观看免费 | 91精品网站 | 午夜视频在线观看一区二区 | 日韩免费不卡av | 国产黄网在线 | 欧美亚洲另类在线视频 | 99在线观看视频网站 | 久久精品视频免费观看 | 97超碰超碰久久福利超碰 | 亚洲国产一区二区精品专区 | 丁香激情五月婷婷 | 成人影音在线 | 欧美日韩另类视频 | 天天操网站 | 中文字幕在线第一页 | 天天操天天弄 | 亚洲成人中文在线 | 国产香蕉av | 国产成人61精品免费看片 | 日韩免费在线视频观看 | 欧美乱大交 | 国产精品美女久久久久久 | 狠狠操狠狠操 | 有码中文字幕在线观看 | 国产aaa大片| 在线成人国产 | 久久精品中文视频 | 国内久久看 | 久久婷综合 | 99国产精品久久久久久久久久 | 在线观看中文字幕一区 | 日韩免费在线 | 在线最新av | 国产xx在线 | 伊人天天狠天天添日日拍 | 久久综合九色综合久99 | 91尤物国产尤物福利在线播放 | 日本黄区免费视频观看 | 天天摸夜夜操 | 久久久久综合精品福利啪啪 | 五月婷婷一区二区三区 | 二区精品视频 | 青青河边草观看完整版高清 | 日本福利视频在线 | 高清视频一区 | 五月激情婷婷丁香 | 亚洲视频久久久久 | 亚洲欧洲一区二区在线观看 | 日韩亚洲在线视频 | 成人三级黄色 | 久久精选 | 精品一区二区影视 | 国产在线国产 | 高清视频一区 | 在线播放 一区 | 日韩天天操 | 欧美在线视频一区二区 | 免费成人黄色 | 久久久久久久久久久网 | 99免费国产 | 夜夜躁日日躁狠狠久久88av | 黄色福利网 | 国产一区在线免费观看 | 欧美另类成人 | 国产精品一区二区免费 | 国产丝袜在线 | av黄色大片 | 国产欧美精品一区二区三区 | 国产精品理论片 | 在线视频观看亚洲 | 黄色小说在线免费观看 | 国产色在线视频 | 在线观看视频97 | 最近更新的中文字幕 | 国产精品一区二区视频 | 99免费观看视频 | 青草草在线 | 欧美一级欧美一级 | 91视频免费视频 | 久久久国产视频 | 就色干综合 | 夜夜骑天天操 | 国产精品久久久久久久久久久不卡 | 国产精品成人一区 | 国产精品久久99综合免费观看尤物 | 99视频免费 | 国际精品久久 | 91激情视频在线 | 看片黄网站 | 丁香婷婷激情国产高清秒播 | 亚洲第一区在线播放 | 亚洲97在线| 久久国产午夜精品理论片最新版本 | 激情喷水 | 免费av在线播放 | 特级黄录像视频 | 免费观看性生交大片3 | 久久一级片 | 韩国av免费观看 | 日韩中文三级 | 国产精品网站一区二区三区 | 日本精品久久久久中文字幕5 | 九九久久影院 | 九九在线视频 | 久草香蕉在线视频 | 黄www在线观看 | 999热线在线观看 | 精品五月天| 在线观看视频福利 | 国产视频亚洲精品 | 中文字幕国语官网在线视频 | 九九九九九精品 | 久久久久久国产精品久久 | 一区二区三区免费在线观看视频 | 国产成人一二片 | 亚洲精品午夜一区人人爽 | 在线免费高清一区二区三区 | 在线亚洲观看 | 久青草影院 | 国产午夜三级一二三区 | 五月婷婷六月丁香激情 | 国内精品久久久久久久久 | 亚洲精品系列 | 日本中文字幕网址 | 99久久精品久久亚洲精品 | 日韩精品一区二区三区在线视频 | 国产视频一区二区在线播放 | 蜜桃av观看| 欧洲亚洲女同hd | 97在线影院 | 亚洲国产精品传媒在线观看 | 91在线精品一区二区 | 亚洲夜夜综合 | www.黄色片网站 | 玖玖视频精品 | 日韩精品免费在线播放 | 日韩亚洲欧美中文字幕 | a视频在线观看 | 亚洲色图美腿丝袜 | 91精品国产九九九久久久亚洲 | 国产91精品欧美 | 亚洲日日日 | 99国产成+人+综合+亚洲 欧美 | 超碰在线人人 | 天天草天天干天天 | 成人蜜桃视频 | 97超碰中文 | av丁香花 | 爱av在线网 | 久久人人添人人爽添人人88v | 天天操天天操天天 | 伊香蕉大综综综合久久啪 | 久久久www成人免费精品张筱雨 | 免费观看一区二区三区视频 | 综合成人在线 | 日韩视频欧美视频 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 超碰97免费在线 | 欧美日韩高清国产 | 天天干天天拍 | av专区在线 | 日韩欧美视频一区二区三区 | 97色免费视频 | 国产视频91在线 | 精品在线免费视频 | 美女视频黄是免费的 | 天天操夜夜操夜夜操 | 黄色特级一级片 | 狠狠色免费 | 日日夜夜草 | 免费一级片在线 | 丁香国产视频 | 日本一区二区三区免费看 | 超碰人人在线 | 亚洲精品免费在线视频 | 亚洲欧美日韩精品久久奇米一区 | 99在线热播精品免费 | 久久精品美女视频 | 亚洲午夜不卡 | 婷婷在线观看视频 | 色综合久久网 | 欧洲精品视频一区 | 91完整版观看 | 偷拍久久久 | 日本久久久久久久久 | 狠狠躁18三区二区一区ai明星 | 毛片网站在线看 | 99精品乱码国产在线观看 | 亚洲精品自在在线观看 | 国产999在线 | 色噜噜在线观看 | 中文字幕免费一区 | 午夜久久久久 | 91免费视频黄 | 久久亚洲婷婷 | 亚洲精选99| 久久精品99北条麻妃 | 国产精品激情 | 黄色软件在线观看免费 | 午夜av大片 | 亚洲成人蜜桃 | 九九热精品视频在线播放 | 久久在草 | av在线一二三区 | 亚洲视频分类 | 免费高清看电视网站 | 91精品久久久久久久99蜜桃 | 国产视频 亚洲视频 | 日韩精选在线观看 | 99久久婷婷国产综合亚洲 | 精品久久久久久久久久久久久久久久久久 | 人人干人人爽 | 欧美在线aaa | 天天操夜夜操国产精品 | 狠狠躁18三区二区一区ai明星 | 97超碰在线免费 | 国产精品一区二区三区99 | 999久久久久久久久6666 | 国产剧情一区二区在线观看 | 五月亚洲综合 | 国产美女黄网站免费 | 久久热首页 | 日韩一级片大全 | 日韩欧美精品免费 | 黄色影院在线观看 | 亚洲精品午夜一区人人爽 | 久久伊人爱 | 国产精品乱码久久久久久1区2区 | 国产精品午夜在线观看 | 亚洲精品久久久久58 | 亚洲免费激情 | 麻豆视频www | 欧美a在线看 | av免费福利 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲开心色 | 久久精品91久久久久久再现 | 五月天久久婷 | 91网在线看 | 国产专区一 | 五月开心婷婷网 | 中文字幕超清在线免费 | 五月婷婷丁香激情 | 免费在线成人av电影 | 婷婷六月天丁香 | 四虎最新入口 | 亚洲资源在线网 | 美女很黄免费网站 | 久久99国产精品久久99 | 国产黄色精品在线观看 | 久久久久久国产精品亚洲78 | 久久久午夜剧场 | 久久综合网色—综合色88 | 97视频人人澡人人爽 | 亚洲黄色在线播放 | 麻豆国产精品va在线观看不卡 | 精品亚洲视频在线 | 国产精彩视频一区 | 97国产在线视频 | 中文字幕在线视频精品 | 友田真希av | 久久美女电影 | 69国产盗摄一区二区三区五区 | 黄色软件在线观看视频 | 国产成人三级一区二区在线观看一 | 五月天六月丁香 | 麻豆91精品视频 | av色综合网| av电影一区 | 婷婷丁香狠狠爱 | 成年人国产在线观看 | 成 人 黄 色 片 在线播放 | 91高清在线 | 国产伦精品一区二区三区四区视频 | 夜夜干夜夜 | 久久九九国产视频 | 精品国产乱码久久久久久浪潮 | 欧美色噜噜 | 亚洲日本成人网 | 欧美中文字幕久久 | 午夜av大片 | 伊人电影天堂 | 天天插视频| 国产无遮挡又黄又爽馒头漫画 | 奇米四色影狠狠爱7777 | 久久精品国产免费看久久精品 | av女优中文字幕在线观看 | 国产资源免费 | 91高清视频免费 | 色综合久久久久久中文网 | 国产精品美女久久久网av | 久热久草在线 | 国产精品男女 | 97人人爽| 免费看的黄网站软件 | 成人av网站在线 | 免费在线播放av电影 | 免费日韩 精品中文字幕视频在线 | 黄影院| 在线一级片 | 91亚洲精品国偷拍 | 国产精品视频久久久 | 国产午夜精品福利视频 | 亚洲综合色av | 久草在线视频资源 | 精品五月天 | 国产香蕉97碰碰久久人人 | a国产精品 | 麻豆视频成人 | 亚洲热久久 | av大全在线 | 免费碰碰 | www.婷婷com| 久久久久电影网站 | 色偷偷人人澡久久超碰69 | 午夜a区 | 激情久久久久久久久久久久久久久久 | 亚洲精品久久久久久中文传媒 | 五月天色综合 | 色橹橹欧美在线观看视频高清 | 三级av在线播放 | 久久久久久久久久久精 | 天天草天天操 | 免费观看黄色av | 亚洲精品女人久久久 | 国产第一页精品 | 亚洲少妇xxxx | www五月天com | 91精品伦理 | 天天干天天操天天干 | 成人午夜电影网站 | 波多野结衣精品在线 | 国产精品久久伊人 | 狠狠干狠狠久久 | 麻豆视频在线观看免费 | 在线超碰av| 亚洲精品视频在线观看免费视频 | 免费在线观看的av网站 | 国产麻豆果冻传媒在线观看 | 国产护士hd高朝护士1 | 亚洲伊人婷婷 | 亚洲a免费| www日日夜夜 | 天天操导航| 精品国产一区二区在线 | 国产不卡在线播放 | a视频在线 | 亚洲乱码精品久久久 | 午夜精品三区 | 美女在线免费视频 | 973理论片235影院9 | 国产精品18久久久久久久久 | 亚洲va天堂va欧美ⅴa在线 | 亚洲国产手机在线 | 又色又爽又黄高潮的免费视频 | 国产专区在线 | 狠狠色丁香婷婷综合基地 | 黄色www免费 | 久草在线中文888 | 日韩av电影一区 | 国产97视频在线 | 久久国产精品免费一区 | 91精品国产三级a在线观看 | а天堂中文最新一区二区三区 | 日韩电影一区二区三区在线观看 | 国产视频每日更新 | 激情自拍av | 久久久综合色 | 在线三级av| www.成人精品 | 久久久999免费视频 日韩网站在线 | 欧美日韩国产二区三区 | 亚洲91网站 | 婷婷av色综合 | 午夜精品视频免费在线观看 | 日韩一区精品 | 成人一区影院 | 精品国产一区二区久久 | 国产成人精品一区二区三区福利 | 久久国产精品视频观看 | 一区二区av| 美女网站色在线观看 | 亚洲精品久久久蜜桃直播 | 亚洲h色精品 | 一级做a视频 | 久久精品亚洲一区二区三区观看模式 | 免费高清无人区完整版 | 久99热| 久久网站av| 五月婷婷,六月丁香 | 夜色在线资源 | 美女视频国产 | 精品国产黄色片 | 成年人免费观看国产 | 国产午夜精品一区二区三区欧美 | 国产精品国产三级在线专区 | 国产成人一区二区三区在线观看 | 欧美a在线免费观看 | 五月天综合色 | 中文字幕九九 | 欧美日韩在线观看不卡 | 成年人免费av | 精品久久久久国产 | 久久激情五月激情 | 夜夜操狠狠操 | 91成人国产| 免费a级毛片在线看 | 久草线 | 中文字幕在线观看视频一区二区三区 | 国产91大片| 在线观看日韩av | 97精品国产97久久久久久免费 | 国产精品第10页 | 久久国产精品99久久久久 | 免费精品视频在线观看 | 一区二区三区久久精品 | 久久99国产精品久久99 | 18网站在线观看 | 亚洲一区精品二人人爽久久 | 色91av| 久草资源免费 | 成人免费网站在线观看 | 日本久久久精品视频 | 日韩黄色免费在线观看 | 99视频精品 | 91九色视频在线播放 | 91看成人| 久久成 | 三上悠亚在线免费 | 五月婷婷久久丁香 | 成人黄色小说视频 | 日本三级国产 | 日本色小说视频 | 国产福利网站 | 国产一区欧美一区 | 成人免费在线看片 | 青草视频在线 | 成人黄色小说视频 | 成片免费观看视频大全 | 欧美精品xx| 国产日韩精品一区二区三区 | 麻豆超碰 | 亚洲国产精品推荐 | 色香网| 狠狠的操 | 欧美日韩久久一区 | 日韩成人免费电影 | 成人三级视频 | 超碰97国产在线 | 欧美中文字幕第一页 | 最新av在线免费观看 | 久久成人麻豆午夜电影 | 在线观看久久久久久 | 国产在线高清精品 | 美女视频一区 | 一区二区视频欧美 | 国产91精品一区二区 | 美女黄频免费 | 欧美色图东方 | 天躁狠狠躁| 免费午夜av | 射综合网| 亚洲精区二区三区四区麻豆 | 国产免费看 | 伊人va | 美女露久久| www.啪啪.com| 丰满少妇久久久 | 日韩欧美亚州 | 国产黄a三级 | 激情综合网五月激情 | 九九视频免费在线观看 | 丁香婷婷激情国产高清秒播 | 51久久夜色精品国产麻豆 | 色婷婷色 | 日韩精品视频第一页 | 国产99久久久国产精品成人免费 | 婷婷视频在线 | 久久深夜 | 豆豆色资源网xfplay | 狠狠色伊人亚洲综合网站野外 | 福利电影久久 | 中文字幕人成乱码在线观看 | 色偷偷88888欧美精品久久 | 久久精品视频日本 | 日本精品视频在线 | 97精品国产97久久久久久春色 | 女人18毛片a级毛片一区二区 | 亚洲三级av | 中文在线 | 国产精品热 | 国产馆在线播放 | 毛片视频网址 | 欧美色精品天天在线观看视频 | 免费黄色看片 | 免费观看视频的网站 | 色综合久久久久网 | 免费久久视频 | 国产一级二级在线播放 | 精品99在线视频 | 69精品视频 | 九九视频免费在线观看 | 欧美大码xxxx | 免费看日韩 | 99中文在线| 在线观看久 | 中文字幕在线视频一区二区三区 | 国产精品久久久久久久电影 | 精品国产一区二区三区久久久久久 | 国内视频1区 | 西西444www大胆高清图片 | 欧美日韩免费视频 | 黄色h在线观看 | 日韩欧美一区二区三区在线 | 国产精品免费视频观看 | 国产不卡在线观看视频 | 久久99精品国产91久久来源 | 99视| 中文成人字幕 | 国产精品系列在线观看 | 国产成人免费在线观看 | 干av在线 | 九九热只有这里有精品 | 国产亚洲精品av | 国产在线a视频 | 成人免费网站视频 | 亚洲精品三级 | 欧美激情视频在线免费观看 | 中文字幕人成一区 | 亚洲成人黄色网址 | 人人超碰人人 | 五月婷综合网 | 国产精品成人品 | 免费精品国产va自在自线 | 美女免费视频网站 | 成人91av | 免费在线观看黄网站 | 在线观看免费av片 | 久久96国产精品久久99软件 | 韩国精品一区二区三区六区色诱 | 超级碰视频 | 国产精品6 | 久久久免费av| 日本午夜在线观看 | 国产在线精品福利 | 夜夜澡人模人人添人人看 | 久久国产99| 91爱在线| 亚洲欧美日韩一二三区 | 黄色小网站免费看 | 婷婷精品视频 | 久久一区二区三区超碰国产精品 | 国产精品麻豆视频 | 少妇bbbb揉bbbb日本 | 久久久久高清毛片一级 | 国产在线播放观看 | 丝袜美女视频网站 | 久久久久久久久久电影 | 午夜狠狠干 | 色综合小说 | 久久丁香网 | 国外调教视频网站 | 黄色成人av在线 | 国产五十路毛片 | 日韩欧美在线播放 | 香蕉视频啪啪 | 黄色网址a | 精品一区久久 | 911国产精品 | 色婷婷亚洲 | 人人看人人 | 17videosex性欧美 | 4438全国亚洲精品在线观看视频 | 亚洲人av免费网站 | 亚洲少妇自拍 | 97人人澡人人爽人人模亚洲 | 久久久久亚洲最大xxxx | 免费男女羞羞的视频网站中文字幕 | 精品毛片一区二区免费看 | 99久久精品国产一区二区成人 | 深爱激情婷婷网 | 免费无遮挡动漫网站 | 欧美十八 | 久久久电影 | 久草在线免费在线观看 | 500部大龄熟乱视频使用方法 | 91影视成人 | 国产精品热视频 | 国产一二区在线观看 | 91av免费在线观看 | 国产精品久久久久久久久久久久冷 | 久久免费av电影 | av最新资源 | 日韩高清国产精品 | 欧美一区二区三区特黄 | 亚洲精品在线播放视频 | 国产一级片免费播放 | 亚洲区另类春色综合小说 | 国产福利av在线 | 人人澡人人舔 | 久久国产品 | 国产伦精品一区二区三区在线 | 92国产精品久久久久首页 | 欧美成人性战久久 | 在线欧美最极品的av | 欧美亚洲国产精品久久高清浪潮 | 免费在线色电影 | 日韩精品中文字幕有码 | 美女网站在线观看 | 中文字幕日韩高清 | 97在线观看免费观看 | 91精品福利在线 | 国际精品久久 | www.色婷婷.com| 日韩一区二区免费播放 | 国产视频在线观看免费 | 国产小视频福利在线 | 一区精品在线 | 国精产品一二三线999 | 911国产| 成人黄色av免费在线观看 | 久久精品5 | 国产剧情一区 | 伊人色综合久久天天 | 涩涩网站在线 | 国产麻豆果冻传媒在线观看 | 波多野结衣综合网 | 悠悠av资源片 | 日韩一区二区三免费高清在线观看 | 日韩在线观看视频一区二区三区 | 狠狠色丁香久久婷婷综合五月 | 亚州国产视频 | 国产一线二线三线性视频 | www激情com| 色播五月激情综合网 | 日韩在线不卡视频 | 日韩欧美一区二区三区视频 | www国产精品com| 免费看成人a | 婷婷丁香六月天 | 国产99爱 | 国产永久网站 | 久久婷婷激情 | 国内精品久久久久影院男同志 | 日韩免费视频播放 | 色综合久久88色综合天天6 | 免费看污在线观看 | 久久国产电影院 | 99久久久久国产精品免费 | 午夜精品久久久久久久久久久久久久 | 亚洲尺码电影av久久 | 国产成人精品一区二区 | 欧美日韩国产免费视频 | 午夜影院在线观看18 | 人人爽久久涩噜噜噜网站 | 最新国产中文字幕 | 国产精品一区二区三区免费视频 | 91精品久久久久久综合乱菊 | 婷婷精品视频 | 亚洲综合视频在线观看 | 久久五月天色综合 | 91色一区二区三区 | 欧美精品久久久久久久亚洲调教 | 四虎影视av| 一区二区精品国产 | 韩国三级一区 | 欧美极品少妇xxxx | 亚洲春色综合另类校园电影 | 日韩在线中文字幕视频 | 国产午夜精品福利视频 | 日韩精品黄 | 亚洲视频网站在线观看 | 国产久草在线观看 | av片子在线观看 | 91色吧 | 免费精品视频在线观看 | 国产99久久久国产精品免费二区 | 久久久首页 | 欧美资源在线观看 | 婷婷激情五月 | 久久午夜羞羞影院 | 99爱视频在线观看 | 中文国产在线观看 | 97av影院| 二区中文字幕 | 国产精品99爱 | 天天干天天在线 | 中文字幕免费一区二区 | 午夜av在线播放 | 91精品导航| 欧美日韩不卡一区 | 国产精品久久久久久久av电影 | 日韩在线电影观看 | 欧美少妇xx | 丝袜美腿av | 黄色网址中文字幕 | 久久久av免费 | 伊人va | 2022中文字幕在线观看 | 亚洲在线不卡 | 亚洲成人高清在线 | 成人高清av在线 | 亚洲另类交 | 久久99偷拍视频 | 久久影视精品 | 99性视频| 日韩在线观看网址 | 人人玩人人添人人澡97 | 深夜精品福利 | 热久久99这里有精品 | 青草视频在线看 | 在线观看av不卡 | 亚洲免费国产 | 久久99电影| 免费在线观看不卡av | 欧美精品日韩 | 天堂av官网 | 免费观看久久 | 婷婷五月色综合 | 91最新网址在线观看 | 亚洲 精品在线视频 | 亚洲国产剧情av | 黄色大片av | 天天做天天爱夜夜爽 | 日韩在线视频网站 | 国产手机视频 | 成人av资源网站 | 96看片| 97在线播放视频 | 午夜精品电影一区二区在线 | 91一区二区三区在线观看 | 国内精品久久久久影院优 | 久久免费视频播放 | 九九国产精品视频 | 少妇bbw搡bbbb搡bbbb | 亚洲永久免费av | 亚洲视频电影在线 | av黄色免费在线观看 | 91在线亚洲| av黄色成人 | 91成人精品一区在线播放 | 精品国产乱码一区二 | 久久99国产综合精品免费 | 99精品免费久久久久久日本 | 亚洲 成人 一区 | 久久99九九99精品 | 国产一区二区在线播放视频 | 日狠狠 | 成人久久视频 | 亚洲国产精品成人精品 | 特级毛片在线免费观看 | 日韩欧美视频免费观看 | 日韩女同一区二区三区在线观看 | 久久久国产成人 | 国产98色在线 | 日韩 | 丁香婷婷激情五月 | www色综合| 91亚洲精品久久久蜜桃 | 国产一区二区三区久久久 | 久久久久亚洲精品男人的天堂 | 91视频久久久| 亚洲人成精品久久久久 | 黄色一区三区 | 丁香花在线视频观看免费 | 国产一区二区中文字幕 | 在线观看视频97 | 一级黄色片在线免费观看 | 成人在线视频你懂的 | 一区二区视频免费在线观看 | 中日韩在线 | 香蕉精品视频在线观看 | 天天爱天天操天天干 | 国产精品久久久久久麻豆一区 | 国产视频中文字幕在线观看 | 日韩com| 国产精品一区二区av影院萌芽 | 国产精品theporn | 日韩特黄一级欧美毛片特黄 | 91麻豆精品国产91久久久使用方法 | 日韩爱爱网站 | 玖玖爱国产在线 | 国产手机视频在线观看 | 婷婷色网| 日本午夜在线亚洲.国产 | 91九色porny在线 | 久久99国产精品 | 色天天中文 | 久久久久久久久久网站 | 亚州精品天堂中文字幕 | 韩国一区视频 | 免费的国产精品 | 免费激情在线电影 | 热久在线 | 中文视频一区二区 | 免费精品视频在线 | 国产a免费 | 日韩av网页 | 中文字幕在线观看不卡 | 99久久精品免费一区 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 99免费在线视频 | 国产麻豆果冻传媒在线观看 | 婷婷丁香激情综合 | 精品产品国产在线不卡 | 91网免费观看 | www.亚洲在线| 成人av网页| 插久久 | 国产精品久久三 | 美女视频国产 | 美女av免费| 亚洲狠狠婷婷综合久久久 | 国产又粗又长的视频 | 国产网红在线观看 | 国产99久久精品一区二区300 | 日日操夜夜操狠狠操 | 中文字幕精品三区 | 天天综合导航 | 国产精品第52页 | 麻豆视频大全 | 午夜精品一区二区三区在线播放 | 夜夜操天天 | 亚洲欧洲国产日韩精品 | 免费在线观看日韩视频 | 一二三区在线 | 91在线色 | 免费在线观看av的网站 | 东方av在| 国内小视频 | 国产欧美在线一区二区三区 | 久久一精品 | 久久综合导航 | 久久99久久99免费视频 | 男女拍拍免费视频 | 成人动态视频 | www国产亚洲精品久久网站 | 成人黄色免费观看 | 国产一级免费在线观看 | 精品久久国产一区 | 九九精品视频在线看 | 亚洲精品久久久久999中文字幕 | 91精品国产入口 | 国产精品青青 | 久久优 | 国内精品久久久久久久久 | 色爱成人网 |