日韩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ò),歡迎將生活随笔推薦給好友。

    国产精品久久 | 97国产一区 | 在线黄av | 国产精品黄| 91精品一区二区三区蜜桃 | 国产精品永久免费在线 | 91麻豆精品国产91久久久更新时间 | 色中色亚洲 | 久久久久久久电影 | 国产一级精品在线观看 | 97人人添人澡人人爽超碰动图 | 91中文字幕永久在线 | 国产免费嫩草影院 | 国产美女精品视频免费观看 | 午夜av在线播放 | 深夜免费福利在线 | 美州a亚洲一视本频v色道 | 国产字幕在线观看 | 在线视频app | 五月婷婷国产 | 久草色在线观看 | 激情欧美丁香 | 天天操婷婷 | 黄色小说视频在线 | 日本黄色片一区二区 | 99久久久久久国产精品 | 综合色伊人 | 天天搞天天干天天色 | 国产99久久久国产精品 | 久久精品综合网 | 中文字幕 国产 一区 | 亚洲黄色在线观看 | 欧美久久影院 | 国产黄色精品视频 | 久久综合偷偷噜噜噜色 | 国产一区欧美一区 | 日韩av美女 | 日韩高清一二区 | 免费观看黄色12片一级视频 | 欧美欧美 | 久久精品视频免费播放 | 国产成人在线看 | 久草影视在线 | 日韩网页 | 国产成人久久av977小说 | 天堂网一区二区 | 天天射天天射天天 | 黄视频网站大全 | 91香蕉久久 | 青青草国产精品 | 狠狠干五月天 | 午夜精品久久久久久99热明星 | 在线免费91 | 天天干天天天 | 92精品国产成人观看免费 | 国产不卡视频在线播放 | 丁香av在线 | 日韩欧美黄色网址 | 麻豆94tv免费版 | 久久久久久久久久久久亚洲 | 国产免费黄视频在线观看 | 色综合久久88色综合天天免费 | av蜜桃在线 | 日韩网站在线看片你懂的 | 四虎国产精品永久在线国在线 | 午夜在线资源 | 日韩精品免费 | 国产成人久久av977小说 | 91中文字幕在线播放 | 精品久久久久久亚洲综合网站 | 色综合亚洲精品激情狠狠 | 久久久久麻豆 | 免费看片黄色 | www亚洲精品 | 国产视频九色蝌蚪 | 激情综合婷婷 | 国产手机在线播放 | 日韩免费观看一区二区 | 免费观看v片在线观看 | 97精品国产一二三产区 | 色综合天天综合 | 黄色一级动作片 | 在线国产黄色 | 91夜夜夜| 在线观看 亚洲 | 一区二区三区免费播放 | 久久久久久久久久久影视 | 一区二区丝袜 | 免费大片黄在线 | 一级黄色a视频 | 亚洲天堂色婷婷 | 激情av在线资源 | 免费看污片 | 欧美日韩亚洲精品在线 | 久久久久久免费网 | 精品欧美小视频在线观看 | 久久精品久久国产 | 91免费试看 | 在线a视频| 久久99热精品 | 中文字幕在线视频网站 | 国产精品 中文字幕 亚洲 欧美 | 夜夜爽88888免费视频4848 | 国产亚洲片 | 欧美久久久久久久久 | 五月婷婷激情五月 | 日本黄色片一区二区 | sesese图片 | 国产成人精品久久二区二区 | 色网站在线 | 在线视频精品播放 | 中文字幕日韩有码 | 久久国产精品视频免费看 | 天天草天天插 | 久草在线免费新视频 | 中文字幕视频一区二区 | 欧美日韩在线网站 | 91在线免费视频 | 国产又粗又硬又长又爽的视频 | 97手机电影网 | 韩国三级一区 | av超碰免费在线 | 中文字幕在线观看完整 | 亚洲黄网站 | 午夜精品一区二区三区四区 | 日韩视频免费播放 | 国产午夜剧场 | a电影免费看 | av一区在线播放 | 手机在线日韩视频 | 国产精品毛片一区二区在线 | 免费av在线网站 | 国产中文伊人 | 国内三级在线观看 | 四虎在线观看视频 | 亚洲人视频在线 | 成人a级大片 | 欧美一区二区三区不卡 | 日韩高清激情 | 五月婷婷在线视频观看 | 狠狠狠狠狠狠狠狠干 | 99热这里只有精品在线观看 | 91爱爱免费观看 | 91麻豆精品国产午夜天堂 | 亚洲人xxx | 奇米四色影狠狠爱7777 | 一区二区三区四区精品视频 | 91精品国产麻豆 | 婷婷亚洲五月色综合 | 欧美性生活免费 | 久久亚洲欧美日韩精品专区 | 亚洲国产99 | 国产91精品一区二区 | 男女啪啪网站 | 中文字幕黄网 | 高清国产在线一区 | 久草网站 | 丁香激情网| 性色va | 狠狠躁日日躁狂躁夜夜躁 | 久久久久久高清 | 91九色在线视频观看 | 国产精品专区h在线观看 | 又黄又刺激视频 | 在线观看成人福利 | 国产一卡二卡四卡国 | 欧美一级片免费在线观看 | 99久久婷婷国产 | 欧美久久99| 中文字幕在线观看三区 | 久久久蜜桃一区二区 | 人人澡人人干 | 亚洲资源在线观看 | 黄色小网站在线 | 日韩久久精品一区二区三区下载 | 日韩3区 | 国产综合精品一区二区三区 | 日韩欧美在线综合网 | 午夜骚影 | 国产色爽 | 国产黄色片在线 | 国产伦理剧 | 美女在线观看网站 | 国产精品1区2区3区 久久免费视频7 | 天天射一射 | 日韩精品中文字幕一区二区 | 婷婷丁香在线视频 | 国产精品人成电影在线观看 | 五月天丁香视频 | 天天综合天天做 | 亚洲精品色婷婷 | 中文乱幕日产无线码1区 | 国内揄拍国内精品 | 五月天久久久久久 | 黄色片亚洲 | 亚洲精品国产综合99久久夜夜嗨 | 永久免费视频国产 | va视频在线观看 | 五月天av在线 | 国产99自拍 | 五月婷在线播放 | www.国产精品 | 91在线视频在线观看 | 97精品国产97久久久久久久久久久久 | 综合网成人 | 国产对白av| 午夜精品av | 99久久视频| 亚洲精品无 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 99视频精品全部免费 在线 | 中文字幕免费高清av | 国内精自线一二区永久 | av在线免费播放网站 | 久草免费资源 | 三级av中文字幕 | 97操操操| 日韩黄色免费在线观看 | 500部大龄熟乱视频 欧美日本三级 | 美女网站视频免费黄 | 九草视频在线观看 | 亚洲精品午夜一区人人爽 | 久久久国产精品久久久 | 精品国产一区二区三区久久久蜜月 | 349k.cc看片app | 欧美日韩免费观看一区二区三区 | 51久久夜色精品国产麻豆 | 9在线观看免费高清完整版在线观看明 | 日韩午夜电影网 | 久久国产精品系列 | 欧美日一级片 | 亚洲精品视频在线观看免费视频 | 99超碰在线观看 | av无限看 | 亚洲色图 校园春色 | 国产精品欧美一区二区三区不卡 | 制服丝袜天堂 | 瑞典xxxx性hd极品 | 人人干天天射 | 亚洲精品资源在线观看 | 亚洲在线精品 | 中文字幕免费高清av | 91在线观看高清 | 成人久久久久 | 天天干,天天操,天天射 | 免费看的黄色片 | 夜夜爽夜夜操 | 丁香婷婷综合激情 | 久久精品福利视频 | 黄污视频大全 | 国产h片在线观看 | 国产v亚洲v | 一级黄色a视频 | 超碰在线资源 | 久久久久久久久久久久电影 | 国产视频亚洲视频 | 亚洲最新在线 | 成人国产精品一区二区 | 五月开心六月伊人色婷婷 | 国产v在线播放 | 日韩va欧美va亚洲va久久 | 久久精品成人欧美大片古装 | av综合在线观看 | 久久免费99| 国产欧美日韩精品一区二区免费 | 日本爽妇网 | 国产在线美女 | 久久在线观看 | 天天草综合网 | 中文字幕在线观看完整版电影 | 日日干美女 | 免费国产视频 | 久久精品日本啪啪涩涩 | 婷婷综合在线 | 在线观看国产 | 狠狠色伊人亚洲综合成人 | 激情丁香综合五月 | 久久成人一区 | 97成人精品视频在线观看 | 久久综合中文色婷婷 | 91中文视频 | 九九九视频在线 | 中文字幕丰满人伦在线 | 黄色大全免费观看 | 四虎成人精品永久免费av九九 | 久久婷婷五月综合色丁香 | 人人添人人澡 | 国产成人精品久久久 | 狠狠躁夜夜躁人人爽超碰91 | 99久久婷婷国产综合亚洲 | 久久少妇免费视频 | 在线视频app | 国产亚洲精品xxoo | 美女视频免费精品 | 91精品视频免费在线观看 | aaa毛片视频 | 成人av在线看 | www.午夜色.com | 午夜视频免费播放 | 久久午夜色播影院免费高清 | 日韩电影中文,亚洲精品乱码 | 91在线影院 | 玖玖视频精品 | 91在线精品一区二区 | 免费手机黄色网址 | 天天综合网久久综合网 | 18av在线视频 | 国产午夜精品免费一区二区三区视频 | 婷婷丁香久久五月婷婷 | 午夜成人免费影院 | 国产夫妻自拍av | 手机av网站 | 久久久久99精品成人片三人毛片 | 国产精品白浆 | 九九热在线视频免费观看 | www.亚洲视频.com | 欧美日韩一区二区三区在线观看视频 | av五月婷婷 | 亚洲天堂毛片 | 久久午夜色播影院免费高清 | 美女久久网站 | 久久一线 | 成人在线免费av | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 玖玖国产精品视频 | 欧美视频国产视频 | 国产女人免费看a级丨片 | 免费在线观看日韩视频 | 毛片区 | 九九热视频在线 | 97电影院网| 精品在线观看国产 | 成人免费共享视频 | 久久99久久久久久 | 国产精品高清在线 | 综合色伊人| av黄色国产| 日韩精品视频第一页 | 日本视频不卡 | 黄色影院在线免费观看 | 国产在线观看国语版免费 | 456免费视频 | 美女视频黄,久久 | 久久中文精品视频 | 国产精品久久久久永久免费观看 | 国产精品二区三区 | 九九欧美视频 | 日日爱夜夜爱 | 成人91av| 国产一区二区三区在线免费观看 | 美女网站色 | 日日夜夜精品网站 | 久久精品一二三 | 黄色不卡av| 久久国语露脸国产精品电影 | 亚洲成人中文在线 | 亚州av免费 | 在线成人一区 | 91成人免费在线 | 美女网站在线观看 | 日韩天堂在线观看 | 亚洲国产欧洲综合997久久, | 久久99欧美| 日韩二三区| 亚洲丁香日韩 | 在线v片免费观看视频 | 九九热只有精品 | 西西444www大胆高清视频 | 成人中文字幕在线 | 久久人人97超碰精品888 | 精品国产视频在线 | 国产精品青草综合久久久久99 | 六月婷色 | 91片黄在线观看动漫 | 午夜精品久久久久久99热明星 | 久久99最新地址 | 久久五月天综合 | 在线成人一区二区 | 日韩免费视频一区二区 | 韩国精品一区二区三区六区色诱 | 亚洲精品欧洲精品 | 国产美女黄网站免费 | 97**国产露脸精品国产 | 日韩中文字幕电影 | 国产精品成人国产乱一区 | 91欧美日韩国产 | 成人黄色在线电影 | 国产精品成人免费精品自在线观看 | 在线看日韩av | 精品国产伦一区二区三区观看说明 | 99久久精品国产毛片 | 国产视频亚洲精品 | 欧美日韩国产综合网 | 国产精品久久久 | 中文字幕日本在线 | 黄色动态图xx | 日韩在线观看视频中文字幕 | 91视频 - 88av | 久久久久久久久久久久久久av | 中文字幕网站 | 首页中文字幕 | 亚洲精品中文在线 | 伊人成人久久 | 手机在线永久免费观看av片 | 久久精品电影 | 久久精品国产精品 | 国产精品日韩在线观看 | 免费精品国产va自在自线 | 超碰在线成人 | 91视频中文字幕 | 成人av在线资源 | 久草在线资源视频 | 美女网站视频免费黄 | 久久影院一区 | 国产91免费在线观看 | 日韩av一区二区三区四区 | 伊人网综合在线观看 | 亚洲狠狠丁香婷婷综合久久久 | 久久精品成人欧美大片古装 | 91在线色| 久久久免费精品视频 | 美女免费视频一区二区 | 日韩理论片中文字幕 | 国产精品久久久久久69 | 91精品国产91 | 久久玖| 日韩av在线免费播放 | 久久精品99国产 | 日韩一区二区三免费高清在线观看 | 国产一区二区在线免费观看 | 在线a视频| 久久久久综合网 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 午夜在线观看 | 久久精品小视频 | 久久在线免费视频 | 久久6精品| 国产精品午夜在线 | 91精品国产一区二区在线观看 | 久久久久免费精品国产小说色大师 | 不卡的av电影在线观看 | 亚洲国产欧洲综合997久久, | 人人草人 | 久久精品男人的天堂 | 97超碰人人澡人人爱学生 | 日本中文字幕高清 | a在线观看国产 | 在线看的毛片 | 国产成人精品av在线 | 天天综合精品 | 黄色三级在线观看 | 91探花国产综合在线精品 | 天天操天天射天天爱 | 激情av综合| 色偷偷88888欧美精品久久 | 欧美日韩三区二区 | 亚洲最快最全在线视频 | 国产成人一区二区啪在线观看 | 欧美日韩三区二区 | 国产视频一区在线免费观看 | 久久影院午夜论 | 欧美一级欧美一级 | 久久一久久 | 91av电影在线 | 久久久久久网址 | 久久少妇av | 丝袜+亚洲+另类+欧美+变态 | 色综合久久精品 | 久久久久草 | av黄色免费看 | 久久精品国产v日韩v亚洲 | 伊人国产在线播放 | 国产尤物一区二区三区 | 狠狠色丁香久久婷婷综合五月 | 久久精品国产一区二区三 | 8x成人在线| 日韩视频一区二区在线 | 久草在线免费色站 | 中文字幕在线观看你懂的 | 亚洲最新av在线 | 九色自拍视频 | 日韩免费播放 | 国内99视频| 国产精选在线 | 四虎天堂 | 99精品一级欧美片免费播放 | 成人高清av在线 | 欧美亚洲国产日韩 | 99精品久久精品一区二区 | 久久99久久99精品免视看婷婷 | 亚洲国产日韩av | 国产黄色免费看 | 91精品国产综合久久久久久久 | 国产精品丝袜 | 久久久久久久久久久免费av | 久久99国产综合精品 | 日本精品久久久久影院 | 国产99免费视频 | 国产无吗一区二区三区在线欢 | 日韩精品亚洲专区在线观看 | 欧美精品v国产精品v日韩精品 | 久久久官网| 日韩理论电影在线观看 | 国产色网 | 色婷婷九月 | 丁香色天天| 国产一区免费在线 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 久久免费视频7 | 精品1区2区 | 人人爽人人澡 | 日韩精品91偷拍在线观看 | 伊人永久 | 亚洲视频1区2区 | 日韩乱码在线 | 美女久久视频 | 日本三级吹潮在线 | 人人干人人草 | 中文字幕国产精品 | 国产精品久久久久久久av电影 | 偷拍久久久 | 激情综合亚洲 | 色综合久久中文字幕综合网 | a一片一级 | 国产日韩三级 | 亚洲精品福利视频 | 91久久影院 | 中文字幕在线看视频 | 久久国产精品精品国产色婷婷 | 国产精品第十页 | 四虎5151久久欧美毛片 | 国产精品免费视频网站 | 日韩美女高潮 | 在线之家官网 | 97av在线视频免费播放 | 国产乱老熟视频网88av | 丁香六月天婷婷 | av福利免费 | 亚洲春色成人 | 亚洲丝袜中文 | 国产一级二级三级视频 | 国产一级片一区二区三区 | 4438全国亚洲精品观看视频 | 一区二区成人国产精品 | 久久影院午夜论 | 中文字幕免费不卡视频 | 国产黄| 伊人婷婷网 | 日韩网| 91视频免费视频 | 国产在线视频资源 | 久久视频精品在线 | 亚洲三级在线 | 成人精品视频久久久久 | 婷婷丁香六月天 | 欧美aa在线| 久草在线一免费新视频 | 日韩视频一二三区 | 国产999精品久久久久久麻豆 | 免费黄色a网站 | 亚洲国产日韩在线 | 日韩一区二区三区在线观看 | 中文字幕丝袜美腿 | 国产片免费在线观看视频 | 国产精品久久久久久久99 | 国产高清视频在线播放 | 国产人在线成免费视频 | 精品国产三级 | 久草综合在线观看 | 99在线观看免费视频精品观看 | 国产在线精品国自产拍影院 | 久草影视在线观看 | 国产流白浆高潮在线观看 | 欧美网站黄色 | 亚洲国产精品久久 | 成人97视频一区二区 | 国产99一区| 肉色欧美久久久久久久免费看 | 亚洲激精日韩激精欧美精品 | 欧美 日韩 国产 成人 在线 | 中文字幕免费观看全部电影 | 久精品视频免费观看2 | 韩国精品视频在线观看 | 九九视频这里只有精品 | 久久精品国产亚洲 | 九九日九九操 | 91精品久久久久久久久久久久久 | av黄色在线 | 日韩中文字幕第一页 | 成人av网站在线播放 | 久久久久国产一区二区三区 | 国产高清精品在线观看 | 久久伊人色综合 | 成年人网站免费观看 | 高潮久久久久久 | 国产高清亚洲 | 激情丁香月 | 国产色资源 | 国产精品一区二区免费 | 亚洲最大av | 又黄又刺激视频 | 在线观看黄色国产 | 亚洲美女在线国产 | 欧美精品久久久久久久久久白贞 | 97成人超碰| 五月婷婷中文网 | 五月婷婷在线视频观看 | 国产艹b视频 | 久久99国产精品免费网站 | 99久久精品免费看国产一区二区三区 | 国产精品午夜av | 国产麻豆成人传媒免费观看 | 五月婷婷六月丁香在线观看 | 日本丰满少妇免费一区 | 天天爱天天操天天射 | 激情视频在线观看网址 | 黄色片网站av | 一区二区精品国产 | 一本一道久久a久久精品 | 黄av免费 | 免费一级特黄毛大片 | 亚洲一区精品人人爽人人躁 | 国产免费观看久久黄 | 亚洲精品久久久久久久蜜桃 | 国产午夜一区 | 欧美少妇xxx | 中文字幕综合在线 | 六月色播| 成人黄色片免费 | 亚洲天堂精品视频在线观看 | 黄色录像av | 丁香五月网久久综合 | 亚洲欧美日韩不卡 | 久草在线免费电影 | 国产精品麻豆91 | 黄色免费观看视频 | 青草视频在线播放 | 亚洲精品在线视频网站 | 免费在线观看日韩 | 日本久久高清视频 | 亚洲精品在线观看免费 | 久久精品国产精品 | www.69xx| 美女精品在线观看 | 亚洲欧美日韩一二三区 | www.国产视频 | 国产成人精品亚洲 | 韩日色视频 | 一区二区成人国产精品 | 五月婷婷伊人网 | 亚洲精品在线播放视频 | av丝袜制服 | 亚洲国产网址 | 97夜夜澡人人双人人人喊 | 国产成人亚洲在线观看 | 中文字幕免费在线 | 激情视频网页 | 999久久久久久久久6666 | a黄色| 亚洲精品视频在线免费 | 亚洲免费专区 | 99精品视频免费在线观看 | 亚洲综合色婷婷 | 日韩一区二区三区高清在线观看 | 高清在线一区二区 | 久久国产精品99久久久久 | 视频福利在线观看 | 四虎www com | 中文字幕美女免费在线 | 韩国av不卡| 天天透天天插 | 欧美亚洲国产日韩 | 中文字幕av全部资源www中文字幕在线观看 | 黄色特一级片 | 亚洲国产精品资源 | 国产aa精品 | 国产亚洲精品久久久久久久久久 | 99久热在线精品 | 日韩1页| 欧美巨大| www黄色com| 国产精品一区二区美女视频免费看 | 国产护士av | 天天摸天天干天天操天天射 | 天天爱天天舔 | 亚洲国产中文在线 | 国产一区二区日本 | 丁香婷婷综合色啪 | 狠狠躁日日躁夜夜躁av | 亚洲精品成人在线 | 伊人中文字幕在线 | 天天人人综合 | 18岁免费看片 | 久久久久久久久久影视 | 天天色天天射综合网 | 成人在线免费小视频 | 99亚洲精品 | 免费在线激情视频 | 久操视频在线播放 | 天天玩天天操天天射 | 国产麻豆精品一区 | 日韩电影一区二区三区在线观看 | 中文字幕在线视频国产 | a黄色 | 91丨九色丨丝袜 | 天天操夜夜干 | 在线小视频你懂得 | 九九欧美 | 亚洲国产69| 国产精品美女久久久久久2018 | 97在线看| 亚洲精品影院在线观看 | 日韩在线观看三区 | 99久久日韩精品视频免费在线观看 | 日韩免费精品 | 四虎成人精品永久免费av九九 | 国产精品免费在线视频 | 日韩激情片在线观看 | 日韩精品久久久久久中文字幕8 | 免费亚洲黄色 | 亚洲欧美日韩一区二区三区在线观看 | 亚洲 成人 一区 | 青青河边草免费观看完整版高清 | 婷婷久久国产 | 五月婷婷综合激情 | 午夜视频99 | 亚洲午夜激情网 | av在线播放亚洲 | 丁香五月亚洲综合在线 | 欧美激情va永久在线播放 | 人人爽人人爽人人 | 最近中文字幕高清字幕在线视频 | 国产综合精品久久 | 欧美极品在线播放 | 国产成人久久av免费高清密臂 | 日韩三级一区 | 欧美日韩观看 | 日韩av手机在线看 | 久久深夜 | 网站你懂的| 一区二区三区av在线 | 夜夜操天天干, | 久久综合久久综合这里只有精品 | 黄网站色视频免费观看 | 成人宗合网 | 久久在线影院 | 国产精品9999久久久久仙踪林 | 天天伊人网 | 国产视频色 | 国产中文字幕av | 国产在线更新 | 色婷婷丁香 | 亚洲黄色在线 | 久久99国产综合精品免费 | 国内精品毛片 | 91精品国自产拍天天拍 | 午夜精品久久久 | 久久久久看片 | 中文字幕精 | 亚洲高清资源 | 久草网在线 | 久久久精品亚洲 | 日韩r级电影在线观看 | 91看片一区二区三区 | 国产精品99久久久久人中文网介绍 | 日本性生活一级片 | 亚洲激情中文 | 一区 二区 精品 | 久久久99久久 | 亚洲精品国产精品乱码不99热 | 黄色片免费电影 | 97看片| 午夜10000| 四虎在线免费观看 | 亚洲成av | www,黄视频| 成人午夜黄色 | 精品久久久久久久久久久久久久久久久久 | 亚洲精品视频在线 | 黄网站色欧美视频 | 久久国产剧场电影 | av线上免费看| 欧美精品九九99久久 | 99热官网 | 午夜精品久久久久久久久久久 | 99国产在线| 天无日天天操天天干 | 久草精品视频 | 免费观看一级视频 | 成人av在线电影 | 大荫蒂欧美视频另类xxxx | 国产又黄又硬又爽 | 黄色成人av网址 | 91热这里只有精品 | 五月天婷婷视频 | 伊人成人激情 | 日韩欧美一级二级 | 国产欧美日韩精品一区二区免费 | 在线观看免费国产小视频 | 青春草免费视频 | 九色视频自拍 | 欧美日韩中文国产一区发布 | 国产精品免费在线 | av日韩国产 | wwwwww色| 欧美日韩后 | 日韩一区二区三 | 91精品一区国产高清在线gif | 碰超在线97人人 | 在线观看日韩av | 99久久久国产精品免费观看 | 欧美片一区二区三区 | 日日操夜| 97久久精品午夜一区二区 | 超碰com| 在线免费观看欧美日韩 | 国内精品久久久久影院一蜜桃 | 色偷偷888欧美精品久久久 | 国产精品免费视频久久久 | 激情欧美xxxx | 99国产成+人+综合+亚洲 欧美 | 久久国产精品一二三区 | 日本不卡一区二区三区在线观看 | 99999精品视频 | 国产精品99久久久久久武松影视 | 狠狠做深爱婷婷综合一区 | 97视频人人免费看 | 99精品视频在线播放观看 | 精品在线观看免费 | 国产精品久久久久久麻豆一区 | 视色网站 | 成人一级片视频 | 操操操人人人 | 免费性网站 | www久| av在线精品| 亚洲精品1区2区3区 超碰成人网 | 午夜久久福利影院 | 少妇按摩av | 中文字幕乱在线伦视频中文字幕乱码在线 | 欧美在线1区 | 久久综合狠狠综合久久狠狠色综合 | 在线黄色免费 | 4hu视频| 国产亚州精品视频 | 国产精品9999久久久久仙踪林 | 日本中文字幕系列 | 国内精品美女在线观看 | 99久久国产免费,99久久国产免费大片 | 精品视频亚洲 | 欧美黑吊大战白妞欧美 | 日韩精品一区二区三区高清免费 | 欧美福利视频一区 | 波多野结衣在线播放一区 | 亚洲久草网| 国产一级片直播 | 在线观看国产v片 | 久久久久免费看 | 国产亚洲精品福利 | 国产视频97| 成人三级网站在线观看 | 免费视频一区二区 | 国产精品免费高清 | 天天操天天射天天爽 | 国产麻豆果冻传媒在线观看 | 免费开视频 | 亚洲女人天堂成人av在线 | 久久看毛片 | 丁香五月亚洲综合在线 | 在线观看v片| 国产午夜三级 | 国产在线精品一区二区三区 | 99视频国产精品免费观看 | 天天操夜夜曰 | 国产高清成人在线 | 久久尤物电影视频在线观看 | 成人教育av | 成人免费观看完整版电影 | 久精品视频在线 | 九九热视频在线播放 | 97在线看| 亚洲天天在线日亚洲洲精 | 伊人国产视频 | 成人精品一区二区三区中文字幕 | 久草在线一免费新视频 | 久久国产网站 | 欧美日韩在线免费观看 | 国产精品黄色av | 最新日本中文字幕 | 日韩精品中文字幕久久臀 | 国产精品一区在线观看 | 精品国产免费人成在线观看 | 日韩中文字幕亚洲一区二区va在线 | 中文字幕av免费观看 | 丁香在线| 在线观看视频一区二区三区 | 超碰在线免费97 | 亚洲欧美在线观看视频 | 在线天堂中文www视软件 | 91av视频在线播放 | 九九视频热| 天天操月月操 | 在线电影日韩 | 午夜av免费| 少妇搡bbbb搡bbb搡aa | 五月激情亚洲 | 日韩久久片| 欧美成人h版电影 | 国产又粗又猛又色 | 日韩精品2区 | 国产精品99久久久久久有的能看 | 国产视频一二区 | 国产亚洲婷婷免费 | 日日久视频 | 国产精品久久久久久久久软件 | 亚洲午夜在线视频 | 国产一区二区三区高清播放 | 狠狠色丁香久久婷婷综合_中 | 国产日本亚洲高清 | 久久亚洲私人国产精品 | 美女视频黄免费 | 亚洲精品乱码久久久一二三 | 高清不卡一区二区三区 | 91视频在线免费下载 | 在线免费黄网站 | 中文字幕影视 | 在线观看成人小视频 | www.99av | 99视频这里只有 | 色老板在线视频 | 欧美性色网站 | av 一区二区三区四区 | www婷婷 | www.天堂av | 亚洲狠狠丁香婷婷综合久久久 | 又黄又爽又色无遮挡免费 | 久久精品视频网站 | 久久综合久久久 | 色的网站在线观看 | 在线看一区二区 | www夜夜操com | 久久亚洲美女 | 96av视频| 久草免费色站 | 91av在线视频免费观看 | 亚洲精品在线免费看 | 中文字幕在线专区 | 日韩欧美高清一区二区 | 成年人毛片在线观看 | 91免费看片黄 | 久久久男人的天堂 | 九九热精品视频在线播放 | 中文字幕日韩精品有码视频 | 91看成人 | 免费高清av在线看 | 国产中文在线字幕 | www.成人久久 | 中文字幕在线一区观看 | 国产乱对白刺激视频不卡 | 色综合激情久久 | 在线91色 | 国产免费作爱视频 | 夜夜操综合网 | 国产成人av在线影院 | 久久伊人精品天天 | 黄色小视频在线观看免费 | 国产午夜精品免费一区二区三区视频 | 麻花传媒mv免费观看 | 偷拍久久久 | 日韩欧美黄色网址 | 91精品国产99久久久久久红楼 | 欧美电影在线观看 | 国产精品免费视频一区二区 | 黄色三级免费网址 | 五月丁婷婷 | 成人久久久久久久久久 | 在线日韩视频 | 久久久久久久久久久免费av | 精品亚洲免a | 激情欧美一区二区免费视频 | 香蕉视频啪啪 | 不卡av在线 | 夜色资源站国产www在线视频 | a级免费观看 | 欧美一区二区三区特黄 | 91免费视频黄| 国产精品一区二区中文字幕 | 精品av网站| 亚洲国产午夜 | av中文字幕第一页 | 国产在线日本 | 天天插日日插 | 日韩一区二区免费在线观看 | 久久精品中文字幕少妇 | 93久久精品日日躁夜夜躁欧美 | 亚洲日韩精品欧美一区二区 | 欧美在线视频a | 国产不卡精品视频 |