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

歡迎訪問 生活随笔!

生活随笔

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

vue

uni-app 使用vue的语法+小程序的标签和API。

發布時間:2025/3/21 vue 114 豆豆
生活随笔 收集整理的這篇文章主要介紹了 uni-app 使用vue的语法+小程序的标签和API。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

開發規范

為了實現多端兼容,綜合考慮編譯速度、運行性能等因素,uni-app?約定了如下開發規范:

  • 頁面文件遵循?Vue 單文件組件 (SFC) 規范
  • 組件標簽靠近小程序規范,詳見uni-app 組件規范
  • 接口能力(JS API)靠近微信小程序規范,但需將前綴?wx?替換為?uni,詳見uni-app接口規范
  • 數據綁定及事件處理同?Vue.js?規范,同時補充了App及頁面的生命周期
  • 為兼容多端運行,建議使用flex布局進行開發

目錄結構

一個uni-app工程,默認包含如下目錄及文件:

┌─components uni-app組件目錄 │ └─comp-a.vue 可復用的a組件 ├─hybrid 存放本地網頁的目錄,詳見 ├─platforms 存放各平臺專用頁面的目錄,詳見 ├─pages 業務頁面文件存放的目錄 │ ├─index │ │ └─index.vue index頁面 │ └─list │ └─list.vue list頁面 ├─static 存放應用引用靜態資源(如圖片、視頻等)的目錄,注意:靜態資源只能存放于此 ├─wxcomponents 存放小程序組件的目錄,詳見 ├─main.js Vue初始化入口文件 ├─App.vue 應用配置,用來配置App全局樣式以及監聽 應用生命周期 ├─manifest.json 配置應用名稱、appid、logo、版本等打包信息,詳見 └─pages.json 配置頁面路由、導航條、選項卡等頁面類信息,詳見

Tips

  • static?目錄下的?js?文件不會被編譯,如果里面有?es6?的代碼,不經過轉換直接運行,在手機設備上會報錯。
  • css、less/scss?等資源同樣不要放在?static?目錄下,建議這些公用的資源放在?common?目錄下。
  • HbuilderX 1.9.0+ 支持在根目錄創建?ext.json?sitemap.json?文件。
有效目錄說明
app-plusApp
h5H5
mp-weixin微信小程序
mp-alipay支付寶小程序
mp-baidu百度小程序

資源路徑說明

模板內引入靜態資源

template內引入靜態資源,如image、video等標簽的src屬性時,可以使用相對路徑或者絕對路徑,形式如下

<!-- 絕對路徑,/static指根目錄下的static目錄,在cli項目中/static指src目錄下的static目錄 --> <image class="logo" src="/static/logo.png"></image> <image class="logo" src="@/static/logo.png"></image> <!-- 相對路徑 --> <image class="logo" src="../../static/logo.png"></image>

注意

  • @開頭的絕對路徑以及相對路徑會經過base64轉換規則校驗
  • 引入的靜態資源在非h5平臺,均不轉為base64。
  • H5平臺,小于4kb的資源會被轉換成base64,其余不轉。
  • 自HBuilderX 2.6.6-alpha起template內支持@開頭路徑引入靜態資源,舊版本不支持此方式

js文件引入

js文件或script標簽內(包括renderjs等)引入js文件時,可以使用相對路徑和絕對路徑,形式如下

// 絕對路徑,@指向項目根目錄,在cli項目中@指向src目錄 import add from '@/common/add.js' // 相對路徑 import add from '../../common/add.js'

注意

  • js文件不支持使用/開頭的方式引入

css引入靜態資源

css文件或style標簽內引入css文件時(scss、less文件同理),只能使用相對路徑

/* 絕對路徑 */ @import url('/common/uni.css'); @import url('@/common/uni.css'); /* 相對路徑 */ @import url('../../common/uni.css');

注意

  • 自HBuilderX 2.6.6-alpha起支持絕對路徑引入靜態資源,舊版本不支持此方式

css文件或style標簽內引用的圖片路徑可以使用相對路徑也可以使用絕對路徑,需要注意的是,有些小程序端css文件不允許引用本地文件(請看注意事項)。

/* 絕對路徑 */ background-image: url(/static/logo.png); background-image: url(@/static/logo.png); /* 相對路徑 */ background-image: url(../../static/logo.png);

Tips

  • 引入字體圖標請參考,字體圖標
  • @開頭的絕對路徑以及相對路徑會經過base64轉換規則校驗
  • 不支持本地圖片的平臺,小于40kb,一定會轉base64。(共四個平臺mp-weixin, mp-qq, mp-toutiao, app v2)
  • h5平臺,小于4kb會轉base64,超出4kb時不轉。
  • 其余平臺不會轉base64

生命周期

應用生命周期

uni-app?支持如下應用生命周期函數:

函數名說明
onLaunch當uni-app?初始化完成時觸發(全局只觸發一次)
onShow當?uni-app?啟動,或從后臺進入前臺顯示
onHide當?uni-app?從前臺進入后臺
onError當?uni-app?報錯時觸發
onUniNViewMessage對?nvue?頁面發送的數據進行監聽,可參考?nvue 向 vue 通訊

注意

  • 應用生命周期僅可在App.vue中監聽,在其它頁面監聽無效。
  • onlaunch里進行頁面跳轉,如遇白屏報錯,請參考https://ask.dcloud.net.cn/article/35942

頁面生命周期

uni-app?支持如下頁面生命周期函數:

函數名說明平臺差異說明最低版本
onLoad監聽頁面加載,其參數為上個頁面傳遞的數據,參數類型為Object(用于頁面傳參),參考示例??
onShow監聽頁面顯示。頁面每次出現在屏幕上都觸發,包括從下級頁面點返回露出當前頁面??
onReady監聽頁面初次渲染完成。注意如果渲染速度快,會在頁面進入動畫完成前觸發??
onHide監聽頁面隱藏??
onUnload監聽頁面卸載??
onResize監聽窗口尺寸變化App、微信小程序?
onPullDownRefresh監聽用戶下拉動作,一般用于下拉刷新,參考示例??
onReachBottom頁面上拉觸底事件的處理函數??
onTabItemTap點擊 tab 時觸發,參數為Object,具體見下方注意事項微信小程序、百度小程序、H5、App(自定義組件模式)?
onShareAppMessage用戶點擊右上角分享微信小程序、百度小程序、字節跳動小程序、支付寶小程序?
onPageScroll監聽頁面滾動,參數為Object??
onNavigationBarButtonTap監聽原生標題欄按鈕點擊事件,參數為Object5+ App、H5?
onBackPress監聽頁面返回,返回 event = {from:backbutton、 navigateBack} ,backbutton 表示來源是左上角返回按鈕或 android 返回鍵;navigateBack表示來源是 uni.navigateBack ;詳細說明及使用:onBackPress 詳解App、H5?
onNavigationBarSearchInputChanged監聽原生標題欄搜索輸入框輸入內容變化事件App、H51.6.0
onNavigationBarSearchInputConfirmed監聽原生標題欄搜索輸入框搜索事件,用戶點擊軟鍵盤上的“搜索”按鈕時觸發。App、H51.6.0
onNavigationBarSearchInputClicked監聽原生標題欄搜索輸入框點擊事件App、H51.6.0

onPageScroll?參數說明:

屬性類型說明
scrollTopNumber頁面在垂直方向已滾動的距離(單位px)

onTabItemTap?參數說明:

屬性類型說明
indexString被點擊tabItem的序號,從0開始
pagePathString被點擊tabItem的頁面路徑
textString被點擊tabItem的按鈕文字

注意

  • onTabItemTap常用于點擊當前tabitem,滾動或刷新當前頁面。如果是點擊不同的tabitem,一定會觸發頁面切換。
  • 如果想在App端實現點擊某個tabitem不跳轉頁面,不能使用onTabItemTap,可以使用plus.nativeObj.view放一個區塊蓋住原先的tabitem,并攔截點擊事件。
  • onTabItemTap在App端,從HBuilderX 1.9 的自定義組件編譯模式開始支持。

onNavigationBarButtonTap?參數說明:

屬性類型說明
indexNumber原生標題欄按鈕數組的下標

onBackPress?回調參數對象說明:

屬性類型說明
fromString觸發返回行為的來源:'backbutton'——左上角導航欄按鈕及安卓返回鍵;'navigateBack'——uni.navigateBack() 方法。
export default {data() {return {};},onBackPress(options) {console.log('from:' + options.from)} }

注意

  • nvue 頁面支持的生命周期參考:nvue 生命周期介紹。

路由

uni-app頁面路由為框架統一管理,開發者需要在pages.json里配置每個路由頁面的路徑及頁面樣式。類似小程序在app.json中配置頁面路由一樣。所以?uni-app?的路由用法與?Vue Router?不同,如仍希望采用?Vue Router?方式管理路由,可在插件市場搜索?Vue-Router。

路由跳轉

uni-app?有兩種頁面路由跳轉方式:使用navigator組件跳轉、調用API跳轉。

頁面棧

框架以棧的形式管理當前所有頁面, 當發生路由切換的時候,頁面棧的表現如下:

