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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

微信小程序学习记录——4.框架-视图层

發布時間:2024/3/13 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微信小程序学习记录——4.框架-视图层 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1.WXML
      • 數據綁定
        • 簡單綁定
        • 運算
        • 組合
      • 列表渲染
        • wx:for
        • block wx:for
        • wx:key
      • 條件渲染
        • wx:if
        • block wx:if
        • wx:if vs hidden
      • 模板
        • 定義模板
        • 使用模板
        • 模板的作用域
      • 引用
        • import
          • import 的作用域
        • include
      • 事件
        • 什么是事件
        • 事件的使用方式
        • 事件分類
        • 事件綁定和冒泡
        • 事件的捕獲階段
        • 事件對象
          • timeStamp
          • target
          • currentTarget
          • dataset
          • touches
          • Touch 對象
          • CanvasTouch 對象
          • changedTouches
          • detail
  • 2.WSX
    • 頁面渲染
    • 數據處理
    • 模塊
    • .wxs 文件
      • module 對象
      • require函數
    • \ 標簽
      • module 屬性
      • src 屬性
      • 注意
    • 變量
      • 概念
      • 變量名
      • 保留標識符
    • 注釋
    • 運算符
      • 基本運算符
      • 一元運算符
      • 位運算符
      • 比較運算符
      • 等值運算符
      • 賦值運算符
      • 二元邏輯運算符
      • 其他運算符
      • 運算符優先級
    • if語句
    • switch 語句
    • for 語句
    • while 語句
    • 數據類型
      • number
      • string
      • boolean
      • object
      • function
      • arguments
      • array
      • date
      • regexp
    • 數據類型判斷
      • constructor 屬性
      • typeof
    • 基礎類庫
      • console
      • Math
      • JSON
      • Number
      • Date
      • Global
  • 3.WXSS
      • 尺寸單位
      • 樣式導入
      • 內聯樣式
      • 選擇器
      • 全局樣式與局部樣式

1.WXML

WXML(WeiXin Markup Language)是框架設計的一套標簽語言,結合基礎組件、事件系統,可以構建出頁面的結構。

用以下一些簡單的例子來看看 WXML 具有什么能力:

數據綁定

<!--wxml--> <view> {{message}} </view> // page.js Page({data: {message: 'Hello MINA!'} })

簡單綁定

WXML 中的動態數據均來自對應 Page 的 data。

數據綁定使用 Mustache 語法(雙大括號)將變量包起來,可以作用于:

內容

<view> {{ message }} </view> Page({data: {message: 'Hello abc!'} })

組件屬性(需要在雙引號之內)

<view id="item-{{id}}"> </view> Page({data: {id: 0} })

控制屬性(需要在雙引號之內)

<view wx:if="{{condition}}"> </view> Page({data: {condition: true} })

關鍵字(需要在雙引號之內)

  • true:boolean 類型的 true,代表真值。

  • false: boolean 類型的 false,代表假值。

<checkbox checked="{{false}}"> </checkbox>

特別注意:不要直接寫 checked="false",其計算結果是一個字符串,轉成 boolean 類型后代表真值。

運算

可以在 {{}} 內進行簡單的運算,支持的有如下幾種方式:

三元運算

<view hidden="{{flag ? true : false}}"> Hidden </view>

算數運算

<view> {{a + b}} + {{c}} + d </view> Page({data: {a: 1,b: 2,c: 3} })

view中的內容為 3 + 3 + d。

邏輯判斷

<view wx:if="{{length > 5}}"> </view>

字符串運算

<view>{{"hello" + name}}</view> Page({data:{name: 'abc'} })

數據路徑運算

<view>{{object.key}} {{array[0]}}</view> Page({data: {object: {key: 'Hello '},array: ['abc']} })

組合

也可以在 Mustache內直接進行組合,構成新的對象或者數組。

數組

<view wx:for="{{[zero, 1, 2, 3, 4]}}"> {{item}} </view> Page({data: {zero: 0} })

最終組合成數組[0, 1, 2, 3, 4]。

對象

<template is="objectCombine" data="{{for: a, bar: b}}"></template> Page({data: {a: 1,b: 2} })

最終組合成的對象是 {for: 1, bar: 2}

也可以用擴展運算符 … 來將一個對象展開

<template is="objectCombine" data="{{...obj1, ...obj2, e: 5}}"></template> Page({data: {obj1: {a: 1,b: 2},obj2: {c: 3,d: 4}} })

最終組合成的對象是 {a: 1, b: 2, c: 3, d: 4, e: 5}。

如果對象的 key 和 value 相同,也可以間接地表達。

<template is="objectCombine" data="{{foo, bar}}"></template> Page({data: {foo: 'my-foo',bar: 'my-bar'} })

最終組合成的對象是 {foo: 'my-foo', bar:'my-bar'}。

**注意:**上述方式可以隨意組合,但是如有存在變量名相同的情況,后邊的會覆蓋前面,如:

<template is="objectCombine" data="{{...obj1, ...obj2, a, c: 6}}"></template> Page({data: {obj1: {a: 1,b: 2},obj2: {b: 3,c: 4},a: 5} })

最終組合成的對象是 {a: 5, b: 3, c: 6}。

注意: 花括號和引號之間如果有空格,將最終被解析成為字符串

<view wx:for="{{[1,2,3]}} ">{{item}} </view>

等同于

<view wx:for="{{[1,2,3] + ' '}}">{{item}} </view>

列表渲染

<!--wxml--> <view wx:for="{{array}}"> {{item}} </view> // page.js Page({data: {array: [1, 2, 3, 4, 5]} })

wx:for

在組件上使用 wx:for 控制屬性綁定一個數組,即可使用數組中各項的數據重復渲染該組件。

默認數組的當前項的下標變量名默認為 index,數組當前項的變量名默認為 item

<view wx:for="{{array}}">{{index}}: {{item.message}} </view> Page({data: {array: [{message: 'w3c',}, {message: 'School'}]} })

使用 wx:for-item 可以指定數組當前元素的變量名,

使用 wx:for-index 可以指定數組當前下標的變量名:

<view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName">{{idx}}: {{itemName.message}} </view>

wx:for 也可以嵌套,下邊是一個九九乘法表

<view wx:for="{{[1, 2, 3, 4, 5, 6, 7, 8, 9]}}" wx:for-item="i"><view wx:for="{{[1, 2, 3, 4, 5, 6, 7, 8, 9]}}" wx:for-item="j"><view wx:if="{{i <= j}}">{{i}} * {{j}} = {{i * j}}</view></view> </view>

block wx:for

類似 block wx:if,也可以將 wx:for 用在``標簽上,以渲染一個包含多節點的結構塊。例如:

<block wx:for="{{[1, 2, 3]}}"><view> {{index}}: </view><view> {{item}} </view> </block>

wx:key

如果列表中項目的位置會動態改變或者有新的項目添加到列表中,并且希望列表中的項目保持自己的特征和狀態(如 中的輸入內容, 的選中狀態),需要使用 wx:key 來指定列表中項目的唯一的標識符。