路由方式頁面棧表現觸發時機
初始化新頁面入棧uni-app 打開的第一個頁面
打開新頁面新頁面入棧調用 API ??uni.navigateTo??、使用組件 ?<navigator open-type="navigate"/>
頁面重定向當前頁面出棧,新頁面入棧調用 API ??uni.redirectTo??、使用組件??<navigator open-type="redirectTo"/>
頁面返回頁面不斷出棧,直到目標返回頁調用 API ?uni.navigateBack?? 、使用組件?<navigator open-type="navigateBack"/>?、用戶按左上角返回按鈕、安卓用戶點擊物理back按鍵
Tab 切換頁面全部出棧,只留下新的 Tab 頁面調用 API ?uni.switchTab? 、使用組件??<navigator open-type="switchTab"/>? 、用戶切換 Tab
重加載頁面全部出棧,只留下新的頁面調用 API ?uni.reLaunch? 、使用組件 ?<navigator open-type="reLaunch"/>

運行環境判斷

開發環境和生產環境

uni-app?可通過?process.env.NODE_ENV?判斷當前環境是開發環境還是生產環境。一般用于連接測試服務器或生產服務器的動態切換。

  • 在HBuilderX 中,點擊“運行”編譯出來的代碼是開發環境,點擊“發行”編譯出來的代碼是生產環境
  • cli模式下,是通行的編譯環境處理方式。
if(process.env.NODE_ENV === 'development'){console.log('開發環境') }else{console.log('生產環境') }

如果你需要自定義更多環境,比如測試環境:

  • 假設只需要對單一平臺配置,可以 package.json 中配置,在HBuilderX的運行和發行菜單里會多一個出來。https://uniapp.dcloud.io/collocation/package
  • 如果是針對所有平臺配置,可以在 vue-config.js 中配置。https://uniapp.dcloud.io/collocation/vue-config

快捷代碼塊

HBuilderX 中敲入代碼塊?uEnvDev、uEnvProd?可以快速生成對應?development、production?的運行環境判定代碼。

// uEnvDev if (process.env.NODE_ENV === 'development') {// TODO } // uEnvProd if (process.env.NODE_ENV === 'production') {// TODO }

判斷平臺

平臺判斷有2種場景,一種是在編譯期判斷,一種是在運行期判斷。

  • 編譯期判斷 編譯期判斷,即條件編譯,不同平臺在編譯出包后已經是不同的代碼。詳見:條件編譯
// #ifdef H5alert("只有h5平臺才有alert方法") // #endif

如上代碼只會編譯到H5的發行包里,其他平臺的包不會包含如上代碼。

  • 運行期判斷 運行期判斷是指代碼已經打入包中,仍然需要在運行期判斷平臺,此時可使用?uni.getSystemInfoSync().platform?判斷客戶端環境是 Android、iOS 還是小程序開發工具(在百度小程序開發工具、微信小程序開發工具、支付寶小程序開發工具中使用?uni.getSystemInfoSync().platform?返回值均為 devtools)。
switch(uni.getSystemInfoSync().platform){case 'android':console.log('運行Android上')break;case 'ios':console.log('運行iOS上')break;default:console.log('運行在開發者工具上')break; }

如有必要,也可以在條件編譯里自己定義一個變量,賦不同值。在后續運行代碼中動態判斷環境。

頁面樣式與布局

尺寸單位

uni-app?支持的通用 css 單位包括 px、rpx

  • px 即屏幕像素
  • rpx 即響應式px,一種根據屏幕寬度自適應的動態單位。以750寬的屏幕為基準,750rpx恰好為屏幕寬度。屏幕變寬,rpx 實際顯示效果會等比放大。

vue頁面支持普通H5單位,但在nvue里不支持:

  • rem 默認根字體大小為 屏幕寬度/20(微信小程序、字節跳動小程序、App、H5)
  • vh viewpoint height,視窗高度,1vh等于視窗高度的1%
  • vw viewpoint width,視窗寬度,1vw等于視窗寬度的1%

nvue還不支持百分比單位。

App端,在 pages.json 里的 titleNView 或頁面里寫的 plus api 中涉及的單位,只支持 px。注意此時不支持 rpx

nvue中,uni-app 模式(nvue 不同編譯模式介紹)可以使用 px 、rpx,表現與 vue 中一致。weex 模式目前遵循weex的單位,它的單位比較特殊:

  • px:,以750寬的屏幕為基準動態計算的長度單位,與 vue 頁面中的 rpx 理念相同。(一定要注意 weex 模式的 px,和 vue 里的 px 邏輯不一樣。)
  • wx:與設備屏幕寬度無關的長度單位,與 vue 頁面中的 px 理念相同

下面對?rpx?詳細說明:

設計師在提供設計圖時,一般只提供一個分辨率的圖。

嚴格按設計圖標注的 px 做開發,在不同寬度的手機上界面很容易變形。

而且主要是寬度變形。高度一般因為有滾動條,不容易出問題。由此,引發了較強的動態寬度單位需求。

微信小程序設計了 rpx 解決這個問題,uni-app?在 App 端、H5 端都支持了?rpx。

rpx 是相對于基準寬度的單位,可以根據屏幕寬度進行自適應。uni-app?規定屏幕基準寬度 750rpx。

開發者可以通過設計稿基準寬度計算頁面元素 rpx 值,設計稿 1px 與框架樣式 1rpx 轉換公式如下:

設計稿 1px / 設計稿基準寬度 = 框架樣式 1rpx / 750rpx

換言之,頁面元素寬度在?uni-app?中的寬度計算公式:

750 * 元素在設計稿中的寬度 / 設計稿基準寬度

舉例說明:

  • 若設計稿寬度為 750px,元素 A 在設計稿上的寬度為 100px,那么元素 A 在?uni-app?里面的寬度應該設為:750 * 100 / 750,結果為:100rpx。
  • 若設計稿寬度為 640px,元素 A 在設計稿上的寬度為 100px,那么元素 A 在?uni-app?里面的寬度應該設為:750 * 100 / 640,結果為:117rpx。
  • 若設計稿寬度為 375px,元素 B 在設計稿上的寬度為 200px,那么元素 B 在?uni-app?里面的寬度應該設為:750 * 200 / 375,結果為:400rpx。
  • Tips

    • 注意 rpx 是和寬度相關的單位,屏幕越寬,該值實際像素越大。如不想根據屏幕寬度縮放,則應該使用 px 單位。
    • 如果開發者在字體或高度中也使用了 rpx ,那么需注意這樣的寫法意味著隨著屏幕變寬,字體會變大、高度會變大。如果你需要固定高度,則應該使用 px 。
    • rpx不支持動態橫豎屏切換計算,使用rpx建議鎖定屏幕方向
    • 設計師可以用 iPhone6 作為視覺稿的標準。
    • 如果設計稿不是750px,HBuilderX提供了自動換算的工具,詳見:https://ask.dcloud.net.cn/article/35445。
    • App端,在 pages.json 里的 titleNView 或頁面里寫的 plus api 中涉及的單位,只支持 px,不支持 rpx。
    • 早期 uni-app 提供了 upx ,目前已經推薦統一改為 rpx 了,詳見

    樣式導入

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

    示例代碼:

    <style>@import "../../common/uni.css";.uni-card {box-shadow: none;} </style>

    內聯樣式

    框架組件上支持使用 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 組件后邊插入內容,僅微信小程序和App生效
    ::beforeview::before在 view 組件前邊插入內容,僅微信小程序和App生效

    注意:

    • 在?uni-app?中不能使用?*?選擇器。
    • page?相當于?body?節點,例如: <!-- 設置頁面背景顏色 --> page {background-color:#ccc; }

    全局樣式與局部樣式

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

    注意:

    • App.vue 中通過?@import?語句可以導入外聯樣式,一樣作用于每一個頁面。
    • nvue頁面暫不支持全局樣式

    CSS變量

    uni-app 提供內置 CSS 變量

    CSS變量描述App小程序H5
    --status-bar-height系統狀態欄高度系統狀態欄高度、nvue注意見下25px0
    --window-top內容區域距離頂部的距離00NavigationBar 的高度
    --window-bottom內容區域距離底部的距離00TabBar 的高度

    注意:

    • var(--status-bar-height)?此變量在微信小程序環境為固定?25px,在 App 里為手機實際狀態欄高度。
    • 當設置?"navigationStyle":"custom"?取消原生導航欄后,由于窗體為沉浸式,占據了狀態欄位置。此時可以使用一個高度為?var(--status-bar-height)?的 view 放在頁面頂部,避免頁面內容出現在狀態欄。
    • 由于在H5端,不存在原生導航欄和tabbar,也是前端div模擬。如果設置了一個固定位置的居底view,在小程序和App端是在tabbar上方,但在H5端會與tabbar重疊。此時可使用--window-bottom,不管在哪個端,都是固定在tabbar上方。
    • 目前 nvue 在App端,還不支持?--status-bar-height變量,替代方案是在頁面onLoad時通過uni.getSystemInfoSync().statusBarHeight獲取狀態欄高度,然后通過style綁定方式給占位view設定高度。下方提供了示例代碼

    代碼塊

    快速書寫css變量的方法是:在css中敲hei,在候選助手中即可看到3個css變量。(HBuilderX 1.9.6以上支持)

    示例1 - 普通頁面使用css變量:

    <template><!-- HBuilderX 2.6.3+ 新增 page-meta, 詳情:https://uniapp.dcloud.io/component/page-meta --><page-meta><navigation-bar /></page-meta><view><view class="status_bar"><!-- 這里是狀態欄 --></view><view> 狀態欄下的文字 </view></view> </template> <style>.status_bar {height: var(--status-bar-height);width: 100%;} </style> <template><view><view class="toTop"><!-- 這里可以放一個向上箭頭,它距離底部tabbar上浮10px--></view></view> </template> <style>.toTop {bottom: calc(var(--window-bottom) + 10px)} </style>

    示例2 - nvue頁面獲取狀態欄高度

    <template><view class="content"><view :style="{ height: iStatusBarHeight + 'px'}"></view></view> </template><script>export default {data() {return {iStatusBarHeight:0}},onLoad() {this.iStatusBarHeight = uni.getSystemInfoSync().statusBarHeight}} </script>

    固定值

    uni-app?中以下組件的高度是固定的,不可修改:

    組件描述AppH5
    NavigationBar導航欄44px44px
    TabBar底部選項卡HBuilderX 2.3.4之前為56px,2.3.4起和H5調為一致,統一為 50px。但可以自主更改高度)50px

    各小程序平臺,包括同小程序平臺的iOS和Android的高度也不一樣。

    Flex布局

    為支持跨平臺,框架建議使用Flex布局,關于Flex布局可以參考外部文檔A Complete Guide to Flexbox、阮一峰的flex教程等。

    背景圖片

    uni-app?支持使用在 css 里設置背景圖片,使用方式與普通?web?項目大體相同,但需要注意以下幾點:

    • 支持 base64 格式圖片。
    • 支持網絡路徑圖片。
    • 小程序不支持在css中使用本地文件,包括本地的背景圖和字體文件。需以base64方式方可使用。App端在v3模式以前,也有相同限制。v3編譯模式起支持直接使用本地背景圖和字體。
    • 使用本地路徑背景圖片需注意:
    • 為方便開發者,在背景圖片小于 40kb 時,uni-app?編譯到不支持本地背景圖的平臺時,會自動將其轉化為 base64 格式;
    • 圖片大于等于 40kb,會有性能問題,不建議使用太大的背景圖,如開發者必須使用,則需自己將其轉換為 base64 格式使用,或將其挪到服務器上,從網絡地址引用。
    • 本地背景圖片的引用路徑推薦使用以 ~@ 開頭的絕對路徑。 .test2 {background-image: url('~@/static/logo.png');}

    注意

    • 微信小程序不支持相對路徑(真機不支持,開發工具支持)

    字體圖標

    uni-app?支持使用字體圖標,使用方式與普通?web?項目相同,需要注意以下幾點:

    • 支持 base64 格式字體圖標。
    • 支持網絡路徑字體圖標。
    • 小程序不支持在css中使用本地文件,包括本地的背景圖和字體文件。需以base64方式方可使用。App端在v3模式以前,也有相同限制。v3編譯模式起支持直接使用本地背景圖和字體。
    • 網絡路徑必須加協議頭?https。
    • 從?http://www.iconfont.cn?上拷貝的代碼,默認是沒加協議頭的。
    • 從?http://www.iconfont.cn?上下載的字體文件,都是同名字體(字體名都叫iconfont,安裝字體文件時可以看到),在nvue內使用時需要注意,此字體名重復可能會顯示不正常,可以使用工具修改。
    • 使用本地路徑圖標字體需注意:
    • 為方便開發者,在字體文件小于 40kb 時,uni-app?會自動將其轉化為 base64 格式;
    • 字體文件大于等于 40kb,仍轉換為 base64 方式使用的話可能有性能問題,如開發者必須使用,則需自己將其轉換為 base64 格式使用,或將其挪到服務器上,從網絡地址引用;
    • 字體文件的引用路徑推薦使用以 ~@ 開頭的絕對路徑。 @font-face {font-family: test1-icon;src: url('~@/static/iconfont.ttf');}

    nvue中不可直接使用css的方式引入字體文件,需要使用以下方式在js內引入。nvue內不支持本地路徑引入字體,請使用網絡鏈接或者base64形式。src字段的url的括號內一定要使用單引號。

    var domModule = weex.requireModule('dom'); domModule.addRule('fontFace', {'fontFamily': "fontFamilyName",'src': "url('https://...')" })

    示例:

    <template><view><view><text class="test">&#xe600;</text><text class="test">&#xe687;</text><text class="test">&#xe60b;</text></view></view> </template> <style>@font-face {font-family: 'iconfont';src: url('https://at.alicdn.com/t/font_865816_17gjspmmrkti.ttf') format('truetype');}.test {font-family: iconfont;margin-left: 20rpx;} </style>

    <template/>?和?<block/>

    uni-app?支持在 template 模板中嵌套?<template/>?和?<block/>,用來進行?列表渲染?和?條件渲染。

    <template/>?和?<block/>?并不是一個組件,它們僅僅是一個包裝元素,不會在頁面中做任何渲染,只接受控制屬性。

    代碼示例

    <template><view><template v-if="test"><view>test 為 true 時顯示</view></template><template v-else><view>test 為 false 時顯示</view></template></view> </template> <template><view><block v-for="(item,index) in list" :key="index"><view>{{item}} - {{index}}</view></block></view> </template>

    ES6 支持

    uni-app 在支持絕大部分 ES6 API 的同時,也支持了 ES7 的 await/async。

    ES6 API 的支持,詳見如下表格部分(x?表示不支持,無特殊說明則表示支持):

    • 因為iOS上不允許三方js引擎,所以iOS上不區分App、小程序、H5,各端均僅依賴iOS版本。
    • 各端Android版本有差異:
    • App端的數據見下表;
    • H5端數據見caniuse;
    • 微信小程序詳見
    • 阿里小程序詳見
    • 百度小程序詳見
    • 字節跳動小程序詳見
    • QQ小程序詳見
    StringiOS8iOS9iOS10Android
    codePointAt????
    normalizexx?僅支持 NFD/NFC
    includes????
    startsWith????
    endsWith????
    repeat????
    String.fromCodePoint????
    ArrayiOS8iOS9iOS10Android
    copyWithin????
    find????
    findIndex????
    fill????
    entries????
    keys????
    valuesx??x
    includesx???
    Array.from????
    Array.of????
    NumberiOS8iOS9iOS10Android
    isFinite????
    isNaN????
    parseInt????
    parseFloat????
    isInteger????
    EPSILON????
    isSafeInteger????
    MathiOS8iOS9iOS10Android
    trunc????
    sign????
    cbrt????
    clz32????
    imul????
    fround????
    hypot????
    expm1????
    log1p????
    log10????
    log2????
    sinh????
    cosh????
    tanh????
    asinh????
    acosh????
    atanh????
    ObjectiOS8iOS9iOS10Android
    is????
    assign????
    getOwnPropertyDescriptor????
    keys????
    getOwnPropertyNames????
    getOwnPropertySymbols????
    OtheriOS8iOS9iOS10Android
    Symbol????
    Set????
    Map????
    Proxyxx?x
    Reflect????
    Promise????

    注意

    • App端Android支持不依賴Android版本號,即便是Android4.4也是上表數據。因為uni-app的js代碼運行在自帶的獨立jscore中,沒有js的瀏覽器兼容性問題。uni-app的vue頁面在Android低端機上只有css瀏覽器兼容性問題,因為vue頁面仍然渲染在webview中,受Android版本影響,太新的css語法在低版本不支持。
    • 默認不需要在微信工具里繼續開啟es6轉換。但如果用了微信的wxml自定義組件(wxcomponents目錄下),uni-app編譯器并不會處理這些文件中的es6代碼,需要去微信工具里開啟轉換。從HBuilderX調起微信工具時,如果發現工程下有wxcomponents目錄會自動配置微信工程打開es6轉換。

    NPM支持

    uni-app支持使用npm安裝第三方包。

    此文檔要求開發者們對npm有一定的了解,因此不會再去介紹npm的基本功能。如若之前未接觸過npm,請翻閱NPM官方文檔進行學習。

    初始化npm工程

    若項目之前未使用npm管理依賴(項目根目錄下無package.json文件),先在項目根目錄執行命令初始化npm工程:

    npm init -y

    cli項目默認已經有package.json了。HBuilderX創建的項目默認沒有,需要通過初始化命令來創建。

    安裝依賴

    在項目根目錄執行命令安裝npm包:

    npm install packageName --save

    使用

    安裝完即可使用npm包,js中引入npm包:

    import package from 'packageName' const package = require('packageName')

    注意

    • 為多端兼容考慮,建議優先從?uni-app插件市場?獲取插件。直接從 npm 下載庫很容易只兼容H5端。
    • 非 H5 端不支持使用含有 dom、window 等操作的 vue 組件和 js 模塊,安裝的模塊及其依賴的模塊使用的 API 必須是 uni-app 已有的?API(兼容小程序 API),比如:支持高德地圖微信小程序 SDK。類似jQuery?等庫只能用于H5端。
    • node_modules 目錄必須在項目根目錄下。不管是cli項目還是HBuilderX創建的項目。
    • 支持安裝 mpvue 組件,但npm方式不支持小程序自定義組件(如 wxml格式的vant-weapp),使用小程序自定義組件請參考:小程序組件支持。
    • 關于ui庫的獲取,詳見多端UI庫

    TypeScript 支持

    在 uni-app 中使用 ts 開發,請參考?Vue.js TypeScript 支持?說明。

    注意事項

    在 uni-app 中使用 ts 需要注意以下事項。

    在 vue 文件的 script 節點聲明 lang="ts"

    聲明?lang="ts"?后,該 vue 文件 import 進來的所有 vue 組件,均需要使用 ts 編寫。

    示例代碼

    改造 uni-badge.vue

    <script lang="ts">// 僅展示需要修改的核心代碼,完整代碼請參考原來的組件。import Vue from 'vue';export default Vue.extend({props: {type: {type: String,default: 'default'},inverted: {type: Boolean,default: false},text: {type: [String, Number],default: ''},size: {type: String,default: 'normal'}},computed: {setClass(): string {const classList: string[] = ['uni-badge-' + this.type, 'uni-badge-size-' + this.size];if (this.inverted === true) {classList.push('uni-badge-inverted')}return classList.join(" ")}},methods: {onClick() {this.$emit('click')}}}) </script>

    在 index.vue 中引用 uni-badge 組件

    <script lang="ts">import Vue from 'vue';import uniBadge from '../../components/uni-badge.vue';export default Vue.extend({data() {return {title: 'Hello'}},components:{uniBadge}}); </script>

    小程序組件支持

    uni-app?支持在 App 和 小程序 中使用小程序自定義組件,從HBuilderX2.4.7起,H5端也可以運行微信小程序組件。

    平臺差異說明

    平臺支持情況小程序組件存放目錄
    H5支持微信小程序組件(2.4.7+)wxcomponents
    App(不含nvue)支持微信小程序組件wxcomponents
    微信小程序支持微信小程序組件wxcomponents
    支付寶小程序支持支付寶小程序組件mycomponents
    百度小程序支持百度小程序組件swancomponents
    字節跳動小程序支持字節跳動小程序組件ttcomponents
    QQ小程序支持QQ小程序組件wxcomponents

    此文檔要求開發者對各端小程序的自定義組件有一定了解,沒接觸過小程序自定義組件的可以參考:

    • 微信小程序自定義組件
    • 百度小程序自定義組件
    • 支付寶小程序自定義組件
    • 字節跳動小程序自定義組件
    • QQ小程序自定義組件

    目錄結構

    ┌─wxcomponents 微信小程序自定義組件存放目錄 │ └──custom 微信小程序自定義組件 │ ├─index.js │ ├─index.wxml │ ├─index.json │ └─index.wxss ├─mycomponents 支付寶小程序自定義組件存放目錄 │ └──custom 支付寶小程序自定義組件 │ ├─index.js │ ├─index.axml │ ├─index.json │ └─index.wxss ├─swancomponents 百度小程序自定義組件存放目錄 │ └──custom 百度小程序自定義組件 │ ├─index.js │ ├─index.swan │ ├─index.json │ └─index.wxss ├─pages │ └─index │ └─index.vue │ ├─static ├─main.js ├─App.vue ├─manifest.json └─pages.json

    使用方式

    在?pages.json?對應頁面的 style -> usingComponents 引入組件:

    {"pages": [{"path": "index/index","style": {"usingComponents": {// #ifdef APP-PLUS || MP-WEIXIN || MP-QQ"custom": "/wxcomponents/custom/index"// #endif// #ifdef MP-BAIDU"custom": "/swancomponents/custom/index"// #endif// #ifdef MP-ALIPAY"custom": "/mycomponents/custom/index"// #endif}}}] }

    在頁面中使用

    <!-- 頁面模板 (index.vue) --> <view><!-- 在頁面中對自定義組件進行引用 --><custom name="uni-app"></custom> </view>

    代碼示例

    下面以微信小程序官方自定義組件示例?miniprogram-slide-view?為例演示小程序自定義組件的使用方式。 其他組件使用示例見GitHub:wxcomponents-template。 插件市場有一個完整的vant weapp?引用好的示例工程,詳見https://ext.dcloud.net.cn/plugin?id=302。

    目錄結構

    ?

    ┌─components ├─wxcomponents │ └──miniprogram-slide-view │ ├─index.js │ ├─index.wxml │ ├─index.json │ └─index.wxss │ ├─pages │ └─slide-view │ └─slide-view.vue │ ├─static ├─main.js ├─App.vue ├─manifest.json └─pages.json

    pages.json

    ?

    {"pages": [{"path": "slide-view/slide-view","style": {"navigationBarTitleText": "slide-view","usingComponents": {"slide-view": "/wxcomponents/miniprogram-slide-view/index"}}}] }

    slide-view.vue

    <template><view class='slide'><slide-view width="750" height="110" slide-width="500"><view slot="left" class="l"><image src="/static/file_transfer.jpg" class="img"></image><view class='text'><view class='title'>文件傳輸助手</view><view class='time'>7:00 PM</view></view></view><view slot="right" class="r"><view class='read'>標為已讀</view><view class='delete'>刪除</view></view></slide-view></view> </template> <script>export default {} </script> <style>.slide {border-bottom: 1px solid #DEDEDE;}.l {background-color: white;height: 110rpx;width: 750rpx;display: flex;flex-direction: row;}.r {height: 110rpx;display: flex;direction: row;text-align: center;vertical-align: middle;line-height: 110rpx;}.read {background-color: #ccc;color: #fff;width: 350rpx;}.delete {background-color: red;color: #fff;width: 150rpx;}.img {width: 90rpx;height: 90rpx;border-radius: 10rpx;margin: 10rpx 15rpx;}.text {display: flex;flex-direction: row;}.title {margin-top: 15rpx;font-size: 33rpx;}.time {margin-top: 15rpx;color: #ccc;font-size: 25rpx;margin-left: 330rpx;} </style>

    注意事項

    • 小程序組件需要放在項目特殊文件夾?wxcomponents(或 mycomponents、swancomponents)。HBuilderX 建立的工程?wxcomponents?文件夾在 項目根目錄下。vue-cli 建立的工程?wxcomponents?文件夾在?src?目錄下。可以在 vue.config.js 中自定義其他目錄
    • 小程序組件的性能,不如vue組件。使用小程序組件,需要自己手動setData,很難自動管理差量數據更新。而使用vue組件會自動diff更新差量數據。所以如無明顯必要,建議使用vue組件而不是小程序組件。比如某些小程序ui組件,完全可以用更高性能的uni ui替代。
    • 當需要在?vue?組件中使用小程序組件時,注意在?pages.json?的?globalStyle?中配置?usingComponents,而不是頁面級配置。
    • 注意數據和事件綁定的差異,使用時應按照?vue?的數據和事件綁定方式
      • 屬性綁定從?attr="{{ a }}",改為?:attr="a";從?title="復選框{{ item }}"?改為?:title="'復選框' + item"
      • 事件綁定從?bind:click="toggleActionSheet1"?改為?@click="toggleActionSheet1"
      • 阻止事件冒泡 從?catch:tap="xx"?改為?@tap.native.stop="xx"
      • wx:if?改為?v-if
      • wx:for="{{ list }}" wx:key="{{ index }}"?改為v-for="(item,index) in list"
      • 原事件命名以短橫線分隔的需要手動修改小程序組件源碼為駝峰命名,比如:this.$emit('left-click')?修改為?this.$emit('leftClick')(HBuilderX 1.9.0+ 不再需要修改此項)

    詳細的小程序轉uni-app語法差異可參考文檔https://ask.dcloud.net.cn/article/35786。

    WXS

    WXS是一套運行在視圖層的腳本語言,微信端的規范詳見。

    它的特點是運行在視圖層。當需要避免邏輯層和渲染層交互通信折損時,可采用wxs。

    uni-app可以將wxs代碼編譯到微信小程序、QQ小程序、app-vue、H5上(uni-app 2.2.5及以上版本)

    與wxs類似,百度小程序提供了Filter、阿里小程序提供了SJS,uni-app也支持使用這些功能,并將它們編譯到百度和阿里的小程序端。不過它們的功能還不如wxs強大。此外頭條系小程序自身不支持類似功能。

    平臺差異說明

    AppH5微信小程序支付寶小程序百度小程序字節跳動小程序QQ小程序
    √(不支持nvue)SJSFilterx

    App端nvue解決此類需求,不應該使用wxs,而是使用bindingx。

    wxs示例

    以下是一些使用 WXS 的簡單示例,要完整了解 WXS 語法,請參考WXS 語法參考。本示例使用wxs響應touchmove事件,減少視圖層與邏輯層通信,使滑動更加絲滑。

    <template><view><view class="area"><view @touchstart="test.touchstart" @touchmove="test.touchmove" class="movable">{{test.msg}}</view></view></view> </template> <script module="test" lang="wxs">var startX = 0var startY = 0var lastLeft = 50; var lastTop = 50function touchstart(event, ins) {console.log("touchstart")var touch = event.touches[0] || event.changedTouches[0]startX = touch.pageXstartY = touch.pageY}function touchmove(event, ins) {var touch = event.touches[0] || event.changedTouches[0]var pageX = touch.pageXvar pageY = touch.pageYvar left = pageX - startX + lastLeftvar top = pageY - startY + lastTopstartX = pageXstartY = pageYlastLeft = leftlastTop = topins.selectComponent('.movable').setStyle({left: left + 'px',top: top + 'px'})return false}module.exports = {msg: 'Hello',touchstart: touchstart,touchmove: touchmove} </script><script>export default {data() {return {}},methods: {}} </script><style> .area{position: absolute;width: 100%;height: 100%; } .movable{position: absolute;width: 100px;height: 100px;left: 50px;top: 50px;color: white;text-align: center;line-height: 100px;background-color: red; } </style>

    支付寶小程序,百度小程序官方暫未支持事件響應,不過也可以使用對應的SJS、Filter過濾器實現一些數據處理的操作,以下代碼展示了一個時間格式化的小功能

    index.vue

    <template><view><view>{{timestr}} 是</view><view>{{utils.friendlyDate(timestamp)}}</view></view> </template> <script module="utils" lang="filter" src="./utils.filter.js"></script> <script module="utils" lang="sjs" src="./utils.sjs"></script><script>export default {data() {return {timestr: '2019/08/22 10:10:10',timestamp: 0}},created() {this.timestamp = new Date(this.timestr).getTime()},methods: {}} </script>

    utils.sjs?與?utils.filter.js?內容一致

    export default {friendlyDate: (timestamp) => {var formats = {'year': '%n% 年前','month': '%n% 月前','day': '%n% 天前','hour': '%n% 小時前','minute': '%n% 分鐘前','second': '%n% 秒前',};var now = Date.now();var seconds = Math.floor((now - parseInt(timestamp)) / 1000);var minutes = Math.floor(seconds / 60);var hours = Math.floor(minutes / 60);var days = Math.floor(hours / 24);var months = Math.floor(days / 30);var years = Math.floor(months / 12);var diffType = '';var diffValue = 0;if (years > 0) {diffType = 'year';diffValue = years;} else {if (months > 0) {diffType = 'month';diffValue = months;} else {if (days > 0) {diffType = 'day';diffValue = days;} else {if (hours > 0) {diffType = 'hour';diffValue = hours;} else {if (minutes > 0) {diffType = 'minute';diffValue = minutes;} else {diffType = 'second';diffValue = seconds === 0 ? (seconds = 1) : seconds;}}}}}return formats[diffType].replace('%n%', diffValue);} }

    注意

    引入方式

    <!-- 內聯 --> <script module="test" lang="wxs">//...code </script> <script module="utils" lang="filter">//...code </script><!-- 外部引入 --> <script module="utils" lang="wxs" src="./utils.wxs"></script> <script module="utils" lang="filter" src="./utils.filter.js"></script> <script module="utils" lang="sjs" src="./utils.sjs"></script>
    • 【重要】?編寫wxs、sjs、filter.js 內容時必須遵循相應語法規范
    • 【重要】?module所指定的模塊名不可與data、methods、computed內的屬性重名
    • 目前各個小程序正在完善相關規范,可能會有較大改動,請務必仔細閱讀相應平臺的文檔
    • 支付寶小程序請使用sjs規范,詳見
    • 支付寶小程序sjs只能定義在.sjs 文件中,然后使用<script>標簽引入
    • 支付寶小程序script的標簽屬性name、from被統一為了module、src以便后續實現多平臺統一寫法
    • 百度小程序中請使用Filter規范,詳見
    • 百度小程序Filter只能導出function函數
    • 暫不支持在 wxs、sjs、filter.js 中調用其他同類型文件
    • wxs、filter.js既能內聯使用又可以外部引入,sjs只能外部引入
    • QQ小程序目前對內聯的 wxs 支持不好,部分寫法可能會導致編譯出錯,盡量使用外部引入的方式
    • 在微信自定義組件中wxcomponents也可以使用wxs
    • nvue頁面暫不支持wxs、sjs、filter.js
    • 各個script標簽會分別被打包至對應支持平臺,不需要額外寫條件編譯
    • 自HBuilderX 2.2.5開始,不推薦使用各個小程序自有的引入方式,推薦使用script標簽引入
    • App和H5端,提供了wxs的升級版,更加強大,見下面的?renderjs?章節

    renderjs

    renderjs是一個運行在視圖層的js。它比WXS更加強大。它只支持app-vue和h5。

    renderjs的主要作用有2個:

    • 大幅降低邏輯層和視圖層的通訊損耗,提供高性能視圖交互能力
    • 在視圖層操作dom,運行for web的js庫

    平臺差異說明

    AppH5微信小程序支付寶小程序百度小程序字節跳動小程序QQ小程序
    √(2.5.5+,僅支持vue,并要求v3編譯器)xxxxx

    renderjs,以 vue 組件的寫法運行在 view 層。

    使用方式

    設置 script 節點的 lang 為 renderjs

    <script module="test" lang="renderjs">export default {mounted() {// ...},methods: {// ...}} </script>

    示例

    • 通過renderjs,在app和h5端使用完整的?echarts

    功能詳解

    • 大幅降低邏輯層和視圖層的通訊損耗,提供高性能視圖交互能力

    邏輯層和視圖層分離有很多好處,但也有一個副作用是在造成了兩層之間通信阻塞。尤其是小程序和App的Android端阻塞問題影響了高性能應用的制作。

    renderjs運行在視圖層,可以直接操作視圖層的元素,避免通信折損。

    在hello uni-app的canvas示例中,App端使用了renderjs,由運行在視圖層的renderjs直接操作視圖層的canvas,實現了遠超微信小程序的流暢canvas動畫示例。具體在hello uni-app示例中體驗,對比App端和小程序端的性能差異。

    • 在視圖層操作dom,運行for web的js庫 官方不建議在uni-app里操作dom,但如果你不開發小程序,想使用一些操作了dom、window的庫,其實可以使用renderjs來解決。

    在app-vue環境下,視圖層由webview渲染,而renderjs運行在視圖層,自然可以操作dom和window。

    這是一個基于renderjs運行echart完整版的示例:renderjs版echart

    同理,f2、threejs等庫都可以這么用。

    注意事項

    • 可以使用 dom、bom API 不可直接訪問邏輯層數據
    • 視圖層和邏輯層通訊方式與?WXS?一致
    • 觀測更新的數據在 view 層可以直接訪問到
    • 不要直接引用大型類庫,推薦通過動態創建 script 方式引用
    • view 層的頁面引用資源的路徑相對于根目錄計算,例如:./static/test.js
    • 目前僅支持內聯使用

    總結

    以上是生活随笔為你收集整理的uni-app 使用vue的语法+小程序的标签和API。的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    久久综合久久八八 | 国产精品久久久久久久久久久免费看 | 激情综合网五月婷婷 | 最新国产福利 | 91视频在线国产 | 国产又粗又猛又色又黄视频 | 亚洲区精品视频 | 奇米影视在线99精品 | 日日爱影视 | 亚洲精品在线一区二区三区 | 久久久免费少妇 | 国产精品久久久久久久久久ktv | 99在线观看免费视频精品观看 | 亚洲 欧洲av| 日日夜夜网| 国产免费国产 | 亚洲一区免费在线 | 成人h在线 | 天天操天天操天天爽 | 亚洲激情视频 | 婷婷色5月 | 久久精品免费播放 | 精品国产电影 | 亚洲在线黄色 | 日本久久久亚洲精品 | 国产视频一区在线免费观看 | 久久er99热精品一区二区三区 | 成人久久| 国产亚洲精品日韩在线tv黄 | 97超碰国产精品女人人人爽 | 天天操天天拍 | 91精品国 | 在线观看国产一区二区 | 国产五月婷婷 | 久久影院一区 | 日韩欧美高清免费 | 狠色在线 | 高清精品在线 | 久日精品| 国产一区二区在线观看免费 | 午夜精品久久久久久久久久 | 欧洲激情综合 | www一起操| 亚洲特级片 | 顶级欧美色妇4khd | 国产又粗又猛又色又黄网站 | 久久国产精品久久精品国产演员表 | 首页av在线 | 高清免费在线视频 | 日韩专区 在线 | 在线精品在线 | 日韩黄色在线电影 | 久久综合9988久久爱 | 色av网站 | av片在线看 | 99视频在线精品免费观看2 | 国产成人在线观看 | av片子在线观看 | 黄色一级片视频 | 在线91色 | 天天色天天艹 | av成人资源| 国产黄大片在线观看 | 正在播放一区二区 | 国产高清一级 | 亚洲黄色一级电影 | 国产69精品久久app免费版 | 日韩综合一区二区三区 | 国产视频中文字幕 | 日韩一二三 | 97超碰国产在线 | 黄色的网站免费看 | 91在线在线观看 | 久草精品视频在线观看 | 免费日韩三级 | 国产精品自在线 | 国产精品久久久电影 | 99热精品在线观看 | 亚洲最大激情中文字幕 | av电影免费在线 | 亚洲综合黄色 | 一级片视频免费观看 | 一二三区高清 | 亚洲精品在线免费播放 | 中国一区二区视频 | 欧美日韩天堂 | 国产一区二区三区 在线 | 久久中文字幕导航 | 伊人五月天婷婷 | 新版资源中文在线观看 | 国产亚州av | 国产一二三区在线观看 | 成片免费观看视频大全 | 中文 一区二区 | 99久久网站 | 在线av资源 | 日韩久久久久久久 | 国产精品免费一区二区三区在线观看 | 三三级黄色片之日韩 | 4438全国亚洲精品观看视频 | 久久国产精品一区二区三区四区 | 91麻豆精品国产91久久久无限制版 | 欧美激情视频一二区 | 91成年人网站 | 日韩影视在线观看 | 在线免费色 | aa一级片| 欧美成人精品欧美一级乱黄 | 97超碰在线免费 | 手机在线中文字幕 | 亚洲特级片 | 久草综合视频 | 四虎影视成人精品国库在线观看 | 亚洲影院一区 | 久久成人一区 | 欧美日韩国内在线 | 黄色一级在线观看 | 欧美日韩免费一区二区三区 | 天天天操操操 | 国产精品久久一卡二卡 | 午夜精品久久久久久99热明星 | 美女视频黄是免费的 | 伊人宗合网 | 亚洲97在线| 婷婷成人亚洲综合国产xv88 | 香蕉影院在线 | 黄色在线网站噜噜噜 | 亚洲精品国产日韩 | 97人人人人 | 五月天婷亚洲天综合网鲁鲁鲁 | 久久视了 | 亚洲国产欧美在线人成大黄瓜 | 免费av网址在线观看 | 国产手机视频精品 | 亚洲成av人片在线观看www | 超碰在线人人草 | 国产原创在线视频 | 日韩免费一区二区在线观看 | 久久超| 国产精品大片免费观看 | 视频在线观看入口黄最新永久免费国产 | 日韩高清 一区 | 久久69精品久久久久久久电影好 | 免费人成在线观看 | 91精品网站在线观看 | 欧美成人精品三级在线观看播放 | 国产一级电影 | 中文字幕av免费在线观看 | 国产一级片播放 | 国产一二三在线视频 | 香蕉视频在线免费看 | 久久99国产精品二区护士 | 色中色综合 | 久久精品日产第一区二区三区乱码 | 精品国自产在线观看 | 999国内精品永久免费视频 | 国产在线精品福利 | 亚洲一级电影视频 | 99免费观看视频 | 极品美女被弄高潮视频网站 | 色婷婷伊人| 亚洲国产精品免费 | 日韩成年视频 | 欧美亚洲精品在线观看 | 四虎影视8848dvd| 欧美日韩国产一区二区三区在线观看 | 久久久电影网站 | 国产精品精品视频 | 91试看| 日本久久99 | 91片黄在线观 | 成人在线播放网站 | 在线观看91视频 | 夜夜视频欧洲 | 国产日韩欧美在线免费观看 | 中文字幕一二 | 日本三级人妇 | 国产涩涩在线观看 | 色在线观看网站 | 超碰97免费观看 | 天天干,天天射,天天操,天天摸 | 在线电影av | 久久er99热精品一区二区三区 | 久久久wwww| 国产亚洲精品久久 | 女人18精品一区二区三区 | 波多野结衣精品 | 看片黄网站 | 日日添夜夜添 | 狠狠操夜夜 | 嫩草伊人久久精品少妇av | 亚洲专区欧美专区 | 久久国产精品免费 | 久久精品国产一区二区三区 | 国产精品淫 | 97在线看片 | 久久精品久久久久电影 | 制服丝袜一区二区 | 中文字幕在线观看免费高清电影 | 成人免费在线播放视频 | a天堂最新版中文在线地址 久久99久久精品国产 | 黄色电影在线免费观看 | 天天操网站 | 欧美精品日韩 | 欧美一级视频一区 | 久久蜜臀av | 精品一区三区 | 欧美不卡视频在线 | 中文字幕日韩伦理 | 中文字幕在线观看免费高清完整版 | 伊人亚洲综合 | 色视频在线免费观看 | 综合色中色| 国产在线观看免 | 亚洲成a人片77777kkkk1在线观看 | 五月天色综合 | 7777精品伊人久久久大香线蕉 | 久久久国产精品麻豆 | 在线观看中文字幕一区二区 | 综合色在线 | 欧美精选一区二区三区 | 婷婷丁香狠狠爱 | 狠狠伊人 | 91中文在线| 免费看的黄色小视频 | 色先锋av资源中文字幕 | 亚洲伦理一区 | 国产区av在线 | 久久精品人 | 日韩综合一区二区三区 | 午夜精品一区二区三区在线播放 | 91热这里只有精品 | 国产一级视频在线观看 | 国产免费影院 | 国产精品密入口果冻 | 99中文视频在线 | 亚洲国产一区av | 久久精品国产亚洲a | 欧美有色| 最近更新的中文字幕 | 国产精品一区二区麻豆 | 青青草华人在线视频 | 久久99精品国产一区二区三区 | 九九色网 | 亚洲精品91天天久久人人 | 啪啪动态视频 | 亚洲不卡123| 午夜精品久久久久久久99 | 国产精品99精品久久免费 | 免费三级网 | 国产精品久久久久久久久久久久午夜 | 91精品国产一区二区在线观看 | 亚洲va欧美va人人爽 | 久久久久亚洲精品男人的天堂 | 午夜精品999| 亚洲综合视频在线 | 日韩精品资源 | 免费成人av网站 | 91超国产 | 99国产精品一区二区 | 欧美亚洲成人xxx | 天天色中文 | 国产精品一区二区精品视频免费看 | 美女久久久久久久 | 成人av在线网址 | 亚洲国内精品 | 伊人伊成久久人综合网站 | 麻花豆传媒mv在线观看 | 成人久久久久久久久久 | 青青河边草免费观看完整版高清 | 97超碰色| 国产男女免费完整视频 | 亚洲人天堂| 美女久久视频 | 成年人免费看av | 久久天天躁夜夜躁狠狠85麻豆 | 亚洲国产日韩欧美 | 麻豆极品 | 2023年中文无字幕文字 | 久久精品一二三区 | 伊甸园av在线 | 国产手机视频精品 | 成全在线视频免费观看 | 永久免费精品视频 | 色综合久久中文综合久久牛 | 国产精品完整版 | 国产精品久久99精品毛片三a | 日韩高清不卡在线 | 91色国产在线 | 99精品一级欧美片免费播放 | 久久无码精品一区二区三区 | av黄色在线观看 | 国产成人av网 | 亚洲高清av在线 | 亚洲精品国产日韩 | www黄在线 | 婷婷丁香色综合狠狠色 | 久久狠狠亚洲综合 | 狠狠艹夜夜干 | 亚洲精品乱码久久久久久写真 | 国产1区在线观看 | 91九色国产在线 | 黄免费在线观看 | 91x色| 亚洲免费观看视频 | 亚洲国产999 | 亚洲日本在线视频观看 | 国产精品v欧美精品v日韩 | 999成人网| 亚洲精品色视频 | 九九九在线观看 | 欧美不卡视频在线 | 五月婷婷久草 | 97碰在线视频 | 国产96在线 | 在线成人免费av | 欧美aaa大片| 青青河边草观看完整版高清 | 久久电影色 | 日韩中文字幕国产 | 色www.| 日韩中文字幕一区 | 伊人久久在线观看 | 五月亚洲婷婷 | 欧美一级网站 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 91av视频在线观看免费 | 九色视频自拍 | 免费亚洲精品视频 | 欧美日本中文字幕 | 欧美一级片在线 | 久草在线高清 | 国产午夜精品视频 | 欧美日本不卡视频 | 中文字幕观看av | 久久精品国产亚洲a | 国产一级电影 | av片子在线观看 | 国产一区二区在线免费播放 | 久草在线国产 | 国产视频亚洲视频 | 亚洲国产大片 | 日精品| 亚洲综合视频在线观看 | www.色午夜 | 在线观看国产91 | 天天草夜夜 | 欧美日韩精品久久久 | 天天操天天爱天天爽 | 日韩电影久久 | 色婷丁香 | 久久精品久久久精品美女 | 亚洲成人麻豆 | 久久成人国产精品入口 | 久久视精品 | 亚洲欧洲中文日韩久久av乱码 | 国产精品久久久久久久久婷婷 | 丝袜美腿在线播放 | 天堂网在线视频 | 亚洲视频精品 | 在线免费观看视频一区二区三区 | 国产精品视频免费在线观看 | 国产在线精品一区 | 日韩成人一级大片 | 精品在线观看一区二区三区 | 欧美色综合天天久久综合精品 | 91成人网页版 | 97在线观看免费高清 | 天天天天综合 | 日韩性久久 | 69视频国产 | 精品国产aⅴ一区二区三区 在线直播av | 国产亚洲成av人片在线观看桃 | 一区二区三区在线视频111 | 亚洲涩综合 | 久久精品系列 | 久久久久国产精品一区 | 夜夜操天天干, | 中文字幕免费播放 | 在线日韩三级 | 国产精品一区二区免费看 | 99视频 | 国产精品久久99综合免费观看尤物 | 成人资源网 | 亚洲国产人午在线一二区 | 黄色日本免费 | 国产 日韩 欧美 自拍 | 五月综合在线观看 | 欧美激情第十页 | 国产二区av | 久久夜靖品 | 天天综合导航 | 精品视频123区在线观看 | 三级黄色在线 | 不卡av电影在线观看 | 国产精品久久久久久久免费观看 | 中文字幕国产精品 | 伊人色综合网 | 国产精品视频在线观看 | 国产九九精品视频 | 亚洲无人区小视频 | 91av社区| 9999免费视频 | 国内精品免费久久影院 | 福利电影久久 | 黄色三级免费观看 | 国产不卡在线视频 | 国际精品久久 | av免费在线播放 | 超碰国产97| 国产精品成人免费一区久久羞羞 | 最近最新mv字幕免费观看 | 欧美一级片在线播放 | 亚洲精品国产精品久久99热 | 97精产国品一二三产区在线 | 麻豆91在线观看 | 美女视频免费精品 | 亚洲国产三级在线观看 | 日本中文字幕免费观看 | 天天操天天操天天操天天操天天操天天操 | 精品夜夜嗨av一区二区三区 | 69xx视频 | 国产精品va在线观看入 | 在线免费观看黄色 | 中文字幕一区二区三区在线播放 | 日韩中文字幕亚洲一区二区va在线 | 国产999精品 | 亚洲综合视频在线观看 | 国产精品电影一区二区 | 国产一级片免费播放 | 7777精品伊人久久久大香线蕉 | 韩国精品视频在线观看 | 夜添久久精品亚洲国产精品 | 91大神免费在线观看 | 国产精品毛片一区视频 | 国产精品久久久久高潮 | 99精品视频在线观看免费 | 欧美污污网站 | 日韩,中文字幕 | 久久高清免费视频 | 亚洲天堂首页 | 国产一级黄| 99热999| 999久久久久| 精品久久视频 | 久久三级毛片 | 中文字幕无吗 | 草久中文字幕 | 玖玖视频| 91九色网址 | 久久久久久久综合色一本 | av国产在线观看 | 婷婷综合在线 | 成人av在线看| 区一区二区三区中文字幕 | 97碰视频 | 日本久久成人中文字幕电影 | 色综合五月 | 亚洲爱爱视频 | 久久精品亚洲一区二区三区观看模式 | 亚洲第一区在线播放 | 免费av在线网站 | 欧美精品一区在线发布 | 在线观看亚洲成人 | 九色91在线视频 | 91精品一区二区三区久久久久久 | 亚洲综合色视频 | 欧美日韩首页 | 日日碰狠狠添天天爽超碰97久久 | 国产福利在线不卡 | 国产欧美三级 | 夜夜操天天操 | 国产一线天在线观看 | 91人人插| 天天干天天搞天天射 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 国产一性一爱一乱一交 | 国产精品日韩欧美一区二区 | 美女性爽视频国产免费app | 精品乱码一区二区三四区 | 久久久久久久久久久久久国产精品 | .国产精品成人自产拍在线观看6 | 天天综合网在线观看 | 免费视频区 | 69精品人人人人 | 久久午夜精品影院一区 | 福利一区二区 | 日韩视频1区 | 久久这里只有精品视频99 | 色欧美日韩| 亚洲精品免费看 | 大荫蒂欧美视频另类xxxx | 天天干.com | 国产日韩高清在线 | 亚洲少妇激情 | 日韩黄色大片在线观看 | 亚洲精品国偷拍自产在线观看蜜桃 | av在线播放观看 | 91在线免费观看网站 | 色99中文字幕 | 婷婷六月久久 | 久久精品资源 | 奇米网在线观看 | 成人久久综合 | 日日麻批40分钟视频免费观看 | 欧美最新另类人妖 | av免费线看 | 日韩视频www | 在线精品视频免费观看 | 久久9999久久免费精品国产 | www色,com | 99在线视频精品 | 国内久久看 | 久久精品二区 | 久久精品一区 | 日韩aⅴ视频 | 国产精品网在线观看 | 色综合天天在线 | 久久婷亚洲五月一区天天躁 | 激情开心色 | 色婷婷国产精品一区在线观看 | 久久久久伊人 | 伊人色综合久久天天 | 国产精品免费视频一区二区 | 九九免费在线看完整版 | 亚洲va欧洲va国产va不卡 | 999国内精品永久免费视频 | 97视频在线观看视频免费视频 | 91高清免费在线观看 | 成年人黄色大全 | 精品色999 | 人人舔人人爱 | 在线免费黄色av | 久久久久精| 日本性高潮视频 | 亚洲一级电影在线观看 | 高清久久久久久 | 特级黄色片免费看 | 中文在线免费一区三区 | 最近中文字幕高清字幕在线视频 | 99精品视频在线观看免费 | www.eeuss影院av撸 | aa级黄色大片 | 成人黄色在线看 | 五月婷婷网站 | 亚洲成av人片在线观看无 | 久久精品一区二区三区中文字幕 | 久久久精品高清 | 欧美日韩二区三区 | 99久久99久久精品免费 | 色在线国产 | 超碰在线公开免费 | 国产综合福利在线 | 久久精品96 | 国产一区av在线 | 国内精品久久久久久久影视简单 | 国产在线观看免费 | 在线观看亚洲国产精品 | 激情综合五月网 | 中文字幕美女免费在线 | 日本一区二区三区视频在线播放 | 日韩免费| 中文在线免费看视频 | 亚洲欧洲成人 | 一区二区三区四区五区在线 | 久久久久国产精品免费网站 | 激情五月综合 | 特黄一级毛片 | 99久久www | 国产精品亚 | 欧美精品久久久久久久久久丰满 | 免费看特级毛片 | 久艹在线播放 | 国产精品白浆视频 | 亚洲午夜小视频 | 久久免费视频在线观看 | 黄色片视频免费 | 色99中文字幕 | 日韩欧美在线观看 | 亚洲国产精品电影 | 精品夜夜嗨av一区二区三区 | 在线日韩一区 | 国产成免费视频 | 日韩在线视频精品 | 狠狠色丁香久久婷婷综 | 日韩在线视| 日韩免费电影 | 狠狠操影视 | 91色在线观看视频 | 国产精品一码二码三码在线 | 免费a现在观看 | 亚洲综合色视频在线观看 | 色悠悠久久综合 | 国产一区在线精品 | 国产精品无av码在线观看 | 美女免费视频黄 | 日韩在线国产精品 | 日韩欧美视频在线播放 | 丁香六月激情 | 国内精品视频久久 | 91香蕉嫩草| 91麻豆免费看 | 国产精品毛片一区二区 | av成人动漫在线观看 | 97视频在线播放 | 超碰免费av | 日韩欧美视频免费观看 | 国产视频69| 亚洲欧美综合精品久久成人 | 亚洲一级黄色大片 | 天天操天天操天天 | 日本不卡一区二区三区在线观看 | 麻豆影音先锋 | 欧美成人亚洲 | 91香蕉亚洲精品 | 欧美成人视 | 中文字幕在线乱 | 成人午夜精品久久久久久久3d | 丁香婷婷网| 国产精品18久久久久久久网站 | 日韩色综合 | 亚洲综合色视频在线观看 | 玖玖爱免费视频 | 国产精品色婷婷视频 | 精品国产自 | 亚洲美女免费视频 | 久久这里有精品 | 成人国产精品入口 | 伊人天天狠天天添日日拍 | 国产h在线观看 | 国产精品久久久久久久7电影 | 国产色道 | 91精品在线麻豆 | 国产视频精品在线 | 在线国产精品视频 | 91香蕉视频黄 | 欧美-第1页-屁屁影院 | 日韩字幕在线 | 国产午夜在线观看视频 | 日韩免费在线观看视频 | 又大又硬又黄又爽视频在线观看 | 91精品在线观看入口 | 国产夫妻性生活自拍 | 人人草人 | 黄色一级在线观看 | 久久午夜精品视频 | 91在线中字| 99综合视频| 成人一级在线观看 | 久久久久久蜜桃一区二区 | 97精品国产97久久久久久春色 | 日韩高清免费在线 | 91tv国产成人福利 | 日韩3区 | 国产一区二区在线免费播放 | 国产无区一区二区三麻豆 | 欧美激情综合色综合啪啪五月 | 亚洲一区视频在线播放 | 三级黄色大片在线观看 | 二区视频在线观看 | 成 人 黄 色 片 在线播放 | 久久人人97超碰com | 天堂网中文在线 | 国产中文字幕一区二区三区 | 国产精品一区二区三区电影 | 国产99黄 | 日韩在线国产精品 | 狠狠色噜噜狠狠狠狠2022 | 二区在线播放 | 久久久国产影视 | 久久艹艹 | 久久伦理视频 | 精品国产成人在线影院 | 欧亚日韩精品一区二区在线 | 久久天堂亚洲 | 亚洲在线视频免费 | 日韩黄色中文字幕 | 久久久999 | 国产亚洲精品久久久久久久久久久久 | 日韩精品一区二区三区丰满 | 国产黄色电影 | 在线免费视频a | 亚洲国产免费av | 激情在线网 | 欧美久久久久久久久中文字幕 | 午夜视频亚洲 | 欧美精品亚州精品 | 深夜免费福利在线 | 国产区网址| 国产69久久久欧美一级 | 久久久精华网 | 色综合天天爱 | 亚洲国产精品成人av | 亚洲 欧洲av| 国产第一页在线播放 | 久久久精品| 在线播放你懂 | 狠狠色丁香九九婷婷综合五月 | 国产看片免费 | 天堂av色婷婷一区二区三区 | 国产小视频在线免费观看 | 亚洲精品欧洲精品 | 久草在线在线精品观看 | 久久国产剧场电影 | 99精品毛片 | 日本精品一区二区三区在线播放视频 | 激情视频在线高清看 | 久久久激情视频 | 日日操日日操 | 日韩精品免费在线观看 | 天天干视频在线 | 亚洲精品一区二区久 | 国产91探花 | 91国内在线 | 中中文字幕av | 日韩精品黄 | 久久久福利影院 | 干干操操 | 午夜精品成人一区二区三区 | 日韩区欧美久久久无人区 | 伊人亚洲综合 | 91成人精品观看 | 麻豆国产精品视频 | 国产黄色高清 | 国产精品av免费观看 | 国产日韩欧美精品在线观看 | 五月天电影免费在线观看一区 | 91免费观看视频网站 | 91九色蝌蚪国产 | 国产一区二区精品久久 | 在线精品播放 | 骄小bbw搡bbbb揉bbbb | 日日干夜夜操视频 | 国产91探花 | 青青草国产精品 | 91热| 五月婷在线| 亚洲国产成人精品在线观看 | 久久tv| 亚洲国产成人在线播放 | 欧洲一区二区在线观看 | 日韩最新在线视频 | 久热只有精品 | 国产精品va在线观看入 | 91传媒免费观看 | 国产亚洲成人精品 | 久久无码精品一区二区三区 | 97免费视频在线 | 一区电影 | 99色在线观看 | 欧美精品做受xxx性少妇 | 国产麻豆视频 | 2024国产精品视频 | 人人射人人插 | 操操日日| 中文字幕.av.在线 | 亚洲电影成人 | 国产亚洲精品女人久久久久久 | 久草精品在线观看 | 国产亚洲小视频 | 18性欧美xxxⅹ性满足 | 综合久久五月天 | 97成人在线免费视频 | 成人国产精品久久久久久亚洲 | 91成熟丰满女人少妇 | 日日爽| 国产黄色资源 | 亚洲一区二区三区在线看 | 久久久久成人精品亚洲国产 | 美女视频黄的免费的 | 久久人人爽爽人人爽人人片av | 久草精品在线播放 | 亚洲综合成人婷婷小说 | 一本色道久久综合亚洲二区三区 | av天天色 | 一区二区欧美日韩 | 欧美日韩国产页 | 久久国产精品免费观看 | 国产精品免费久久久久影院仙踪林 | 五月婷婷狠狠 | 午夜美女视频 | 亚洲乱亚洲乱亚洲 | 欧美一级免费高清 | 日韩免费专区 | 麻豆传媒电影在线观看 | 伊人丁香 | 婷婷亚洲五月色综合 | 色多多在线观看 | 日韩av黄 | 视频一区二区精品 | 91福利视频免费 | 99精品国产99久久久久久福利 | 黄色软件视频大全免费下载 | 免费欧美 | 精品中文字幕在线观看 | 狠狠干狠狠色 | 天天草综合| 亚洲91在线 | 最近2019中文免费高清视频观看www99 | 国产乱码精品一区二区三区介绍 | 精品久久九九 | 人人澡人摸人人添学生av | 久爱综合 | 日韩在线三区 | 久操视频在线观看 | 国产精品黄色在线观看 | 91av在线播放视频 | 国产成人精品一区二区三区免费 | 久久午夜鲁丝片 | 日本中文一区二区 | 91一区啪爱嗯打偷拍欧美 | 在线 影视 一区 | 在线视频麻豆 | 99国产视频| 亚洲国产大片 | 亚洲女同videos | 国产91在线免费视频 | 日b视频国产 | 日韩影视大全 | 精品久久久久久久久中文字幕 | 玖玖在线精品 | 中文字幕制服丝袜av久久 | 精品视频在线播放 | 中文字幕中文字幕在线中文字幕三区 | 天天草天天摸 | 日日精品| 久久精彩免费视频 | 久久久久| 国产精品亚洲综合久久 | 久久天天躁狠狠躁亚洲综合公司 | 久久草草热国产精品直播 | 国产小视频网站 | 欧美成天堂网地址 | 91精品91 | 中文字幕日韩无 | 欧美日韩一区二区在线观看 | 久久精品艹 | 午夜精品视频免费在线观看 | 青青五月天 | 四虎国产精品免费观看视频优播 | 亚洲欧洲精品一区二区 | 中文字幕中文字幕在线中文字幕三区 | 国产精品网在线观看 | 久久久久99999| 国产精品久久久久久久久久ktv | 狠狠色狠狠色合久久伊人 | 婷婷亚洲五月色综合 | 永久精品视频 | 亚洲日韩精品欧美一区二区 | 日韩久久视频 | 国产精品入口传媒 | 国产成人免费网站 | 国产日韩欧美在线影视 | 国产高清av免费在线观看 | 国产精品乱码一区二区视频 | 久久91久久久久麻豆精品 | 国产精品99久久久久久人免费 | 日本精品视频在线观看 | 五月天久久 | 亚洲一区二区观看 | 日韩资源在线观看 | 黄色av网站在线观看 | 亚洲视频 视频在线 | 91探花视频 | www91在线 | 成人在线视频网 | 亚洲日本在线视频观看 | 亚洲h在线播放在线观看h | 免费黄色在线播放 | 国产一区二区成人 | 日韩黄色大片在线观看 | 97视频免费 | 日韩精品字幕 | 91丝袜美腿| 天天插日日操 | 99热这里只有精品久久 | 色婷av| 日韩网| 色天天久久 | 97视频在线观看视频免费视频 | 在线观看视频你懂 | 在线一区观看 | 91精品免费在线 | 久久视频网 | 久久婷婷色综合 | 精品国产乱码一区二区三区在线 | 中文字幕在线播放日韩 | 九九热在线精品 | 91原创在线观看 | 久久看片网站 | 国产精品wwwwww | 日韩成人邪恶影片 | 97在线播放 | 国产精品高潮久久av | 久久视频一区二区 | 久香蕉| 99久久综合精品五月天 | 午夜精品一区二区三区在线视频 | 成人黄色免费在线观看 | 蜜桃麻豆www久久囤产精品 | 国产综合在线视频 | 国产福利一区在线观看 | 丰满少妇对白在线偷拍 | 青青河边草观看完整版高清 | 亚洲欧洲成人 | 国产一级片免费播放 | 久久精品高清视频 | 在线你懂| 成人av在线直播 | 五月婷婷丁香在线观看 | 玖玖在线免费视频 | 成人午夜在线观看 | 精品一区二区三区四区在线 | 免费精品视频在线 | 久久草草热国产精品直播 | 在线观看免费成人av | 麻豆成人小视频 | 色婷婷视频在线 | 国产打女人屁股调教97 | 国内精品久久久久影院优 | 欧美成人免费在线 | 午夜视频在线观看一区二区三区 | 91九色精品国产 | 精品视频网站 | 国产乱码精品一区二区三区介绍 | 91中文在线 | 日韩在线免费 | 久久久黄视频 | 免费看一及片 | 久久a免费视频 | 色网站免费在线看 | 国产色道 | 久久午夜羞羞影院 | 国内精品视频在线播放 | 日韩中文字幕免费电影 | 一区二区三区在线免费播放 | 香蕉在线视频观看 | 免费日韩精品 | 999久久| 这里只有精品视频在线 | 成人在线中文字幕 | 亚洲综合丁香 | 91九色丨porny丨丰满6 | 欧美久久久久久久久久 | 黄色av电影在线观看 | 国产精品久久久久久久久久免费 | 99久久国产免费看 | av成人免费| 成人一级在线 | av网站在线观看播放 | 国产高清第一页 | 91福利视频久久久久 | 婷婷视频 | 97国产大学生情侣白嫩酒店 | 天天干夜夜爽 | 成人午夜在线观看 | 在线国产福利 | 天天爱天天操天天爽 | 97操操操 | 久久精品—区二区三区 | 成人av影视观看 | 99精品久久久久久久 | 精品国产aⅴ麻豆 | 亚洲91在线 | 国产精品18p| 成人亚洲精品国产www | 欧美狠狠色 | 欧美成年人在线视频 | 欧美国产日韩激情 | 91成人网页版 | 日韩av片在线 | 韩国精品福利一区二区三区 | 精品人人爽 | 国产资源网 | 日本中文不卡 | 丁香九月婷婷 | 天天做天天爱天天爽综合网 | www麻豆视频 | 91精品国产成人www | 久久久一本精品99久久精品66 | 色视频 在线| 菠萝菠萝在线精品视频 | 亚洲开心色 | 国产免费看 | 久久99久国产精品黄毛片入口 | 精品视频久久 | 日本二区三区在线 | 亚洲综合成人专区片 | 亚洲一区二区三区在线看 | 99视频导航 | 久久国产精品久久精品国产演员表 | 国产成人区 | 99亚洲国产精品 | 欧美精品久久久久久久久久丰满 | 日韩欧在线 | 在线视频欧美亚洲 | 国产精品免费观看视频 | 成年人电影免费在线观看 |