wx:key 的值以兩種形式提供

  • 字符串,代表在 for 循環的 array 中 item 的某個 property,該 property 的值需要是列表中唯一的字符串或數字,且不能動態改變。
  • 保留關鍵字 *this 代表在 for 循環中的 item 本身,這種表示需要 item 本身是一個唯一的字符串或者數字,如:
  • 當數據改變觸發渲染層重新渲染的時候,會校正帶有 key 的組件,框架會確保他們被重新排序,而不是重新創建,以確保使組件保持自身的狀態,并且提高列表渲染時的效率。

    如不提供 wx:key,會報一個 warning, 如果明確知道該列表是靜態,或者不必關注其順序,可以選擇忽略。

    **注意:**當 wx:for 的值為字符串時,會將字符串解析成字符串數組

    <view wx:for="array">{{item}} </view>

    等同于

    <view wx:for="{{['a','r','r','a','y']}}">{{item}} </view>

    注意: 花括號和引號之間如果有空格,將最終被解析成為字符串

    <view wx:for="{{[1,2,3]}} ">{{item}} </view>

    等同于

    <view wx:for="{{[1,2,3] + ' '}}" >{{item}} </view>

    條件渲染

    <!--wxml--> <view wx:if="{{view == 'WEBVIEW'}}"> WEBVIEW </view> <view wx:elif="{{view == 'APP'}}"> APP </view> <view wx:else="{{view == 'MINA'}}"> MINA </view> // page.js Page({data: {view: 'MINA'} })

    wx:if

    在框架中,使用 wx:if="{{condition}}" 來判斷是否需要渲染該代碼塊:

    <view wx:if="{{condition}}"> True </view>

    也可以用 wx:elif 和 wx:else 來添加一個 else 塊:

    <view wx:if="{{length > 5}}"> 1 </view> <view wx:elif="{{length > 2}}"> 2 </view> <view wx:else> 3 </view>

    block wx:if

    因為 wx:if 是一個控制屬性,需要將它添加到一個標簽上。如果要一次性判斷多個組件標簽,可以使用一個 `` 標簽將多個組件包裝起來,并在上邊使用 wx:if 控制屬性。

    <block wx:if="{{true}}"><view> view1 </view><view> view2 </view> </block>

    注意: `` 并不是一個組件,它僅僅是一個包裝元素,不會在頁面中做任何渲染,只接受控制屬性。

    wx:if vs hidden

    因為 wx:if 之中的模板也可能包含數據綁定,所有當 wx:if 的條件值切換時,框架有一個局部渲染的過程,因為它會確保條件塊在切換時銷毀或重新渲染。

    同時 wx:if 也是惰性的,如果在初始渲染條件為 false,框架什么也不做,在條件第一次變成真的時候才開始局部渲染。

    相比之下,hidden 就簡單的多,組件始終會被渲染,只是簡單的控制顯示與隱藏。

    一般來說,wx:if 有更高的切換消耗而 hidden 有更高的初始渲染消耗。因此,如果需要頻繁切換的情景下,用 hidden 更好,如果在運行時條件不大可能改變則 wx:if 較好。

    模板

    <!--wxml--> <template name="staffName"><view>FirstName: {{firstName}}, LastName: {{lastName}}</view> </template><template is="staffName" data="{{...staffA}}"></template> <template is="staffName" data="{{...staffB}}"></template> <template is="staffName" data="{{...staffC}}"></template> // page.js Page({data: {staffA: {firstName: 'Hulk', lastName: 'Hu'},staffB: {firstName: 'Shang', lastName: 'You'},staffC: {firstName: 'Gideon', lastName: 'Lin'}} })

    WXML提供模板(template),可以在模板中定義代碼片段,然后在不同的地方調用。

    定義模板

    使用 name 屬性,作為模板的名字。然后在內定義代碼片段,如:

    <!--index: intmsg: stringtime: string --> <template name="msgItem"><view><text> {{index}}: {{msg}} </text><text> Time: {{time}} </text></view> </template>

    使用模板

    使用 is 屬性,聲明需要的使用的模板,然后將模板所需要的 data 傳入,如:

    <template is="msgItem" data="{{...item}}"/> Page({data: {item: {index: 0,msg: 'this is a template',time: '2016-09-15'}} })

    is 屬性可以使用 Mustache 語法,來動態決定具體需要渲染哪個模板:

    <template name="odd"><view> odd </view> </template> <template name="even"><view> even </view> </template><block wx:for="{{[1, 2, 3, 4, 5]}}"><template is="{{item % 2 == 0 ? 'even' : 'odd'}}"/> </block>

    模板的作用域

    模板擁有自己的作用域,只能使用 data 傳入的數據以及模版定義文件中定義的 模塊。

    引用

    WXML 提供兩種文件引用方式import和include。

    import

    import可以在該文件中使用目標文件定義的template,如:

    在 item.wxml 中定義了一個叫item的template:

    <!-- item.wxml --> <template name="item"><text>{{text}}</text> </template>

    在 index.wxml 中引用了 item.wxml,就可以使用item模板:

    <import src="item.wxml"/> <template is="item" data="{{text: 'forbar'}}"/>
    import 的作用域

    import 有作用域的概念,即只會 import 目標文件中定義的 template,而不會 import 目標文件 import 的 template。

    如:C import B,B import A,在C中可以使用B定義的template,在B中可以使用A定義的template,但是C不能使用A定義的template。

    <!-- A.wxml --> <template name="A"><text> A template </text> </template> <!-- B.wxml --> <import src="a.wxml"/> <template name="B"><text> B template </text> </template> <!-- C.wxml --> <import src="b.wxml"/> <template is="A"/> <!-- Error! Can not use tempalte when not import A. --> <template is="B"/>

    include

    include 可以將目標文件除了 外的整個代碼引入,相當于是拷貝到 include 位置,如:

    <!-- index.wxml --> <include src="header.wxml"/> <view> body </view> <include src="footer.wxml"/> <!-- header.wxml --> <view> header </view> <!-- footer.wxml --> <view> footer </view>

    事件

    <view bindtap="add"> {{count}} </view> Page({data: {count: 1},add: function(e) {this.setData({count: this.data.count + 1})} })

    什么是事件

    • 事件是視圖層到邏輯層的通訊方式。
    • 事件可以將用戶的行為反饋到邏輯層進行處理。
    • 事件可以綁定在組件上,當達到觸發事件,就會執行邏輯層中對應的事件處理函數。
    • 事件對象可以攜帶額外信息,如 id, dataset, touches。

    事件的使用方式

    • 在組件中綁定一個事件處理函數。

    如bindtap,當用戶點擊該組件的時候會在該頁面對應的Page中找到相應的事件處理函數。

    <view id="tapTest" data-hi="WeChat" bindtap="tapName"> Click me! </view>
    • 在相應的Page定義中寫上相應的事件處理函數,參數是event。
    Page({tapName: function(event) {console.log(event)} })
    • 可以看到log出來的信息大致如下:
    { "type":"tap", "timeStamp":895, "target": {"id": "tapTest","dataset": {"hi":"WeChat"} }, "currentTarget": {"id": "tapTest","dataset": {"hi":"WeChat"} }, "detail": {"x":53,"y":14 }, "touches":[{"identifier":0,"pageX":53,"pageY":14,"clientX":53,"clientY":14 }], "changedTouches":[{"identifier":0,"pageX":53,"pageY":14,"clientX":53,"clientY":14 }] }

    事件分類

    事件分為冒泡事件和非冒泡事件:

  • 冒泡事件:當一個組件上的事件被觸發后,該事件會向父節點傳遞。
  • 非冒泡事件:當一個組件上的事件被觸發后,該事件不會向父節點傳遞。
  • WXML的冒泡事件列表:

    類型觸發條件
    touchstart手指觸摸動作開始
    touchmove手指觸摸后移動
    touchcancel手指觸摸動作被打斷,如來電提醒,彈窗
    touchend手指觸摸動作結束
    tap手指觸摸后馬上離開
    longpress手指觸摸后,超過350ms再離開,如果指定了事件回調函數并觸發了這個事件,tap事件將不被觸發(基礎庫 1.5.0 開始支持,低版本需做兼容處理。)
    longtap手指觸摸后,超過350ms再離開(推薦使用longpress事件代替)
    transitionend會在 WXSS transition 或 wx.createAnimation 動畫結束后觸發
    animationstart會在一個 WXSS animation 動畫開始時觸發
    animationiteration會在一個 WXSS animation 一次迭代結束時觸發
    animationend會在一個 WXSS animation 動畫完成時觸發

    注:除上表之外的其他組件自定義事件如無特殊聲明都是非冒泡事件,如](https://mp.weixin.qq.com/debug/wxadoc/dev/component/form.html)的`submit`事件,[的input事件,``的scroll事件。

    事件綁定和冒泡

    事件綁定的寫法同組件的屬性,以 key、value 的形式。

    • key 以bind或catch開頭,然后跟上事件的類型,如bindtap、catchtouchstart。自基礎庫版本 1.5.0 起,bind和catch后可以緊跟一個冒號,其含義不變,如bind:tap、、catch:touchstart。
    • value 是一個字符串,需要在對應的 Page 中定義同名的函數。不然當觸發事件的時候會報錯。

    bind事件綁定不會阻止冒泡事件向上冒泡,catch事件綁定可以阻止冒泡事件向上冒泡。

    如在下邊這個例子中,點擊 inner view 會先后調用handleTap3和handleTap2(因為tap事件會冒泡到 middle view,而 middle view 阻止了 tap 事件冒泡,不再向父節點傳遞),點擊 middle view 會觸發handleTap2,點擊 outer view 會觸發handleTap1。

    <view id="outer" bindtap="handleTap1">outer view<view id="middle" catchtap="handleTap2">middle view<view id="inner" bindtap="handleTap3">inner view</view></view> </view>

    事件的捕獲階段

    自基礎庫版本 1.5.0 起,觸摸類事件支持捕獲階段。捕獲階段位于冒泡階段之前,且在捕獲階段中,事件到達節點的順序與冒泡階段恰好相反。需要在捕獲階段監聽事件時,可以采用capture-bind、capture-catch關鍵字,后者將中斷捕獲階段和取消冒泡階段。

    在下面的代碼中,點擊 inner view 會先后調用handleTap2、handleTap4、handleTap3、handleTap1。

    <view id="outer" bind:touchstart="handleTap1" capture-bind:touchstart="handleTap2">outer view<view id="inner" bind:touchstart="handleTap3" capture-bind:touchstart="handleTap4">inner view</view> </view>

    如果將上面代碼中的第一個capture-bind改為capture-catch,將只觸發handleTap2。

    <view id="outer" bind:touchstart="handleTap1" capture-catch:touchstart="handleTap2">outer view<view id="inner" bind:touchstart="handleTap3" capture-bind:touchstart="handleTap4">inner view</view> </view>

    事件對象

    如無特殊說明,當組件觸發事件時,邏輯層綁定該事件的處理函數會收到一個事件對象。

    BaseEvent 基礎事件對象屬性列表:

    屬性類型說明
    typeString事件類型
    timeStampInteger事件生成時的時間戳
    targetObject觸發事件的組件的一些屬性值集合
    currentTargetObject當前組件的一些屬性值集合

    CustomEvent 自定義事件對象屬性列表(繼承 BaseEvent):

    屬性類型說明
    detailObject額外的信息

    TouchEvent 觸摸事件對象屬性列表(繼承 BaseEvent):

    屬性類型說明
    touchesArray觸摸事件,當前停留在屏幕中的觸摸點信息的數組
    changedTouchesArray觸摸事件,當前變化的觸摸點信息的數組

    特殊事件: `` 中的觸摸事件不可冒泡,所以沒有 currentTarget。

    type

    代表事件的類型。

    timeStamp

    頁面打開到觸發事件所經過的毫秒數。

    target

    觸發事件的源組件。

    屬性類型說明
    idString事件源組件的id
    tagNameString當前組件的類型
    datasetObject事件源組件上由data-開頭的自定義屬性組成的集合
    currentTarget

    事件綁定的當前組件。

    屬性類型說明
    idString當前組件的id
    tagNameString當前組件的類型
    datasetObject當前組件上由data-開頭的自定義屬性組成的集合

    說明: target 和 currentTarget 可以參考上例中,點擊 inner view 時,handleTap3 收到的事件對象 target 和 currentTarget 都是 inner,而 handleTap2 收到的事件對象 target 就是 inner,currentTarget 就是 middle。

    dataset

    在組件中可以定義數據,這些數據將會通過事件傳遞給 SERVICE。 書寫方式: 以data-開頭,多個單詞由連字符-鏈接,不能有大寫(大寫會自動轉成小寫)如data-element-type,最終在 event.currentTarget.dataset 中會將連字符轉成駝峰elementType。

    示例:

    <view data-alpha-beta="1" data-alphaBeta="2" bindtap="bindViewTap"> DataSet Test </view> Page({bindViewTap:function(event){event.currentTarget.dataset.alphaBeta === 1 // - 會轉為駝峰寫法event.currentTarget.dataset.alphabeta === 2 // 大寫會轉為小寫} })
    touches

    touches 是一個數組,每個元素為一個 Touch 對象(canvas 觸摸事件中攜帶的 touches 是 CanvasTouch 數組)。 表示當前停留在屏幕上的觸摸點。

    Touch 對象
    屬性類型說明
    identifierNumber觸摸點的標識符
    pageX, pageYNumber距離文檔左上角的距離,文檔的左上角為原點 ,橫向為X軸,縱向為Y軸
    clientX, clientYNumber距離頁面可顯示區域(屏幕除去導航條)左上角距離,橫向為X軸,縱向為Y軸
    CanvasTouch 對象
    屬性類型說明
    identifierNumber觸摸點的標識符
    x, yNumber距離 Canvas 左上角的距離,Canvas 的左上角為原點 ,橫向為X軸,縱向為Y軸
    changedTouches

    changedTouches 數據格式同 touches。 表示有變化的觸摸點,如從無變有(touchstart),位置變化(touchmove),從有變無(touchend、touchcancel)。

    detail

    自定義事件所攜帶的數據,如表單組件的提交事件會攜帶用戶的輸入,媒體的錯誤事件會攜帶錯誤信息,詳見組件定義中各個事件的定義。

    點擊事件的detail 帶有的 x, y 同 pageX, pageY 代表距離文檔左上角的距離。

    2.WSX

    WXS(WeiXin Script)是小程序的一套腳本語言,結合 WXML,可以構建出頁面的結構。

    注意

  • wxs 不依賴于運行時的基礎庫版本,可以在所有版本的小程序中運行。
  • wxs 與 javascript 是不同的語言,有自己的語法,并不和 javascript 一致。
  • wxs 的運行環境和其他 javascript 代碼是隔離的,wxs 中不能調用其他 javascript 文件中定義的函數,也不能調用小程序提供的API。
  • wxs 函數不能作為組件的事件回調。
  • 由于運行環境的差異,在 iOS 設備上小程序內的 wxs 會比 javascript 代碼快 2 ~ 20 倍。在 android 設備上二者運行效率無差異。
  • 以下是一些使用 WXS 的簡單示例:

    頁面渲染

    <!--wxml--> <wxs module="m1"> var msg = "abc";module.exports.message = msg; </wxs><view> {{m1.message}} </view>

    頁面輸出:

    abc

    數據處理

    // page.js Page({data: {array: [1, 2, 3, 4, 5, 1, 2, 3, 4]} }) <!--wxml--> <!-- 下面的 getMax 函數,接受一個數組,且返回數組中最大的元素的值 --> <wxs module="m1"> var getMax = function(array) {var max = undefined;for (var i = 0; i < array.length; ++i) {max = max === undefined ? array[i] : (max >= array[i] ? max : array[i]);}return max; }module.exports.getMax = getMax; </wxs><!-- 調用 wxs 里面的 getMax 函數,參數為 page.js 里面的 array --> <view> {{m1.getMax(array)}} </view>

    頁面輸出:

    5

    模塊

    WXS 代碼可以編寫在 wxml 文件中的 <wxs> 標簽內,或以 .wxs 為后綴名的文件內。

    每一個 .wxs 文件和 <wxs> 標簽都是一個單獨的模塊。

    每個模塊都有自己獨立的作用域。即在一個模塊里面定義的變量與函數,默認為私有的,對其他模塊不可見。

    一個模塊要想對外暴露其內部的私有變量與函數,只能通過 module.exports 實現。

    .wxs 文件

    在微信開發者工具里面,右鍵可以直接創建 .wxs 文件,在其中直接編寫 WXS 腳本。

    示例代碼:

    // /pages/comm.wxsvar foo = "'hello world' from comm.wxs"; var bar = function(d) {return d; } module.exports = {foo: foo,bar: bar };

    上述例子在 /pages/comm.wxs 的文件里面編寫了 WXS 代碼。該 .wxs 文件可以被其他的 .wxs 文件 或 WXML 中的 `` 標簽引用。

    module 對象

    每個 wxs 模塊均有一個內置的 module 對象。

    包含屬性:

    • exports: 通過該屬性,可以對外共享本模塊的私有變量與函數。

    示例代碼:

    // /pages/tools.wxsvar foo = "'abc' from tools.wxs"; var bar = function (d) {return d; } module.exports = {FOO: foo,bar: bar, }; module.exports.msg = "some msg"; <!-- page/index/index.wxml --><wxs src="./../tools.wxs" module="tools" /> <view> {{tools.msg}} </view> <view> {{tools.bar(tools.FOO)}} </view>

    頁面輸出:

    some msg 'abc' from tools.wxs

    require函數

    在.wxs模塊中引用其他 wxs 文件模塊,可以使用 require 函數。

    引用的時候,要注意如下幾點:

    • 只能引用 .wxs 文件模塊,且必須使用相對路徑。
    • wxs 模塊均為單例,wxs 模塊在第一次被引用時,會自動初始化為單例對象。多個頁面,多個地方,多次引用,使用的都是同一個 wxs 模塊對象。
    • 如果一個 wxs 模塊在定義之后,一直沒有被引用,則該模塊不會被解析與運行。

    示例代碼:

    // /pages/tools.wxsvar foo = "'abc' from tools.wxs"; var bar = function (d) {return d; } module.exports = {FOO: foo,bar: bar, }; module.exports.msg = "some msg"; // /pages/logic.wxsvar tools = require("./tools.wxs");console.log(tools.FOO); console.log(tools.bar("logic.wxs")); console.log(tools.msg); <!-- /page/index/index.wxml --><wxs src="./../logic.wxs" module="logic" />

    控制臺輸出:

    'abc' from tools.wxs logic.wxs some msg

    <wxs> 標簽

    屬性名類型說明
    moduleString當前 `` 標簽的模塊名。必填字段。
    srcString引用 .wxs 文件的相對路徑。僅當本標簽為單閉合標簽標簽的內容為空時有效。

    module 屬性

    module 屬性是當前 標簽的模塊名。在單個 wxml 文件內,建議其值唯一。有重復模塊名則按照先后順序覆蓋(后者覆蓋前者)。不同文件之間的 wxs 模塊名不會相互覆蓋。

    module 屬性值的命名必須符合下面兩個規則:

    • 首字符必須是:字母(a-zA-Z),下劃線(_)
    • 剩余字符可以是:字母(a-zA-Z),下劃線(_), 數字(0-9)

    示例代碼:

    <!--wxml--><wxs module="foo"> var some_msg = "abc"; module.exports = {msg : some_msg, } </wxs> <view> {{foo.msg}} </view>

    頁面輸出:

    abc

    上面例子聲明了一個名字為 foo 的模塊,將 some_msg 變量暴露出來,供當前頁面使用。

    src 屬性

    src 屬性可以用來引用其他的 wxs 文件模塊。

    引用的時候,要注意如下幾點:

    • 只能引用 .wxs 文件模塊,且必須使用相對路徑。
    • wxs 模塊均為單例,wxs 模塊在第一次被引用時,會自動初始化為單例對象。多個頁面,多個地方,多次引用,使用的都是同一個 wxs 模塊對象。
    • 如果一個 wxs 模塊在定義之后,一直沒有被引用,則該模塊不會被解析與運行。

    示例代碼:

    // /pages/index/index.jsPage({data: {msg: "'hello w3cSchool' from js",} }) <!-- /pages/index/index.wxml --><wxs src="./../comm.wxs" module="some_comms"></wxs> <!-- 也可以直接使用單標簽閉合的寫法 <wxs src="./../comm.wxs" module="some_comms" /> --><!-- 調用 some_comms 模塊里面的 bar 函數,且參數為 some_comms 模塊里面的 foo --> <view> {{some_comms.bar(some_comms.foo)}} </view> <!-- 調用 some_comms 模塊里面的 bar 函數,且參數為 page/index/index.js 里面的 msg --> <view> {{some_comms.bar(msg)}} </view>

    頁面輸出:

    'hello w3cschool' from comm.wxs 'hello W3CSCHOOL' from js

    上述例子在文件 /page/index/index.wxml 中通過 <wxs> 標簽引用了 /page/comm.wxs 模塊。

    注意

    • <wxs> 模塊只能在定義模塊的 WXML 文件中被訪問到。使用 <include> 或 <import> 時,<wxs> 模塊不會被引入到對應的 WXML 文件中。
    • <template> 標簽中,只能使用定義該 <template> 的 WXML 文件中定義的<wxs> 模塊。

    變量

    概念

    • WXS 中的變量均為值的引用。
    • 沒有聲明的變量直接賦值使用,會被定義為全局變量。
    • 如果只聲明變量而不賦值,則默認值為 undefined。
    • var表現與javascript一致,會有變量提升。
    var foo = 1; var bar = "hello w3cSchool"; var i; // i === undefined

    上面代碼,分別聲明了 foo、 bar、 i 三個變量。然后,foo 賦值為數值 1 ,bar 賦值為字符串 "hello w3cSchool"。

    變量名

    變量命名必須符合下面兩個規則:

    • 首字符必須是:字母(a-zA-Z),下劃線(_)
    • 剩余字符可以是:字母(a-zA-Z),下劃線(_), 數字(0-9)

    保留標識符

    以下標識符不能作為變量名:

    delete void typeofnull undefined NaN Infinity varif else true falserequirethis function arguments returnfor while do break continue switch case default

    注釋

    WXS 主要有 3 種注釋的方法。

    示例代碼:

    <!-- wxml --> <wxs module="sample"> // 方法一:單行注釋/* 方法二:多行注釋 *//* 方法三:結尾注釋。即從 /* 開始往后的所有 WXS 代碼均被注釋var a = 1; var b = 2; var c = "fake";</wxs>

    上述例子中,所有 WXS 代碼均被注釋掉了。

    方法三 和 方法二 的唯一區別是,沒有 */ 結束符。

    運算符

    基本運算符

    示例代碼:

    var a = 10, b = 20;// 加法運算 console.log(30 === a + b); // 減法運算 console.log(-10 === a - b); // 乘法運算 console.log(200 === a * b); // 除法運算 console.log(0.5 === a / b); // 取余運算 console.log(10 === a % b);
    • 加法運算(+)也可以用作字符串的拼接。
    var a = '.w' , b = 'xs';// 字符串拼接 console.log('.wxs' === a + b);

    一元運算符

    示例代碼:

    var a = 10, b = 20;// 自增運算 console.log(10 === a++); console.log(12 === ++a); // 自減運算 console.log(12 === a--); console.log(10 === --a); // 正值運算 console.log(10 === +a); // 負值運算 console.log(0-10 === -a); // 否運算 console.log(-11 === ~a); // 取反運算 console.log(false === !a); // delete 運算 console.log(true === delete a.fake); // void 運算 console.log(undefined === void a); // typeof 運算 console.log("number" === typeof a);

    位運算符

    示例代碼:

    var a = 10, b = 20;// 左移運算 console.log(80 === (a << 3)); // 無符號右移運算 console.log(2 === (a >> 2)); // 帶符號右移運算 console.log(2 === (a >>> 2)); // 與運算 console.log(2 === (a & 3)); // 異或運算 console.log(9 === (a ^ 3)); // 或運算 console.log(11 === (a | 3));

    比較運算符

    示例代碼:

    var a = 10, b = 20;// 小于 console.log(true === (a < b)); // 大于 console.log(false === (a > b)); // 小于等于 console.log(true === (a <= b)); // 大于等于 console.log(false === (a >= b));

    等值運算符

    示例代碼:

    var a = 10, b = 20;// 等號 console.log(false === (a == b)); // 非等號 console.log(true === (a != b)); // 全等號 console.log(false === (a === b)); // 非全等號 console.log(true === (a !== b));

    賦值運算符

    示例代碼:

    var a = 10;a = 10; a *= 10; console.log(100 === a); a = 10; a /= 5; console.log(2 === a); a = 10; a %= 7; console.log(3 === a); a = 10; a += 5; console.log(15 === a); a = 10; a -= 11; console.log(-1 === a); a = 10; a <<= 10; console.log(10240 === a); a = 10; a >>= 2; console.log(2 === a); a = 10; a >>>= 2; console.log(2 === a); a = 10; a &= 3; console.log(2 === a); a = 10; a ^= 3; console.log(9 === a); a = 10; a |= 3; console.log(11 === a);

    二元邏輯運算符

    示例代碼:

    var a = 10, b = 20;// 邏輯與 console.log(20 === (a && b)); // 邏輯或 console.log(10 === (a || b));

    其他運算符

    示例代碼:

    var a = 10, b = 20;//條件運算符 console.log(20 === (a >= 10 ? a + 10 : b + 10)); //逗號運算符 console.log(20 === (a, b));

    運算符優先級

    優先級運算符說明結合性
    20( … )括號n/a
    19… . …成員訪問從左到右
    … [ … ]成員訪問從左到右
    … ( … )函數調用從左到右
    17… ++后置遞增n/a
    … --后置遞減n/a
    16! …邏輯非從右到左
    ~ …按位非從右到左
    + …一元加法從右到左
    - …一元減法從右到左
    ++ …前置遞增從右到左
    -- …前置遞減從右到左
    typeof …typeof從右到左
    void …void從右到左
    delete …delete從右到左
    14… * …乘法從左到右
    … / …除法從左到右
    … % …取模從左到右
    13… + …加法從左到右
    … - …減法從左到右
    12… << …按位左移從左到右
    … >> …按位右移從左到右
    … >>> …無符號右移從左到右
    11… < …小于從左到右
    … <= …小于等于從左到右
    … > …大于從左到右
    … >= …大于等于從左到右
    10… == …等號從左到右
    … != …非等號從左到右
    … === …全等號從左到右
    … !== …非全等號從左到右
    9… & …按位與從左到右
    8… ^ …按位異或從左到右
    7… | …按位或從左到右
    6… && …邏輯與從左到右
    5… || …邏輯或從左到右
    4… ? … : …條件運算符從右到左
    3… = …賦值從右到左
    … += …賦值從右到左
    … -= …賦值從右到左
    … *= …賦值從右到左
    … /= …賦值從右到左
    … %= …賦值從右到左
    … <<= …賦值從右到左
    … >>= …賦值從右到左
    … >>>= …賦值從右到左
    … &= …賦值從右到左
    … ^= …賦值從右到左
    … |= …賦值從右到左
    0… , …逗號從左到右

    if語句

    在 WXS 中,可以使用以下格式的 if 語句 :

    • if (expression) statement : 當 expression 為 truthy 時,執行 statement。
    • if (expression) statement1 else statement2 : 當 expression 為 truthy 時,執行 statement1。 否則,執行 statement2
    • if … else if … else statementN 通過該句型,可以在 statement1 ~ statementN 之間選其中一個執行。

    示例語法:

    // if ...if (表達式) 語句;if (表達式) 語句;if (表達式) {代碼塊; }// if ... else if (表達式) 語句; else 語句;if (表達式) 語句; else 語句;if (表達式) {代碼塊; } else {代碼塊; }// if ... else if ... else ...if (表達式) {代碼塊; } else if (表達式) {代碼塊; } else if (表達式) {代碼塊; } else {代碼塊; }

    switch 語句

    示例語法:

    switch (表達式) {case 變量:語句;case 數字:語句;break;case 字符串:語句;default:語句; }
    • default 分支可以省略不寫。
    • case 關鍵詞后面只能使用:變量,數字,字符串。

    示例代碼:

    var exp = 10;switch ( exp ) { case "10":console.log("string 10");break; case 10:console.log("number 10");break; case exp:console.log("var exp");break; default:console.log("default"); }

    輸出:

    number 10

    for 語句

    示例語法:

    for (語句; 語句; 語句)語句;for (語句; 語句; 語句) {代碼塊; }
    • 支持使用 break,continue 關鍵詞。

    示例代碼:

    for (var i = 0; i < 3; ++i) {console.log(i);if( i >= 1) break; }

    輸出:

    0 1

    while 語句

    示例語法:

    while (表達式)語句;while (表達式){代碼塊; }do {代碼塊; } while (表達式)
    • 當表達式為 true 時,循環執行語句或代碼塊。
    • 支持使用 break,continue 關鍵詞。

    數據類型

    WXS 語言目前共有以下幾種數據類型:

    • number : 數值
    • string :字符串
    • boolean:布爾值
    • object:對象
    • function:函數
    • array : 數組
    • date:日期
    • regexp:正則

    number

    語法

    number 包括兩種數值:整數,小數。

    var a = 10; var PI = 3.141592653589793;

    屬性

    • constructor:返回字符串 “Number”。

    方法

    • toString
    • toLocaleString
    • valueOf
    • toFixed
    • toExponential
    • toPrecision

    以上方法的具體使用請參考 ES5 標準。

    string

    語法

    string 有兩種寫法:

    'hello world'; "hello world";

    屬性

    • constructor:返回字符串 “String”。
    • length

    除constructor外屬性的具體含義請參考 ES5 標準。

    方法

    • toString
    • valueOf
    • charAt
    • charCodeAt
    • concat
    • indexOf
    • lastIndexOf
    • localeCompare
    • match
    • replace
    • search
    • slice
    • split
    • substring
    • toLowerCase
    • toLocaleLowerCase
    • toUpperCase
    • toLocaleUpperCase
    • trim

    以上方法的具體使用請參考 ES5 標準。

    boolean

    語法

    布爾值只有兩個特定的值:true 和 false。

    屬性

    • constructor:返回字符串 “Boolean”。

    方法

    • toString
    • valueOf

    以上方法的具體使用請參考 ES5 標準。

    object

    語法

    object 是一種無序的鍵值對。使用方法如下所示:

    var o = {} //生成一個新的空對象//生成一個新的非空對象 o = {'string' : 1, //object 的 key 可以是字符串const_var : 2, //object 的 key 也可以是符合變量定義規則的標識符func : {}, //object 的 value 可以是任何類型 };//對象屬性的讀操作 console.log(1 === o['string']); console.log(2 === o.const_var);//對象屬性的寫操作 o['string']++; o['string'] += 10; o.const_var++; o.const_var += 10;//對象屬性的讀操作 console.log(12 === o['string']); console.log(13 === o.const_var);

    屬性

    • constructor:返回字符串 “Object”。
    console.log("Object" === {k:"1",v:"2"}.constructor)

    方法

    • toString:返回字符串 “[object Object]”。

    function

    語法

    function 支持以下的定義方式:

    //方法 1 function a (x) {return x; }//方法 2 var b = function (x) { return x; }

    function 同時也支持以下的語法(匿名函數,閉包等):

    var a = function (x) {return function () { return x;} }var b = a(100); console.log( 100 === b() );

    arguments

    function 里面可以使用 arguments 關鍵詞。該關鍵詞目前只支持以下的屬性:

    • length: 傳遞給函數的參數個數。
    • [index]: 通過 index 下標可以遍歷傳遞給函數的每個參數。

    示例代碼:

    var a = function(){console.log(3 === arguments.length);console.log(100 === arguments[0]);console.log(200 === arguments[1]);console.log(300 === arguments[2]); }; a(100,200,300);

    屬性

    • constructor:返回字符串 “Function”。
    • length:返回函數的形參個數。

    方法

    • toString:返回字符串 “[function Function]”。

    示例代碼:

    var func = function (a,b,c) { }console.log("Function" === func.constructor); console.log(3 === func.length); console.log("[function Function]" === func.toString());

    array

    語法

    array 支持以下的定義方式:

    var a = []; //生成一個新的空數組a = [1,"2",{},function(){}]; //生成一個新的非空數組,數組元素可以是任何類型

    屬性

    • constructor:返回字符串 “Array”。
    • length

    除constructor外屬性的具體含義請參考 ES5 標準。

    方法

    • toString
    • concat
    • join
    • pop
    • push
    • reverse
    • shift
    • slice
    • sort
    • splice
    • unshift
    • indexOf
    • lastIndexOf
    • every
    • some
    • forEach
    • map
    • filter
    • reduce
    • reduceRight

    以上方法的具體使用請參考 ES5 標準。

    date

    語法

    生成 date 對象需要使用 getDate函數, 返回一個當前時間的對象。

    getDate() getDate(milliseconds) getDate(datestring) getDate(year, month[, date[, hours[, minutes[, seconds[, milliseconds]]]]])
    • 參數milliseconds: 從1970年1月1日00:00:00 UTC開始計算的毫秒數datestring: 日期字符串,其格式為:“month day, year hours:minutes:seconds”

    示例代碼:

    var date = getDate(); //返回當前時間對象date = getDate(1500000000000); // Fri Jul 14 2017 10:40:00 GMT+0800 (中國標準時間) date = getDate('2017-7-14'); // Fri Jul 14 2017 00:00:00 GMT+0800 (中國標準時間) date = getDate(2017, 6, 14, 10, 40, 0, 0); // Fri Jul 14 2017 10:40:00 GMT+0800 (中國標準時間)

    屬性

    • constructor:返回字符串 “Date”。

    方法

    • toString
    • toDateString
    • toTimeString
    • toLocaleString
    • toLocaleDateString
    • toLocaleTimeString
    • valueOf
    • getTime
    • getFullYear
    • getUTCFullYear
    • getMonth
    • getUTCMonth
    • getDate
    • getUTCDate
    • getDay
    • getUTCDay
    • getHours
    • getUTCHours
    • getMinutes
    • getUTCMinutes
    • getSeconds
    • getUTCSeconds
    • getMilliseconds
    • getUTCMilliseconds
    • getTimezoneOffset
    • setTime
    • setMilliseconds
    • setUTCMilliseconds
    • setSeconds
    • setUTCSeconds
    • setMinutes
    • setUTCMinutes
    • setHours
    • setUTCHours
    • setDate
    • setUTCDate
    • setMonth
    • setUTCMonth
    • setFullYear
    • setUTCFullYear
    • toUTCString
    • toISOString
    • toJSON

    以上方法的具體使用請參考 ES5 標準。

    regexp

    語法

    生成 regexp 對象需要使用 getRegExp函數。

    getRegExp(pattern[, flags])
    • 參數:pattern: 正則表達式的內容。flags:修飾符。該字段只能包含以下字符:g: globali: ignoreCasem: multiline。

    示例代碼:

    var a = getRegExp("x", "img"); console.log("x" === a.source); console.log(true === a.global); console.log(true === a.ignoreCase); console.log(true === a.multiline);

    屬性

    • constructor:返回字符串 “RegExp”。
    • source
    • global
    • ignoreCase
    • multiline
    • lastIndex

    除constructor外屬性的具體含義請參考 ES5 標準。

    方法

    • exec
    • test
    • toString

    以上方法的具體使用請參考 ES5 標準。

    數據類型判斷

    constructor 屬性

    數據類型的判斷可以使用 constructor 屬性。

    示例代碼:

    var number = 10; console.log( "Number" === number.constructor );var string = "str"; console.log( "String" === string.constructor );var boolean = true; console.log( "Boolean" === boolean.constructor );var object = {}; console.log( "Object" === object.constructor );var func = function(){}; console.log( "Function" === func.constructor );var array = []; console.log( "Array" === array.constructor );var date = getDate(); console.log( "Date" === date.constructor );var regexp = getRegExp(); console.log( "RegExp" === regexp.constructor );

    typeof

    使用 typeof 也可以區分部分數據類型。

    示例代碼:

    var number = 10; var boolean = true; var object = {}; var func = function(){}; var array = []; var date = getDate(); var regexp = getRegExp();console.log( 'number' === typeof number ); console.log( 'boolean' === typeof boolean ); console.log( 'object' === typeof object ); console.log( 'function' === typeof func ); console.log( 'object' === typeof array ); console.log( 'object' === typeof date ); console.log( 'object' === typeof regexp );console.log( 'undefined' === typeof undefined ); console.log( 'object' === typeof null );

    基礎類庫

    console

    console.log 方法用于在 console 窗口輸出信息。它可以接受多個參數,將它們的結果連接起來輸出。

    Math

    屬性

    • E
    • LN10
    • LN2
    • LOG2E
    • LOG10E
    • PI
    • SQRT1_2
    • SQRT2

    以上屬性的具體使用請參考 ES5 標準。

    方法

    • abs
    • acos
    • asin
    • atan
    • atan2
    • ceil
    • cos
    • exp
    • floor
    • log
    • max
    • min
    • pow
    • random
    • round
    • sin
    • sqrt
    • tan

    以上方法的具體使用請參考 ES5 標準。

    JSON

    方法

    • stringify(object): 將 object 對象轉換為 JSON 字符串,并返回該字符串。
    • parse(string): 將 JSON 字符串轉化成對象,并返回該對象。

    示例代碼:

    console.log(undefined === JSON.stringify()); console.log(undefined === JSON.stringify(undefined)); console.log("null"===JSON.stringify(null));console.log("111"===JSON.stringify(111)); console.log('"111"'===JSON.stringify("111")); console.log("true"===JSON.stringify(true)); console.log(undefined===JSON.stringify(function(){}));console.log(undefined===JSON.parse(JSON.stringify())); console.log(undefined===JSON.parse(JSON.stringify(undefined))); console.log(null===JSON.parse(JSON.stringify(null)));console.log(111===JSON.parse(JSON.stringify(111))); console.log("111"===JSON.parse(JSON.stringify("111"))); console.log(true===JSON.parse(JSON.stringify(true)));console.log(undefined===JSON.parse(JSON.stringify(function(){})));

    Number

    屬性

    • MAX_VALUE
    • MIN_VALUE
    • NEGATIVE_INFINITY
    • POSITIVE_INFINITY

    以上屬性的具體使用請參考 ES5 標準。

    Date

    屬性

    • parse
    • UTC
    • now

    以上屬性的具體使用請參考 ES5 標準。

    Global

    屬性

    • NaN
    • Infinity
    • undefined

    以上屬性的具體使用請參考 ES5 標準。

    方法

    • parseInt
    • parseFloat
    • isNaN
    • isFinite
    • decodeURI
    • decodeURIComponent
    • encodeURI
    • encodeURIComponent

    以上方法的具體使用請參考 ES5 標準。

    3.WXSS

    WXSS(WeiXin Style Sheets)是一套樣式語言,用于描述 WXML 的組件樣式。

    WXSS 用來決定 WXML 的組件應該怎么顯示。

    為了適應廣大的前端開發者,WXSS 具有 CSS 大部分特性。同時為了更適合開發微信小程序,WXSS 對 CSS 進行了擴充以及修改。

    與 CSS 相比,WXSS 擴展的特性有:

    • 尺寸單位
    • 樣式導入

    尺寸單位

    • rpx(responsive pixel): 可以根據屏幕寬度進行自適應。規定屏幕寬為750rpx。如在 iPhone6 上,屏幕寬度為375px,共有750個物理像素,則750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。
    設備rpx換算px (屏幕寬度/750)px換算rpx (750/屏幕寬度)
    iPhone51rpx = 0.42px1px = 2.34rpx
    iPhone61rpx = 0.5px1px = 2rpx
    iPhone6 Plus1rpx = 0.552px1px = 1.81rpx

    建議: 開發微信小程序時設計師可以用 iPhone6 作為視覺稿的標準。

    注意: 在較小的屏幕上不可避免的會有一些毛刺,請在開發時盡量避免這種情況。

    樣式導入

    使用@import語句可以導入外聯樣式表,@import后跟需要導入的外聯樣式表的相對路徑,用;表示語句結束。

    示例代碼:

    /** common.wxss **/ .small-p {padding:5px; } /** app.wxss **/ @import "common.wxss"; .middle-p {padding:15px; }

    內聯樣式

    框架組件上支持使用 style、class 屬性來控制組件的樣式。

    • style:靜態的樣式統一寫到 class 中。style 接收動態的樣式,在運行時會進行解析,請盡量避免將靜態的樣式寫進 style 中,以免影響渲染速度。
    <view style="color:{{color}};" />
    • class:用于指定樣式規則,其屬性值是樣式規則中類選擇器名(樣式類名)的集合,樣式類名不需要帶上.,樣式類名之間用空格分隔。
    <view class="normal_view" />

    選擇器

    目前支持的選擇器有:

    選擇器樣例樣例描述
    .class.intro選擇所有擁有 class=“intro” 的組件
    #id#firstname選擇擁有 id=“firstname” 的組件
    elementview選擇所有 view 組件
    element, elementview, checkbox選擇所有文檔的 view 組件和所有的 checkbox 組件
    ::afterview::after在 view 組件后邊插入內容
    ::beforeview::before在 view 組件前邊插入內容

    全局樣式與局部樣式

    定義在 app.wxss 中的樣式為全局樣式,作用于每一個頁面。在 page 的 wxss 文件中定義的樣式為局部樣式,只作用在對應的頁面,并會覆蓋 app.wxss 中相同的選擇器。

    總結

    以上是生活随笔為你收集整理的微信小程序学习记录——4.框架-视图层的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    久久久久久久久黄色 | 亚洲 欧美 变态 国产 另类 | 亚洲手机天堂 | 欧美福利在线播放 | 韩国av一区二区 | 欧美一区成人 | 午夜久久久久久久 | 中文字幕频道 | 久久综合精品国产一区二区三区 | 国产成人香蕉 | 日韩精品一区二区三区三炮视频 | 色婷婷a| 日韩艹| 在线看小早川怜子av | 午夜精品久久久99热福利 | 91网址在线观看 | 天天视频亚洲 | 国产色视频一区二区三区qq号 | 天天色天天骑天天射 | 国产精品毛片久久久久久 | 国产成人三级三级三级97 | 国产在线观看h | 天天综合人人 | 中文字幕色在线视频 | 日韩av电影中文字幕在线观看 | 国产h在线播放 | 亚洲国产大片 | 精品国产一区二区三区不卡 | a黄在线观看 | 日韩欧美在线高清 | 国产第一页在线播放 | 欧美日韩在线播放一区 | 国产手机在线视频 | 精品中文字幕在线播放 | 国产精品久久嫩一区二区免费 | 人成免费网站 | 五月激情婷婷丁香 | 欧美日韩视频在线观看免费 | 国产精品电影在线 | 狠狠夜夜 | 国产精品久久一 | 黄a网站| 欧美国产不卡 | 日韩一区视频在线 | 偷拍视频一区 | 免费日韩视频 | 久久久久国产成人免费精品免费 | 色在线视频网 | 久青草视频在线观看 | 97超碰人人看| 欧美日韩一级久久久久久免费看 | 国产一级在线观看 | 欧美日韩一区二区三区在线观看视频 | 欧美久久久久久 | 成人午夜黄色影院 | 国产乱视频 | 日韩www在线 | 国产资源中文字幕 | 在线性视频日韩欧美 | 精品福利视频在线观看 | 九九九电影免费看 | free,性欧美 九九交易行官网 | 久久精品亚洲一区二区三区观看模式 | 色播亚洲婷婷 | 伊人亚洲精品 | 国产破处在线视频 | 啪啪凸凸 | 日韩精品视频免费专区在线播放 | 午夜国产福利在线 | 日韩高清一区二区 | 97超碰福利久久精品 | 久草精品视频在线看网站免费 | av7777777| 亚洲欧美日韩精品一区二区 | 西西444www大胆无视频 | 日韩有码第一页 | 天堂av在线网 | 69亚洲乱| 久久色亚洲 | 色香网| 免费在线观看成年人视频 | 最新久久免费视频 | 日韩高清免费在线 | 中文字幕一区在线 | 国产精久久 | 91麻豆精品国产自产在线 | 97精品超碰一区二区三区 | 高清不卡一区二区在线 | 五月天婷婷狠狠 | 日韩久久午夜一级啪啪 | 亚洲精品久久久久久久不卡四虎 | 狠狠色丁香婷婷综合基地 | 久久中国精品 | 色综合久久88 | av资源在线观看 | 99精品欧美一区二区三区 | 久草在线高清视频 | 天天综合网入口 | 4438全国亚洲精品在线观看视频 | 天天射天天射天天射 | 亚州激情视频 | 激情av综合| 国产91九色蝌蚪 | 亚洲污视频 | 韩国三级一区 | 最近中文字幕高清字幕免费mv | 96香蕉视频 | 涩涩网站在线播放 | 国模吧一区 | 欧美另类成人 | 日韩视频一二三区 | 黄色一级性片 | 黄a网站 | 天天天天射 | 国产精品麻豆果冻传媒在线播放 | 日日操操操 | 欧美不卡在线 | 久久刺激视频 | 国产亚洲精品久久久久久网站 | 成年人在线免费看片 | 成人免费视频免费观看 | 国产丝袜一区二区三区 | 91久久国产自产拍夜夜嗨 | 久久国产精品99久久久久久丝袜 | 在线观看 亚洲 | 99久久婷婷国产一区二区三区 | 九九免费在线观看视频 | 久久香蕉影视 | 欧美福利网站 | 四川妇女搡bbbb搡bbbb搡 | 三级a视频 | 99久久久| 欧美精品v国产精品v日韩精品 | 国产日韩在线看 | 久久69精品 | 国产va饥渴难耐女保洁员在线观看 | 国产区在线看 | 九九视频在线 | 久久久久久毛片精品免费不卡 | 中文av在线免费观看 | 五月综合激情婷婷 | 精品国产一区二区久久 | 久久久久一区 | 激情综合一区 | www五月天婷婷 | 久久人人爽人人爽人人片 | av色综合 | 亚洲国产三级在线观看 | 国产成人一区三区 | 国产精品国产三级国产不产一地 | 日韩免费不卡av | 狠狠操狠狠干2017 | 麻豆久久久 | 91资源在线 | 欧美成a人片在线观看久 | 国产精品久久久久一区二区三区 | 国产精品免费视频久久久 | 亚洲精品美女 | 国产精品美| 国产亚洲视频在线观看 | 中国一级特黄毛片大片久久 | 99视频网站 | 99精品视频在线观看 | 西西44人体做爰大胆视频 | 欧美老少交 | 一区二区视频电影在线观看 | 欧美日韩一区二区在线观看 | 黄色一级在线视频 | 久草影视在线 | 青青河边草观看完整版高清 | 99r在线 | 91成人国产 | 欧美一级黄色片 | 久久99国产精品二区护士 | 亚洲欧洲精品久久 | 免费碰碰| 天天操综合 | 久草在线在线精品观看 | 精品久久久久久综合 | 成年人免费电影在线观看 | 亚洲精品在 | 日韩在线播放视频 | 国产视频观看 | 天天操天天草 | 精品视频在线播放 | 亚洲第一中文字幕 | 亚洲一区二区精品在线 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 国产精品爽爽爽 | 在线不卡的av | 久久影院午夜论 | 成人在线视频一区 | 99国产情侣在线播放 | 五月天六月丁香 | 久久久久亚洲精品成人网小说 | 欧美成人区 | 国产va精品免费观看 | 欧美激情精品久久久久久 | 91丨九色丨91啦蝌蚪老版 | 国产糖心vlog在线观看 | 狠狠的日 | 天天色天天操综合网 | 欧美三级高清 | 欧美一级视频一区 | 久久夜夜夜 | 中文字幕在线看视频 | 日韩色视频在线观看 | 天天射天天色天天干 | av无限看 | 日韩毛片一区 | 色视频网址 | av成人动漫在线观看 | 一级一片免费观看 | 综合久久久久久久久 | 狠狠的操你 | 日韩在线观看视频一区二区三区 | 中文字幕在线播放第一页 | 久久婷五月| 色婷丁香| 亚洲天天干 | 国精产品999国精产品岳 | 久久久久久综合 | 999久久国产精品免费观看网站 | 99在线免费观看视频 | 亚洲成aⅴ人在线观看 | 日韩亚洲国产精品 | 成人av直播 | 日韩av影视在线 | 国产亚洲一级高清 | 亚洲精品在线免费播放 | 韩日色视频 | 免费av网址在线观看 | 99热这里只有精品8 久久综合毛片 | 精品国产一区二区三区久久影院 | 午夜精品导航 | 国产精品高潮久久av | 亚洲aⅴ久久精品 | 激情综合网色播五月 | 中文一区二区三区在线观看 | 99久久精品免费看国产麻豆 | 91自拍91| 天天激情综合网 | 日韩欧美xxx | 激情在线免费视频 | 亚洲一区av | 中国一级片免费看 | 国产91在线看 | 成年人在线免费看 | 六月丁香婷婷久久 | 色干干| 国产自制av| 国产黄色精品在线 | 人人玩人人添人人澡超碰 | 99视频免费播放 | 欧美日韩亚洲第一页 | 中文字幕丰满人伦在线 | 亚洲成人软件 | 亚洲一级片在线观看 | 成年人免费看片网站 | 久久精品屋 | 午夜18视频在线观看 | 国产亚州av | 天天激情站 | 在线视频中文字幕一区 | 成人免费看黄 | 五月天视频网站 | 91毛片视频| 久久精品人人做人人综合老师 | 99精品视频免费全部在线 | 高清免费在线视频 | 久久精品中文视频 | 一区二区视频在线免费观看 | 日韩毛片在线播放 | 成人av影视在线 | 国产精品久久久久久一二三四五 | 一区二区三区四区五区在线视频 | 在线av资源 | 制服丝袜在线 | 日韩一级理论片 | 99婷婷狠狠成为人免费视频 | 精品在线观看一区二区 | 精品久久一区二区三区 | 欧美日韩免费看 | 91精品国产成人观看 | 亚洲三级黄色 | 在线观看免费色 | 91精品国| 91久久偷偷做嫩草影院 | 国产一区在线免费观看视频 | 国产精品一区二区吃奶在线观看 | 亚洲精品男人天堂 | 一区免费观看 | 亚洲黄色高清 | 欧美最猛性xxxxx亚洲精品 | 五月视频 | 99久精品视频 | 亚洲精品伦理在线 | 中文av在线免费观看 | 免费久久久久久久 | 精品国产一区二区三区久久影院 | 成人免费视频网 | 日韩有色| 精品欧美一区二区三区久久久 | 精品国产区 | 亚洲精选视频免费看 | 日本黄色免费在线 | av色综合 | 综合色影院 | 日本中文乱码卡一卡二新区 | 欧美国产日韩一区二区三区 | 午夜999| 9999在线视频 | 麻豆影视网 | 99久久99视频只有精品 | 91精品视频播放 | 国产精品短视频 | 搡bbbb搡bbb视频 | 91成人区 | www.久久久久| 久久免费黄色网址 | 狠狠狠色丁香婷婷综合久久五月 | 国产无套视频 | 国产最顶级的黄色片在线免费观看 | 人人添人人 | 亚洲精品美女免费 | 天堂在线一区 | 天天插日日操 | 九九热精品视频在线观看 | 黄色三级网站在线观看 | 麻豆影视在线免费观看 | 蜜桃av人人夜夜澡人人爽 | 欧美激情视频三区 | 日韩精品短视频 | 日韩免费电影 | 深爱激情五月婷婷 | 天天射综合网视频 | 久久在现视频 | 精品一区二区在线观看 | 蜜桃av综合网 | 成人一区二区在线 | 亚洲精品久 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 欧美一区二区在线免费观看 | 九九99视频 | 久久久久久久国产精品 | 中文不卡视频在线 | 中字幕视频在线永久在线观看免费 | 日女人免费视频 | 国产精品一区二区中文字幕 | 亚洲专区 国产精品 | 日韩精品国产一区 | 国产高清成人在线 | 国产欧美精品xxxx另类 | 亚洲免费视频在线观看 | 午夜成人免费电影 | 9幺看片| 成年人视频在线免费 | 欧美日韩性生活 | 免费看久久久 | 五月婷婷.com | 国产精品久久久久久999 | 日韩在线大片 | 天天射综合网站 | 欧美久久久久久久久久 | 日韩三级av | 天天摸天天操天天舔 | 亚洲毛片一区二区三区 | 免费手机黄色网址 | 在线性视频日韩欧美 | 天天操天天射天天操 | 一区二区精品视频 | 免费日韩一区二区 | 黄色软件在线看 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 欧美日韩在线播放 | 久久草草影视免费网 | 成人在线免费小视频 | 丁香六月激情 | 视频福利在线 | 亚洲资源在线 | 91精品国产高清自在线观看 | 亚洲国产成人久久 | 在线精品视频在线观看高清 | 91免费观看视频网站 | 国产精品国产三级国产不产一地 | 九九热在线免费观看 | 亚洲国产精品电影在线观看 | 国产资源精品在线观看 | 国产不卡网站 | 亚洲精品综合一二三区在线观看 | 亚洲一区二区三区在线看 | 天天爽天天射 | a级国产乱理论片在线观看 特级毛片在线观看 | 亚洲一级片在线观看 | 在线观看免费黄视频 | 五月婷婷综合在线视频 | 天天操天天干天天综合网 | 操高跟美女 | 国产成在线观看免费视频 | 99久久影院 | 亚洲蜜桃在线 | 四虎国产精品永久在线国在线 | 一区二区不卡高清 | 视频在线观看日韩 | 国产资源免费 | 天天操天天操天天操天天操 | 99欧美视频 | 99久久精品午夜一区二区小说 | 国产精品视频99 | 最近中文字幕免费大全 | 黄色在线看网站 | 五月婷婷,六月丁香 | 91伊人久久大香线蕉蜜芽人口 | 亚洲综合在线视频 | 国产在线播放一区二区三区 | 亚洲资源网 | 国产精品久久久久久久久久了 | 国产精品免费看 | 亚洲国产中文字幕在线视频综合 | 97成人精品视频在线播放 | 中文字幕在线观看播放 | 久久亚洲私人国产精品va | 夜夜澡人模人人添人人看 | 久久久久久综合 | 国外av在线 | 亚洲91网站 | 91精品国自产在线观看欧美 | 国产一区二区在线免费视频 | 特级西西444www高清大视频 | 97成人精品视频在线观看 | 九九久久影视 | 欧美一区二区三区在线看 | h网站免费在线观看 | 久草久 | 69国产在线观看 | 99视频免费看 | a资源在线 | 天天草天天干天天射 | 日韩理论电影在线观看 | 国语自产偷拍精品视频偷 | 国产精品一区二区三区电影 | 天堂av最新网址 | 国产精品欧美久久 | 91视频成人免费 | 中文字幕在线观看第一页 | 欧美日韩中 | 欧美在线观看禁18 | 麻豆成人精品 | 国产精品入口麻豆 | 精品久久久久亚洲 | www日韩欧美 | 久久天天拍 | www久久国产 | 亚洲午夜久久久久久久久久久 | 岛国av在线不卡 | 欧美日韩电影在线播放 | 婷婷伊人综合亚洲综合网 | 黄色av影院 | 激情欧美xxxx | 一区二区三区播放 | 亚洲精品乱码久久久久v最新版 | 91丨九色丨国产在线观看 | 狠狠色噜噜狠狠狠狠 | 国产毛片在线 | 国产一级免费观看视频 | 日本高清中文字幕有码在线 | 在线 视频 一区二区 | 三级av在线| 欧美一区二区在线 | 久久久影院一区二区三区 | 五月婷婷激情综合 | 国产精品毛片一区二区 | 开心激情五月婷婷 | 五月激情亚洲 | 久久国产一区二区三区 | 久久精品超碰 | 黄色一集片 | 又色又爽又激情的59视频 | 国产五十路毛片 | 国产精品福利无圣光在线一区 | 久久久精品二区 | 国产精品2020 | 黄色av网站在线免费观看 | 中文字幕亚洲精品日韩 | 亚洲精品天天 | 国产日韩欧美在线免费观看 | 西西444www大胆高清图片 | 99热播精品| 免费看的黄色录像 | 国产成人久久 | 日韩手机在线 | 成人三级网站在线观看 | 精品九九久久 | 特及黄色片 | 日p视频在线观看 | 中文字幕资源在线 | 色婷婷视频在线 | 欧美性生活免费 | 97香蕉超级碰碰久久免费软件 | 成人精品电影 | 在线免费观看视频一区二区三区 | 欧美久久电影 | 丝袜美腿亚洲综合 | 99热这里只有精品国产首页 | 久久久久久久久久伊人 | 欧美日韩另类视频 | 国产免费视频一区二区裸体 | 国产欧美精品一区二区三区四区 | 天天综合天天做 | 天天综合网 天天综合色 | 久草在线99| 国产精品久久久久影院 | 亚洲国产精品电影 | 91在线精品视频 | 欧美日本啪啪无遮挡网站 | 五月天视频网站 | 9999国产精品 | 欧美在线视频二区 | 亚洲精品国产拍在线 | 亚洲狠狠操 | 特级西西444www大胆高清无视频 | 国产一及片 | 伊人久久精品久久亚洲一区 | 久久综合五月 | 在线国产中文字幕 | 最近中文字幕在线中文高清版 | 美女黄频在线观看 | 精品xxx | 香蕉视频4aa | 色爽网站| 伊人婷婷 | 免费在线观看一级片 | 久久一区二 | 久久精品免费观看 | 久久久国产一区二区三区 | 国产夫妻自拍av | 国产黄网站在线观看 | 国产一级精品在线观看 | 久久精品99国产精品亚洲最刺激 | 国产999精品久久久影片官网 | 日精品在线观看 | 男女激情片在线观看 | 日日夜夜天天操 | 免费看一级一片 | 久久这里只有精品视频99 | 中文免费在线观看 | 国产99中文字幕 | 色妞色视频一区二区三区四区 | 中文字幕日本在线观看 | 国产精品久久久久一区二区国产 | 国产高清精品在线 | 国产99久久久国产 | 伊人黄色网 | 欧美久久久久久久 | 久久国产精品二国产精品中国洋人 | 91九色国产蝌蚪 | 欧美性久久久久久 | 久久久www| 综合色播| 日韩不卡高清视频 | 日韩中文字幕国产 | 亚洲理论视频 | 九九免费在线视频 | 麻豆91小视频 | 国产午夜三级一区二区三桃花影视 | 欧美精选一区二区三区 | 欧美一级片在线播放 | 成人资源站 | 日本午夜免费福利视频 | 日韩精品免费一区二区 | 黄色av电影一级片 | 国产成人精品不卡 | 国产免费又粗又猛又爽 | 亚洲精品无 | 国产在线a不卡 | 91精品啪在线观看国产81旧版 | 美女视频黄网站 | 成人在线黄色 | 国产高清精品在线 | 99精品视频一区 | 久草.com| 国产黄色片在线 | 国产专区在线视频 | 久久与婷婷 | 精品亚洲va在线va天堂资源站 | 香蕉影院在线 | 国产成人在线观看免费 | 久久er99热精品一区二区 | 人人草人 | 黄色免费高清视频 | 成人a级黄色片 | 在线国产能看的 | 热九九精品 | 亚洲人人网 | 国产不卡免费av | 99性视频 | 午夜国产福利在线观看 | 99久久精品费精品 | 精品成人网 | 五月天色中色 | 黄色在线观看www | 免费黄色av电影 | 日韩91在线| 日本精品一二区 | 亚洲成人午夜av | 91大神一区二区三区 | av在线色| 99精品在线看 | 91香蕉国产在线观看软件 | 国产精品久免费的黄网站 | 在线观看激情av | 男女视频91 | 久久y| 天天躁日日躁狠狠躁av麻豆 | 成人电影毛片 | 欧美福利片在线观看 | 欧美极品在线播放 | 四虎影视成人精品国库在线观看 | 热久久这里只有精品 | 狠狠干夜夜操天天爽 | 91av在线国产 | 国产精品久久久久久久久久白浆 | www.99久久.com | 免费观看丰满少妇做爰 | 在线观看日韩中文字幕 | 狠狠天天 | 青青草国产精品 | 一区二区伦理电影 | 在线观看亚洲精品视频 | 久久国产精品成人免费浪潮 | 久久久久久久久久久久久久免费看 | 激情五月婷婷激情 | 在线免费观看国产视频 | 丁香午夜| 国产日本在线播放 | 日韩理论| 久久久久中文 | 激情网在线观看 | 欧美地下肉体性派对 | 久久久久久久久久久网站 | 亚洲一区二区三区四区在线视频 | 四虎影视国产精品免费久久 | 国产精品成人一区二区三区 | www国产亚洲精品久久网站 | 久久午夜鲁丝片 | 成人a免费 | 精品国产乱码久久久久久浪潮 | 国产精品正在播放 | 婷婷丁香色 | 黄av资源| 欧美日韩不卡一区 | 亚洲国产99| 久久久精品午夜 | 免费高清在线一区 | 国产一区欧美二区 | 精品国产aⅴ一区二区三区 在线直播av | 黄色av免费| 亚av在线 | 精品成人在线 | 精品国产1区2区3区 国产欧美精品在线观看 | 九九天堂| 欧美人zozo | 国产精品福利无圣光在线一区 | 精品999在线| 黄色成人影院 | 色婷婷综合视频在线观看 | 视频一区视频二区在线观看 | 国产精品免费观看久久 | 在线成人一区二区 | 97超碰人人 | 亚洲精品在线观看网站 | 草久草久| 中文字幕黄网 | 一二三四精品 | 亚洲午夜精品久久久 | 天堂在线视频免费观看 | 黄色软件在线观看免费 | 午夜精品久久久久久久99婷婷 | 91人人爽人人爽人人精88v | 天天干,天天操,天天射 | 香蕉视频导航 | 国产九九精品视频 | 97色综合| 色网av | 国产丝袜制服在线 | 免费看的黄网站软件 | 国产麻豆精品一区二区 | av丝袜美腿| 香蕉国产91 | 久久在线观看视频 | 香蕉久久久久久av成人 | 天天操天天干天天 | 精品久久久影院 | 国内精品久久久久影院优 | 成人精品99 | 亚洲天堂社区 | 日批视频| 中文字幕在线播放av | 成人影视免费 | 丁香综合网 | 精品久久福利 | 日韩精品免费在线观看视频 | 五月婷在线播放 | 综合国产在线 | 国产精品久久网站 | 欧美综合在线视频 | 日韩电影在线视频 | 草在线 | 91少妇精拍在线播放 | 91欧美日韩国产 | 亚洲一一在线 | 日韩av影片在线观看 | 欧美日韩视频观看 | 亚洲电影一区二区 | 国产精品99久久久久的智能播放 | 日本精品视频在线观看 | 日韩欧美国产视频 | 狠狠的操你| 精品国产免费一区二区三区五区 | 亚洲精品乱码久久久久v最新版 | 色视频在线免费 | 日日干干 | 色香天天 | 成人国产精品免费观看 | 在线蜜桃视频 | 久久精品亚洲精品国产欧美 | 91资源在线视频 | 亚洲一区二区91 | 国产一区久久 | 日韩欧美高清 | 国产中文字幕大全 | 国产护士hd高朝护士1 | 探花视频免费在线观看 | 亚洲激情影院 | 欧美一级性生活片 | 亚洲精品网站在线 | 国产精品久久久久久久毛片 | 91精品在线观看视频 | 又色又爽又黄高潮的免费视频 | 亚洲国产丝袜在线观看 | 久久国语露脸国产精品电影 | 成人久久综合 | 女人18精品一区二区三区 | av网站在线免费观看 | 激情www| 国产中文字幕91 | 在线看不卡av | 成人av影视 | 91在线入口| 美女视频永久黄网站免费观看国产 | 国产又粗又猛又黄又爽视频 | 亚洲精品国产综合久久 | 欧美福利精品 | 国产精品九色 | 国产91欧美 | 亚洲成av人片| 成人羞羞视频在线观看免费 | 狠狠色伊人亚洲综合网站色 | 一区二区三区免费播放 | 国产精品国产三级国产aⅴ9色 | 午夜色大片在线观看 | 久久中文字幕导航 | 在线综合 亚洲 欧美在线视频 | 九九热精品视频在线观看 | 五月综合在线观看 | 日韩精品一区电影 | 精品一区二区av | 日韩免费中文字幕 | 在线播放你懂 | 国产理伦在线 | 日韩小视频 | 久久系列| 一级黄色在线免费观看 | 青青五月天 | 久久天天躁狠狠躁夜夜不卡公司 | 国产精品21区 | 波多野结衣在线播放视频 | 97在线视频免费播放 | 久久99久久久久久 | 欧美在线视频日韩 | 精品国产一区二区三区久久 | 国产精品一区二区三区在线看 | 热久久国产 | 91福利视频免费观看 | 国产中文字幕视频在线观看 | 极品嫩模被强到高潮呻吟91 | 久热精品国产 | 亚洲久在线 | 免费v片 | 六月婷婷久香在线视频 | 91精品国产99久久久久久红楼 | 久久久在线视频 | 99久久精品免费看国产四区 | www.狠狠操.com | 欧美夫妻生活视频 | 亚洲精品乱码久久久久v最新版 | 久久午夜免费观看 | 国产一级二级在线播放 | 色婷婷狠狠五月综合天色拍 | 国产一级精品绿帽视频 | 黄色在线观看免费 | 久久久久久免费毛片精品 | 麻豆精品视频 | 天堂在线v | www.国产在线视频 | 伊人狠狠操 | 亚洲欧洲国产日韩精品 | 日韩欧美在线一区 | 日韩精品不卡在线观看 | 99视频这里有精品 | 久久婷婷激情 | 久久www免费视频 | 久久女教师 | 蜜臀精品久久久久久蜜臀 | 久久久91精品国产一区二区三区 | 亚洲日本va午夜在线电影 | 一区二区影院 | 久操视频在线播放 | 一本一道波多野毛片中文在线 | 91看毛片 | 91色综合 | 狠狠色丁香婷婷 | 国产精品久久久久久久久久免费看 | 九色琪琪久久综合网天天 | 日韩最新av在线 | 亚洲视频综合在线 | 成人黄在线观看 | 国产成人三级 | 国产精品美女久久 | 久久精品亚洲国产 | 日韩欧美在线视频一区二区 | 午夜免费久久看 | 91综合久久一区二区 | 欧美激情va永久在线播放 | www蜜桃视频 | 69夜色精品国产69乱 | 免费看的黄网站 | 天天摸天天舔 | 天天艹天天操 | 91亚洲精品国偷拍自产在线观看 | 夜夜操综合网 | 深爱激情av | 天天操狠狠操网站 | 99精品国产在热久久 | 国产精品日韩在线观看 | 九九热国产视频 | 亚洲区另类春色综合小说 | 日韩精品中文字幕久久臀 | 一级片视频免费观看 | 中文字幕国产在线 | 亚洲午夜精品久久久久久久久 | 激情久久影院 | 日韩久久精品一区二区三区 | 亚洲精品高清视频在线观看 | 国产黄色av网站 | 久久精品久久综合 | 国产五十路毛片 | 在线91精品 | 一区二区三区在线观看 | 亚洲 欧美 日韩 综合 | 欧美91视频 | 久青草国产在线 | 韩国一区二区三区在线观看 | 97精品国产97久久久久久免费 | 久久韩国免费视频 | 91系列在线 | 欧洲成人av | 五月婷婷免费 | 国产中文字幕在线观看 | 五月婷av | 麻豆小视频在线观看 | 久久理论影院 | 国产精品久久久999 国产91九色视频 | 中文字幕资源网在线观看 | 国产免费又爽又刺激在线观看 | 国产伦精品一区二区三区四区视频 | 碰碰影院| 免费国产在线观看 | 人人澡人摸人人添学生av | www.成人sex| 欧洲一区二区在线观看 | 国产一区二区影院 | 久久这里只有精品视频99 | 亚洲精品在线视频网站 | 99热在线精品观看 | 久久综合久久综合这里只有精品 | 国产视频导航 | 国产精品久久毛片 | 特级大胆西西4444www | 91看成人| 亚洲春色综合另类校园电影 | 97色视频在线 | 国产美女免费视频 | 日韩免费视频观看 | 日韩精品免费在线播放 | 久色网 | 国产一级免费在线观看 | 久久午夜网 | 欧美成亚洲| 狠狠色噜噜狠狠狠狠2021天天 | 欧美激情综合色 | 欧美日韩91 | 国产一区二区不卡视频 | 亚洲1级片| 天天综合色天天综合 | 日韩乱码中文字幕 | 久久9999久久免费精品国产 | 婷婷色视频 | 韩国av不卡 | 免费性网站 | 欧美精品一区二区免费 | 久久国产欧美日韩精品 | 日韩二区在线播放 | 免费在线观看日韩欧美 | 亚洲欧洲日韩在线观看 | www五月天| 久久综合九色综合97_ 久久久 | 日本一区二区免费在线观看 | 亚洲精品乱码久久久久v最新版 | 久久精品这里热有精品 | 国产午夜精品视频 | 成人av免费在线播放 | 免费观看的av网站 | 日本女人b| 超碰在线97观看 | 成人av电影免费在线观看 | 婷婷综合影院 | 在线免费观看视频一区二区三区 | 天天射天天干天天操 | 奇米四色影狠狠爱7777 | 日日干天夜夜 | 久久成人视屏 | 中日韩在线视频 | 一级欧美黄 | 五月婷婷中文网 | 中文字幕在线字幕中文 | 亚洲精品播放 | 中文字幕资源站 | 黄色小说视频在线 | 亚洲国产一区av | 果冻av在线 | 天天草天天干 | 最新日韩在线观看视频 | 丁香花在线观看免费完整版视频 | 在线视频观看亚洲 | 激情六月婷婷久久 | 国产在线播放不卡 | 蜜臀av在线一区二区三区 | 一区二区三区高清不卡 | www色网站| 最新超碰 | 国产精品久久久久一区二区 | 二区中文字幕 | 91在线免费观看网站 | 91超在线 | 亚洲午夜精品久久久 | 色视频在线免费观看 | 伊人中文在线 | 国产最新在线视频 | 玖玖视频国产 | 国内精品久久久久影院男同志 | 日韩欧美高清视频在线观看 | 精品国产三级 | 欧洲精品码一区二区三区免费看 | 国产日韩精品在线观看 | 日日夜夜精品视频天天综合网 | 欧美激情精品久久久久久免费 | 亚洲国产精品免费 | 国产无吗一区二区三区在线欢 | 精品在线亚洲视频 | 久草网站在线观看 | 九九热免费精品视频 | 色婷婷亚洲精品 | 精品国产乱码久久久久久1区2匹 | 亚洲欧洲一区二区在线观看 | 色偷偷88欧美精品久久久 | 中文字幕在线播放第一页 | 亚洲欧洲精品一区二区 | 人人看人人爱 | 日b视频国产 | 一级精品视频在线观看宜春院 | 在线观看免费国产小视频 | 日韩有码欧美 | 亚洲天堂在线观看完整版 | 成人午夜电影免费在线观看 | 六月丁香激情综合色啪小说 | 国产综合激情 | 91av视频免费在线观看 | 麻豆视频免费入口 | 亚洲黄色av | 色av男人的天堂免费在线 | 欧美少妇bbwhd | 久久人操 | 日韩欧美一区二区在线观看 | 国产视频在线看 | 91香蕉视频 mp4| 国产一区二区成人 | 91精品国产成人观看 |