> 導語:最近開發了一個基於 uniapp 框架的項目,有一些感觸和體會,所以想記錄以下一些技術和經驗,在這裡做一個系列總結,算是對自己做一個交代吧。 ## 目錄 * 簡介 * 全局文件 * 全局組件 * 常用 API * 條件編譯 * 插件開發 ## 簡介 uniapp 是 DCloud 公司於 ...
導語:最近開發了一個基於 uniapp 框架的項目,有一些感觸和體會,所以想記錄以下一些技術和經驗,在這裡做一個系列總結,算是對自己做一個交代吧。
目錄
- 簡介
- 全局文件
- 全局組件
- 常用 API
- 條件編譯
- 插件開發
簡介
uniapp 是 DCloud 公司於 2015 年開發的一款基於 vue 的跨端框架,編寫一套代碼就可以運行到 web、小程式(各種小程式)和 app(Android 和 iOS)端,使得開發一個項目的成本很小,效率很高,方便快捷。
功能框架圖
各端運行效果
全局文件
這裡主要是兩個文件:pages.json
管理頁面路由、和manifest.json
管理應用配置。
pages.json
pages.json 文件是進行全局配置,包括頁面文件路徑、樣式、原生導航欄等內容。
以下是官網給出的配置示例:
{
"pages": [
{
"path": "pages/component/index",
"style": {
"navigationBarTitleText": "組件"
}
},
{
"path": "pages/API/index",
"style": {
"navigationBarTitleText": "介面"
}
},
{
"path": "pages/component/view/index",
"style": {
"navigationBarTitleText": "view"
}
}
],
"condition": {
//模式配置,僅開發期間生效
"current": 0, //當前激活的模式(list 的索引項)
"list": [
{
"name": "test", //模式名稱
"path": "pages/component/view/index" //啟動頁面,必選
}
]
},
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "演示",
"navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#F8F8F8",
"usingComponents": {
"collapse-tree-item": "/components/collapse-tree-item"
},
"renderingMode": "seperated", // 僅微信小程式,webrtc 無法正常時嘗試強制關閉同層渲染
"pageOrientation": "portrait", //橫屏配置,全局屏幕旋轉設置(僅 APP/微信/QQ小程式),支持 auto / portrait / landscape
"rpxCalcMaxDeviceWidth": 960,
"rpxCalcBaseDeviceWidth": 375,
"rpxCalcIncludeWidth": 750
},
"tabBar": {
"color": "#7A7E83",
"selectedColor": "#3cc51f",
"borderStyle": "black",
"backgroundColor": "#ffffff",
"height": "50px",
"fontSize": "10px",
"iconWidth": "24px",
"spacing": "3px",
"iconfontSrc": "static/iconfont.ttf", // app tabbar 字體.ttf文件路徑 app 3.4.4+
"list": [
{
"pagePath": "pages/component/index",
"iconPath": "static/image/icon_component.png",
"selectedIconPath": "static/image/icon_component_HL.png",
"text": "組件",
"iconfont": {
// 優先順序高於 iconPath,該屬性依賴 tabbar 根節點的 iconfontSrc
"text": "\ue102",
"selectedText": "\ue103",
"fontSize": "17px",
"color": "#000000",
"selectedColor": "#0000ff"
}
},
{
"pagePath": "pages/API/index",
"iconPath": "static/image/icon_API.png",
"selectedIconPath": "static/image/icon_API_HL.png",
"text": "介面"
}
],
"midButton": {
"width": "80px",
"height": "50px",
"text": "文字",
"iconPath": "static/image/midButton_iconPath.png",
"iconWidth": "24px",
"backgroundImage": "static/image/midButton_backgroundImage.png"
}
},
"easycom": {
"autoscan": true, //是否自動掃描組件
"custom": {
//自定義掃描規則
"^uni-(.*)": "@/components/uni-$1.vue"
}
},
"topWindow": {
"path": "responsive/top-window.vue",
"style": {
"height": "44px"
}
},
"leftWindow": {
"path": "responsive/left-window.vue",
"style": {
"width": "300px"
}
},
"rightWindow": {
"path": "responsive/right-window.vue",
"style": {
"width": "300px"
},
"matchMedia": {
"minWidth": 768
}
}
}
- manifest.json
manifest.json 文件是應用的配置文件,用於指定應用的名稱、圖標、許可權等內容。
以下是官網給出的配置示例:
{
"appid": "__UNI__XXXXXX,創建應用時雲端分配的,不要修改。",
"name": "應用名稱,如uni-app",
"description": "應用描述",
"versionName": "1.0.0",
"versionCode": "100",
"uniStatistics": {
"enable": false
},
"app-plus": {
"allowsInlineMediaPlayback": true, //可選,Boolean類型, 是否允許 h5 中視頻非全屏播放,3.8.5版本開始預設值為 true (僅iOS生效)
"mediaPlaybackRequiresUserAction": false, //可選,Boolean類型,可通過此屬性配置 h5中的音視頻是否可通過API自動播放,註意當設置為 false 時允許API控制自動播放,3.8.5版本開始預設值為 false(僅iOS生效 3.0.1 + 版本支持)
"nvueCompiler": "weex", //可選,字元串類型,nvue頁面編譯模式,可取值uni-app、weex,參考:https://ask.dcloud.net.cn/article/36074
"nvueStyleCompiler": "weex", //可選,字元串類型,nvue頁面樣式編譯模式,可取值uni-app、weex,參考:https://ask.dcloud.net.cn/article/38751
"renderer": "native", //可選,字元串類型,可不載入基於 webview 的運行框架,可取值native
"compilerVersion": 2, //可選,數字類型,編譯器版本,可取值2、3,參考:https://ask.dcloud.net.cn/article/36599
"nvueLaunchMode": "normal", //可選,字元串類型,nvue首頁啟動模式,compilerVersion值為3時生效,可取值normal、fast,參考:https://ask.dcloud.net.cn/article/36749
"nvue": {
//可選,JSON對象,nvue頁面相關配置
"flex-direction": "row" //可選,字元串類型,nvue頁面的flex-direction預設值,可取值row、row-reverse、column、column-reverse
},
"optimization": {
//可選,JSON對象,分包配置
"subPackages": true //可選,Boolean類型,是否開啟分包優化,參考:https://uniapp.dcloud.io/collocation/pages.html#subpackages
},
"uniStatistics": {
//可選,JSON對象,uni統計配置
"enable": true //可選,Boolean類型,是否開啟uni統計
},
"screenOrientation": [
//可選,字元串數組類型,應用支持的橫豎屏
"portrait-primary", //可選,字元串類型,支持豎屏
"portrait-secondary", //可選,字元串類型,支持反向豎屏
"landscape-primary", //可選,字元串類型,支持橫屏
"landscape-secondary" //可選,字元串類型,支持反向橫屏
],
"splashscreen": {
//可選,JSON對象,splash界面配置
"alwaysShowBeforeRender": true, //可選,Boolean類型,是否等待首頁渲染完畢後再關閉啟動界面
"autoclose": true, //可選,Boolean類型,是否自動關閉啟動界面
"waiting": true, //可選,Boolean類型,是否在程式啟動界面顯示等待雪花
"event": "loaded", //可選,字元串類型,可取值titleUpdate、rendering、loaded,uni-app項目已廢棄
"target": "defalt", //可選,字元串類型,可取值default、second,uni-app項目已廢棄
"dealy": 0, //可選,數字類型,延遲自動關閉啟動時間,單位為毫秒,uni-app項目已廢棄
"ads": {
//可選,JSON對象,開屏廣告配置
"backaground": "#RRGGBB", //可選,字元串類型,格式為#RRGGBB,開屏廣告背景顏色
"image": "" //可選,字元串類型,底部圖片地址,相對應用資源目錄路徑
},
"androidTranslucent": false //可選,Boolean類型,使用“自定義啟動圖”啟動界面時是否顯示透明過渡界面,可解決點擊桌面圖標延時啟動應用的效果
},
"modules": {
//可選,JSON對象,使用的模塊
"Bluetooth": {
//可選,JSON對象,Bluetooth(低功耗藍牙)
"description": "低功耗藍牙"
},
"Contacts": {
//可選,JSON對象,Contact(通訊錄)
"description": "通訊錄"
},
"FaceID": {
//可選,JSON對象,FaceID(人臉識別),僅iOS支持
"description": "人臉識別"
},
"Fingerprint": {
//可選,JSON對象,Fingerprint(指紋識別)
"description": "指紋識別"
},
"Geolocation": {
//可選,JSON對象,Geolocation(定位)
"description": "定位"
},
"iBeacon": {
//可選,JSON對象,iBeacon
"description": "iBeacon"
},
"LivePusher": {
//可選,JSON對象,LivePusher(直播推流)
"description": "直播推流"
},
"Maps": {
//可選,JSON對象,Maps(地圖)
"description": "地圖"
},
"Messaging": {
//可選,JSON對象,Messaging(短彩郵件消息)
"description": "短彩郵件消息"
},
"OAuth": {
//可選,JSON對象,OAuth(登錄鑒權)
"description": "登錄鑒權"
},
"Payment": {
//可選,JSON對象,Payment(支付)
"description": "iBeacon"
},
"Push": {
//可選,JSON對象,Push(消息推送)
"description": "iBeacon"
},
"Share": {
//可選,JSON對象,Share(分享)
"description": "iBeacon"
},
"Speech": {
//可選,JSON對象,Speech(語音輸入)
"description": "iBeacon"
},
"Statistic": {
//可選,JSON對象,Statistic(統計)
"description": "iBeacon"
},
"SQLite": {
//可選,JSON對象,SQLite(統計)
"description": "iBeacon"
},
"VideoPlayer": {
//可選,JSON對象,VideoPlayer(視頻播放)
"description": "iBeacon"
},
"Webview-x5": {
//可選,JSON對象,Android X5 Webview(騰訊TBS),僅Android支持
"description": "iBeacon"
},
"UIWebview": {
//可選,JSON對象,UIWebview,僅iOS支持
"description": "iBeacon"
}
},
"webView": {
// 3.5.0 + 當系統webview低於指定版本時,會彈出提示。或者下載x5內核後繼續啟動,僅Android支持
"minUserAgentVersion": "95.0.4638.75", // 最小webview版本
"x5": {
// 此屬性需要勾選 Android X5 Webview 模塊,詳細參見下麵的說明
"timeOut": 3000, // 超時時間
"showTipsWithoutWifi": true, // 是否在非WiFi網路環境時,顯示用戶確認下載x5內核的彈窗。
"allowDownloadWithoutWiFi": false // 是否允許用戶在非WiFi網路時進行x5內核的下載。(如果為true,就不會顯示用戶確認的彈窗。)
}
},
"checkPermissionDenied": false, // 是否校驗已拒絕許可權 如果拒絕則不會再申請 預設false 不校驗已拒絕許可權
"distribute": {
//必選,JSON對象,雲端打包配置
"android": {
//可選,JSON對象,Android平臺雲端打包配置
"packagename": "", //必填,字元串類型,Android包名
"keystore": "", //必填,字元串類型,Android簽名證書文件路徑
"password": "", //必填,字元串類型,Android簽名證書文件的密碼
"aliasname": "", //必填,字元串類型,Android簽名證書別名
"schemes": "", //可選,字元串類型,參考:https://uniapp.dcloud.io/tutorial/app-android-schemes
"abiFilters": [
//可選,字元串數組類型,參考:https://uniapp.dcloud.io/tutorial/app-android-abifilters
"armeabi-v7a",
"arm64-v8a",
"x86",
"x86_64"
],
"permissions": [
//可選,字元串數組類型,Android許可權配置
"<uses-feature android:name=\"android.hardware.camera\"/>"
],
"custompermissions": false, //可選,Boolean類型,是否自定義Android許可權配置
"permissionExternalStorage": {
//可選,JSON對象,Android平臺應用啟動時申請讀寫手機存儲許可權策略
"request": "always", //必填,字元串類型,申請讀寫手機存儲許可權策略,可取值none、once、always
"prompt": "" //可選,字元串類型,當request設置為always值用戶拒絕時彈出提示框上的內容
},
"permissionPhoneState": {
//可選,JSON對象,Android平臺應用啟動時申請讀取設備信息許可權配置
"request": "always", //必填,字元串類型,申請讀取設備信息許可權策略,可取值none、once、always
"prompt": "" //可選,字元串類型,當request設置為always值用戶拒絕時彈出提示框上的內容
},
"minSdkVersion": 21, //可選,數字類型,Android平臺最低支持版本,參考:https://uniapp.dcloud.io/tutorial/app-android-minsdkversion
"targetSdkVersion": 30, //可選,數字類型,Android平臺目標版本,參考:https://uniapp.dcloud.io/tutorial/app-android-targetsdkversion
"packagingOptions": [
//可選,字元串數組類型,Android平臺雲端打包時build.gradle的packagingOptions配置項
"doNotStrip '*/armeabi-v7a/*.so'",
"merge '**/LICENSE.txt'"
],
"jsEngine": "v8", //可選,字元串類型,uni-app使用的JS引擎,可取值v8、jsc
"debuggable": false, //可選,Boolean類型,是否開啟Android調試開關
"locale": "default", //可選,應用的語言
"forceDarkAllowed": false, //可選,Boolean類型,是否強制允許暗黑模式
"resizeableActivity": false, //可選,Boolean類型,是否支持分屏調整視窗大小
"hasTaskAffinity": false, //可選,Boolean類型,是否設置android:taskAffinity
"buildFeatures": {
//(HBuilderX3.5.0+版本支持)可選,JSON對象,Android平臺雲端打包時build.gradle的buildFeatures配置項
"dataBinding": false, //可選,Boolean類型,是否設置dataBinding
"viewBinding": false //可選,Boolean類型,是否設置viewBinding
}
},
"ios": {
//可選,JSON對象,iOS平臺雲端打包配置
"appid": "", //必填,字元串類型,iOS平臺Bundle ID
"mobileprovision": "", //必填,字元串類型,iOS打包使用的profile文件路徑
"p12": "", //必填,字元串類型,iOS打包使用的證書文件路徑
"password": "", //必填,字元串類型,iOS打包使用的證書密碼
"devices": "iphone", //必填,字元串類型,iOS支持的設備類型,可取值iphone、ipad、universal
"urlschemewhitelist": "baidumap", //可選,字元串類型,應用訪問白名單列表,參考:https://uniapp.dcloud.io/tutorial/app-ios-schemewhitelist
"urltypes": "", //可選,字元串類型,參考:https://uniapp.dcloud.io/tutorial/app-ios-schemes
"UIBackgroundModes": "audio", //可選,字元串類型,應用後臺運行模式,參考:https://uniapp.dcloud.io/tutorial/app-ios-uibackgroundmodes
"frameworks": [
//可選,字元串數組類型,依賴的系統庫,已廢棄,推薦使用uni原生插件擴展使用系統依賴庫
"CoreLocation.framework"
],
"deploymentTarget": "10.0", //可選,字元串類型,iOS支持的最低版本
"privacyDescription": {
//可選,JSON對象,iOS隱私信息訪問的許可描述
"NSPhotoLibraryUsageDescription": "", //可選,字元串類型,系統相冊讀取許可權描述
"NSPhotoLibraryAddUsageDescription": "", //可選,字元串類型,系統相冊寫入許可權描述
"NSCameraUsageDescription": "", //可選,字元串類型,攝像頭使用許可權描述
"NSMicrophoneUsageDescription": "", //可選,字元串類型,麥克風使用許可權描述
"NSLocationWhenInUseUsageDescription": "", //可選,字元串類型,運行期訪問位置許可權描述
"NSLocationAlwaysUsageDescription": "", //可選,字元串類型,後臺運行訪問位置許可權描述
"NSLocationAlwaysAndWhenInUseUsageDescription": "", //可選,字元串類型,運行期後後臺訪問位置許可權描述
"NSCalendarsUsageDescription": "", //可選,字元串類型,使用日曆許可權描述
"NSContactsUsageDescription": "", //可選,字元串類型,使用通訊錄許可權描述
"NSBluetoothPeripheralUsageDescription": "", //可選,字元串類型,使用藍牙許可權描述
"NSBluetoothAlwaysUsageDescription": "", //可選,字元串類型,後臺使用藍牙許可權描述
"NSSpeechRecognitionUsageDescription": "", //可選,字元串類型,系統語音識別許可權描述
"NSRemindersUsageDescription": "", //可選,字元串類型,系統提醒事項許可權描述
"NSMotionUsageDescription": "", //可選,字元串類型,使用運動與健康許可權描述
"NSHealthUpdateUsageDescription": "", //可選,字元串類型,使用健康更新許可權描述
"NSHealthShareUsageDescription": "", //可選,字元串類型,使用健康分享許可權描述
"NSAppleMusicUsageDescription": "", //可選,字元串類型,使用媒體資料庫許可權描述
"NFCReaderUsageDescription": "", //可選,字元串類型,使用NFC許可權描述
"NSHealthClinicalHealthRecordsShareUsageDescription": "", //可選,字元串類型,訪問臨床記錄許可權描述
"NSHomeKitUsageDescription": "", //可選,字元串類型,訪問HomeKit許可權描述
"NSSiriUsageDescription": "", //可選,字元串類型,訪問Siri許可權描述
"NSFaceIDUsageDescription": "", //可選,字元串類型,使用FaceID許可權描述
"NSLocalNetworkUsageDescription": "", //可選,字元串類型,訪問本地網路許可權描述
"NSUserTrackingUsageDescription": "" //可選,字元串類型,跟蹤用戶活動許可權描述
},
"idfa": true, //可選,Boolean類型,是否使用廣告標識
"capabilities": {
//可選,JSON對象,應用的能力配置(Capabilities)
},
"CFBundleName": "HBuilder", //可選,字元串類型,CFBundleName名稱
"validArchitectures": [
//可選,字元串數組類型,編譯時支持的CPU指令,可取值arm64、arm64e、armv7、armv7s、x86_64
"arm64"
],
"pushRegisterMode": "manual", //可選,使用“Push(消息推送)”模塊時申請系統推送許可權模式,manual表示調用push相關API時申請,其它值表示應用啟動時自動申請
"privacyRegisterMode": "manual" //可選,僅iOS有效,設置為manual表示用戶同意隱私政策後才獲取idfv,設置為其它值表示應用啟動時自動獲取
},
"sdkConfigs": {
//可選,JSON對象,三方SDK相關配置
"geolocation": {
//可選,JSON對象,Geolocation(定位)模塊三方SDK配置
"system": {
//可選,JSON對象,使用系統定位
"__platform__": ["ios", "android"] //可選,字元串數組類型,支持的平臺
},
"amap": {
//可選,JSON對象,使用高德定位SDK配置
"__platform__": ["ios", "android"], //可選,字元串數組類型,支持的平臺
"appkey_ios": "", //必填,字元串類型,iOS平臺高德定位appkey
"appkey_android": "" //必填,字元串類型,Android平臺高德定位appkey
},
"baidu": {
//可選,JSON對象,使用百度定位SDK配置
"__platform__": ["ios", "android"], //可選,字元串數組類型,支持的平臺
"appkey_ios": "", //必填,字元串類型,iOS平臺百度定位appkey
"appkey_android": "" //必填,字元串類型,Android平臺百度定位appkey
}
},
"maps": {
//可選,JSON對象,Maps(地圖)模塊三方SDK配置
"amap": {
//可選,JSON對象,使用高德地圖SDK配置
"appkey_ios": "", //必填,字元串類型,iOS平臺高德地圖appkey
"appkey_android": "" //必填,字元串類型,Android平臺高德地圖appkey
},
"baidu": {
//可選,JSON對象,使用百度地圖SDK配置
"appkey_ios": "", //必填,字元串類型,iOS平臺百度地圖appkey
"appkey_android": "" //必填,字元串類型,Android平臺百度地圖appkey
},
"google": {
//可選,JSON對象,使用Google地圖SDK配置
"APIKey_ios": "", //必填,字元串類型,iOS平臺Google地圖APIKey
"APIKey_android": "" //必填,字元串類型,Android平臺Google地圖APIKey
}
},
"oauth": {
//可選,JSON對象,OAuth(登錄鑒權)模塊三方SDK配置
"univerify": {
//可選,JSON對象,使用一鍵登錄(univerify)SDK配置,無需手動配置參數,雲端打包自動獲取配置參數
},
"apple": {
//可選,JSON對象,使用蘋果登錄(Sign in with Apple)SDK配置,無配置參數,僅iOS平臺支持
},
"weixin": {
//可選,JSON對象,使用微信登錄SDK配置
"appid": "", //必填,字元串類型,微信開放平臺申請的appid
"appsecret": "", //必填,字元串類型,微信開放平臺申請的appsecret
"UniversalLinks": "" //可選,字元串類型,微信開放平臺配置的iOS平臺通用鏈接
},
"qq": {
//可選,JSON對象,使用QQ登錄SDK配置
"appid": "", //必填,字元串類型,QQ開放平臺申請的appid
"UniversalLinks": "" //可選,字元串類型,QQ開放平臺配置的iOS平臺通用鏈接
},
"sina": {
//可選,JSON對象,使用新浪微博登錄SDK配置
"appkey": "", //必填,字元串類型,新浪微博開放平臺申請的appid
"redirect_uri": "", //必填,字元串類型,新浪微博開放平臺配置的redirect_uri
"UniversalLinks": "" //可選,字元串類型,新浪微博開放平臺配置的iOS平臺通用鏈接
},
"google": {
//可選,JSON對象,使用Google登錄SDK配置
"clientid": "" //必填,字元串類型,Google開發者後臺申請的clientid
},
"facebook": {
//可選,JSON對象,使用Facebook登錄SDK配置
"appid": "" //必填,字元串類型,Facebook開發者後臺申請的appid
}
},
"payment": {
//可選,JSON對象,Payment(支付)模塊三方SDK配置
"appleiap": {
//可選,JSON對象,使用Apple應用內支付配置,無配置參數,僅iOS平臺支持
},
"alipay": {
//可選,JSON對象,使用支付寶支付SDK配置
"__platform__": ["ios", "android"] //可選,字元串數組類型,支持的平臺
},
"weixin": {
//可選,JSON對象,使用微信支付SDK配置
"__platform__": ["ios", "android"], //可選,字元串數組類型,支持的平臺
"appid": "", //必填,字元串類型,微信開放平臺申請的appid
"UniversalLinks": "" //可選,字元串類型,微信開放平臺配置的iOS平臺通用鏈接
},
"paypal": {
//可選,JSON對象,使用paypal支付SDK配置
"__platform__": ["ios", "android"], //可選,字元串數組類型,支持的平臺
"returnURL_ios": "", //必填,字元串類型,paypa開發者者後臺配置的iOS平臺returnURL
"returnURL_android": "" //必填,字元串類型,paypa開發者者後臺配置的Android平臺returnURL
},
"stripe": {
//可選,JSON對象,使用stripe支付SDK配置
"__platform__": ["ios", "android"], //可選,字元串數組類型,支持的平臺
"returnURL_ios": "" //必填,字元串類型,stripe開發者者後臺配置的iOS平臺returnURL
},
"google": {
//可選,JSON對象,使用google支付SDK配置,無配置參數,僅Android平臺支持
}
},
"push": {
//可選,JSON對象,Push(消息推送)模塊三方SDK配置
"unipush": {
//可選,JSON對象,使用UniPush SDK配置,無需手動配置參數,雲端打包自動獲取配置參數
"icons": {
//可選,JSON對象,推送圖標配置
"push": {
//可選,JSON對象,Push圖標配置
"ldpi": "", //可選,字元串類型,普通屏設備推送圖標路徑,解析度要求48x48
"mdpi": "", //可選,字元串類型,大屏設備設備推送圖標路徑,解析度要求48x48
"hdpi": "", //可選,字元串類型,高分屏設備推送圖標路徑,解析度要求72x72
"xdpi": "", //可選,字元串類型,720P高分屏設備推送圖標路徑,解析度要求96x96
"xxdpi": "", //可選,字元串類型,1080P高密度屏幕推送圖標路徑,解析度要求144x144
"xxxdpi": "" //可選,字元串類型,4K屏設備推送圖標路徑,解析度要求192x192
},
"smal": {
//可選,JSON對象,Push小圖標配置
"ldpi": "", //可選,字元串類型,普通屏設備推送小圖標路徑,解析度要求18x18
"mdpi": "", //可選,字元串類型,大屏設備設備推送小圖標路徑,解析度要求24x24
"hdpi": "", //可選,字元串類型,高分屏設備推送小圖標路徑,解析度要求36x36
"xdpi": "", //可選,字元串類型,720P高分屏設備推送小圖標路徑,解析度要求48x48
"xxdpi": "", //可選,字元串類型,1080P高密度屏幕推送小圖標路徑,解析度要求72x72
"xxxdpi": "" //可選,字元串類型,4K屏設備推送小圖標路徑,解析度要求96x96
}
}
},
"igexin": {
//可選,JSON對象,使用個推推送SDK配置,**已廢棄,推薦使用UniPush,UniPush是個推推送VIP版,功能更強大**
"appid": "", //必填,字元串類型,個推開放平臺申請的appid
"appkey": "", //必填,字元串類型,個推開放平臺申請的appkey
"appsecret": "", //必填,字元串類型,個推開放平臺申請的appsecret
"icons": {
//可選,JSON對象,推送圖標配置
"push": {
//可選,JSON對象,Push圖標配置
"ldpi": "", //可選,字元串類型,普通屏設備推送圖標路徑,解析度要求48x48
"mdpi": "", //可選,字元串類型,大屏設備設備推送圖標路徑,解析度要求48x48
"hdpi": "", //可選,字元串類型,高分屏設備推送圖標路徑,解析度要求72x72
"xdpi": "", //可選,字元串類型,720P高分屏設備推送圖標路徑,解析度要求96x96
"xxdpi": "", //可選,字元串類型,1080P高密度屏幕推送圖標路徑,解析度要求144x144
"xxxdpi": "" //可選,字元串類型,4K屏設備推送圖標路徑,解析度要求192x192
},
"smal": {
//可選,JSON對象,Push小圖標配置
"ldpi": "", //可選,字元串類型,普通屏設備推送小圖標路徑,解析度要求18x18
"mdpi": "", //可選,字元串類型,大屏設備設備推送小圖標路徑,解析度要求24x24
"hdpi": "", //可選,字元串類型,高分屏設備推送小圖標路徑,解析度要求36x36
"xdpi": "", //可選,字元串類型,720P高分屏設備推送小圖標路徑,解析度要求48x48
"xxdpi": "", //可選,字元串類型,1080P高密度屏幕推送小圖標路徑,解析度要求72x72
"xxxdpi": "" //可選,字元串類型,4K屏設備推送小圖標路徑,解析度要求96x96
}
}
}
},
"share": {
//可選,JSON對象,Share(分享)模塊三方SDK配置
"weixin": {
//可選,JSON對象,使用微信分享SDK配置
"appid": "", //必填,字元串類型,微信開放平臺申請的appid
"UniversalLinks": "" //可選,字元串類型,微信開放平臺配置的iOS平臺通用鏈接
},
"qq": {
//可選,JSON對象,使用QQ分享SDK配置
"appid": "", //必填,字元串類型,QQ開放平臺申請的appid
"UniversalLinks": "" //可選,字元串類型,QQ開放平臺配置的iOS平臺通用鏈接
},
"sina": {
//可選,JSON對象,使用新浪微博分享SDK配置
"appkey": "", //必填,字元串類型,新浪微博開放平臺申請的appid
"redirect_uri": "", //必填,字元串類型,新浪微博開放平臺配置的redirect_uri
"UniversalLinks": "" //可選,字元串類型,新浪微博開放平臺配置的iOS平臺通用鏈接
}
},
"speech": {
//可選,JSON對象,Speech(語音識別)模塊三方SDK配置
"baidu": {
//可選,JSON對象,使用百度語音識別SDK配置
"appid": "", //必填,字元串類型,百度開放平臺申請的appid
"apikey": "", //必填,字元串類型,百度開放平臺申請的apikey
"secretkey": "" //必填,字元串類型,百度開放平臺申請的secretkey
}
},
"statics": {
//可選,JSON對象,Statistic(統計)模塊三方SDK配置
"umeng": {
//可選,JSON對象,使用友盟統計SDK配置
"appkey_ios": "", //必填,字元串類型,友盟統計開放平臺申請的iOS平臺appkey
"channelid_ios": "", //可選,字元串類型,友盟統計iOS平臺的渠道標識
"appkey_android": "", //必填,字元串類型,友盟統計開放平臺申請的Android平臺appkey
"channelid_android": "" //可選,字元串類型,友盟統計Android平臺的渠道標識
},
"google": {
//可選,JSON對象,使用Google Analytics for Firebase配置
"config_ios": "", //必填,字元串類型,Google Firebase統計開發者後臺獲取的iOS平臺配置文件路徑
"config_android": "" //必填,字元串類型,Google Firebase統計開發者後臺獲取的Android平臺配置文件路徑
}
},
"ad": {
//可選,JSON對象,uni-AD配置
"360": {
//可選,JSON對象,使用360廣告聯盟SDK,無需手動配置,在uni-AD後臺申請開通後自動獲取配置參數
},
"csj": {
//可選,JSON對象,使用今日頭條穿山甲廣告聯盟SDK,無需手動配置,在uni-AD後臺申請開通後自動獲取配置參數
},
"gdt": {
//可選,JSON對象,使用騰訊優量匯廣告聯盟SDK,無需手動配置,在uni-AD後臺申請開通後自動獲取配置參數
},
"ks": {
//可選,JSON對象,使用快手廣告聯盟SDK,無需手動配置,在uni-AD後臺申請開通後自動獲取配置參數
},
"ks-content": {
//可選,JSON對象,使用快手內容聯盟SDK,無需手動配置,在uni-AD後臺申請開通後自動獲取配置參數
},
"sigmob": {
//可選,JSON對象,使用Sigmob廣告聯盟SDK,無需手動配置,在uni-AD後臺申請開通後自動獲取配置參數
},
"hw": {
//可選,JSON對象,使用華為廣告聯盟SDK,無需手動配置,在uni-AD後臺申請開通後自動獲取配置參數
},
"bd": {
//可選,JSON對象,使用百度百青藤廣告聯盟SDK,無需手動配置,在uni-AD後臺申請開通後自動獲取配置參數
},
"BXM-AD": {
//可選,JSON對象,使用互動游戲(變現貓)SDK,無需手動配置,在uni-AD後臺申請開通後自動獲取配置參數
}
}
},
"icons": {
//可選,JSON對象,應用圖標相關配置
"ios": {
//可選,JSON對象,iOS平臺圖標配置
"appstore": "", //必填,字元串類型,解析度1024x1024, 提交app sotre使用的圖標路徑
"iphone": {
//可選,JSON對象,iPhone設備圖標配置
"app@2x": "", //可選,字元串類型,解析度120x120,程式圖標路徑
"app@3x": "", //可選,字元串類型,解析度180x180,程式圖標路徑
"spotlight@2x": "", //可選,字元串類型,解析度80x80,Spotlight搜索圖標路徑
"spotlight@3x": "", //可選,字元串類型,解析度120x120,Spotlight搜索圖標路徑
"settings@2x": "", //可選,字元串類型,解析度58x58,Settings設置圖標路徑
"settings@3x": "", //可選,字元串類型,解析度87x87,Settings設置圖標路徑
"notification@2x": "", //可選,字元串類型,解析度40x40,通知欄圖標路徑
"notification@3x": "" //可選,字元串類型,解析度60x60,通知欄圖標路徑
},
"ipad": {
//可選,JSON對象,iPad設備圖標配置
"app": "", //可選,字元串類型,解析度76x76,程式圖標圖標路徑
"app@2x": "", //可選,字元串類型,解析度152x152,程式圖標圖標路徑
"proapp@2x": "", //可選,字元串類型,解析度167x167,程式圖標圖標路徑
"spotlight": "", //可選,字元串類型,解析度40x40,Spotlight搜索圖標路徑
"spotlight@2x": "", //可選,字元串類型,解析度80x80,Spotlight搜索圖標路徑
"settings": "", //可選,字元串類型,解析度29x29,Settings設置圖標路徑
"settings@2x": "", //可選,字元串類型,解析度58x58,Settings設置圖標路徑
"notification": "", //可選,字元串類型,解析度20x20,通知欄圖標路徑
"notification@2x": "" //可選,字元串類型,解析度740x40,通知欄圖標路徑
}
},
"android": {
//可選,JSON對象,Android平臺圖標配置
"ldpi": "", //可選,字元串類型,普通屏設備程式圖標,解析度要求48x48,已廢棄
"mdpi": "", //可選,字元串類型,大屏設備程式圖標,解析度要求48x48,已廢棄
"hdpi": "", //可選,字元串類型,高分屏設備程式圖標,解析度要求72x72
"xhdpi": "", //可選,字元串類型,720P高分屏設備程式圖標,解析度要求96x96
"xxhdpi": "", //可選,字元串類型,1080P高分屏設備程式圖標,解析度要求144x144
"xxxhdpi": "" //可選,字元串類型,2K屏設備程式圖標,解析度要求192x192
}
},
"splashscreen": {
//可選,JSON對象,啟動界面配置
"iosStyle": "common", //可選,字元串類型,iOS平臺啟動界面樣式,可取值common、default、storyboard
"ios": {
//可選,JSON對象,iOS平臺啟動界面配置
"storyboard": "", //可選,字元串類型,自定義storyboard啟動界面文件路徑,iosStyle值為storyboard時生效
"iphone": {
//可選,JSON對象,iPhone設備啟動圖配置,iosStyle值為default時生效
"default": "", //可選,字元串類型,解析度320x480,iPhone3(G/GS)啟動圖片路徑,已廢棄
"retina35": "", //可選,字元串類型,解析度640x960,3.5英寸設備(iPhone4/4S)啟動圖片路徑,已廢棄
"retina40": "", //可選,字元串類型,解析度640x1136,4.0英寸設備(iPhone5/5S)啟動圖片路徑
"retina40l": "", //可選,字元串類型,解析度1136x640,4.0英寸設備(iPhone5/5S)橫屏啟動圖片路徑
"retina47": "", //可選,字元串類型,解析度750x1334,4.7英寸設備(iPhone6/7/8)啟動圖片路徑
"retina47l": "", //可選,字元串類型,解析度1334x750,4.7英寸設備(iPhone6/7/8)橫屏啟動圖片路徑
"retina55": "", //可選,字元串類型,解析度1242x2208,5.5英寸設備(iPhone6/7/8Plus)啟動圖片路徑
"retina55l": "", //可選,字元串類型,解析度2208x1242,5.5英寸設備(iPhone6/7/8Plus)橫屏啟動圖片路徑
"iphonex": "", //可選,字元串類型,解析度1125x2436,5.8英寸設備(iPhoneX/XS)啟動圖片路徑
"iphonexl": "", //可選,字元串類型,解析度2436x1125,5.8英寸設備(iPhoneX/XS)橫屏啟動圖片路徑
"portrait-896h@2x": "", //可選,字元串類型,解析度828x1792,6.1英寸設備(iPhoneXR)啟動圖片路徑
"landscape-896h@2x": "", //可選,字元串類型,解析度1792x828,6.1英寸設備(iPhoneXR)iPhoneXR橫屏啟動圖片路徑
"portrait-896h@3x": "", //可選,字元串類型,解析度1242x2688,6.5英寸設備(iPhoneXS Max)啟動圖片路徑
"landscape-896h@3x": "" //可選,字元串類型,解析度2688x1242,6.5英寸設備(iPhoneXS Max)橫屏啟動圖片路徑
},
"ipad": {
//可選,JSON對象,iPad設備啟動圖配置,iosStyle值為default時生效
"portrait": "", //可選,字元串類型,解析度768x1004,iPad豎屏啟動圖片路徑,已廢棄
"portrait-retina": "", //可選,字元串類型,解析度1536x2008,iPad高分屏豎屏啟動圖片路徑,已廢棄
"landscape": "", //可選,字元串類型,解析度1024x748,iPad橫屏啟動圖片路徑,已廢棄
"landscape-retina": "", //可選,字元串類型,解析度2048x1496,iPad高分屏橫屏啟動圖片路徑,已廢棄
"portrait7": "", //可選,字元串類型,解析度768x1024,9.7/7.9英寸iPad/mini豎屏啟動圖片路徑
"landscape7": "", //可選,字元串類型,解析度1024x768,9.7/7.9英寸iPad/mini橫屏啟動圖片路徑
"portrait-retina7": "", //可選,字元串類型,解析度1536x2048,9.7/7.9英寸iPad/mini高分屏豎屏圖片路徑
"landscape-retina7": "", //可選,字元串類型,解析度2048x1536,9.7/7.9英寸iPad/mini高分屏橫屏啟動圖片路徑
"portrait-1112h@2x": "", //可選,字元串類型,解析度1668x2224,10.5英寸iPad Pro豎屏啟動圖片路徑
"landscape-1112h@2x": "", //可選,字元串類型,解析度2224x1668,10.5英寸iPad Pro橫屏啟動圖片路徑
"portrait-1194h@2x": "", //可選,字元串類型,解析度1668x2388,11英寸iPad Pro豎屏啟動圖片路徑
"landscape-1194h@2x": "", //可選,字元串類型,解析度2388x1668,11英寸iPad Pro橫屏啟動圖片路徑
"portrait-1366h@2x": "", //可選,字元串類型,解析度2048x2732,12.9英寸iPad Pro豎屏啟動圖片路徑
"landscape-1366h@2x": "" //可選,字元串類型,解析度2732x2048,12.9英寸iPad Pro橫屏啟動圖片路徑
}
},
"androidStyle": "common", //可選,字元串類型,Android平臺啟動界面樣式,可取值common、default
"android": {
//可選,JSON對象,Android平臺啟動圖片配置, androidStyle值為default時生效
"ldpi": "", //可選,字元串類型,解析度320x442,低密度屏幕啟動圖片路徑,已廢棄
"mdpi": "", //可選,字元串類型,解析度240x282,中密度屏幕啟動圖片路徑,已廢棄
"hdpi": "", //可選,字元串類型,解析度480x762,高密度屏幕啟動圖片路徑
"xhdpi": "", //可選,字元串類型,解析度720x1242,720P高密度屏幕啟動圖片路徑
"xxhdpi": "" //可選,字元串類型,解析度1080x1882,1080P高密度屏幕啟動圖片路徑
}
},
"orientation": [
//可選,字元串數組類型,應用支持的橫豎屏,**已廢棄,使用screenOrientation配置**
"portrait-primary",
"portrait-secondary",
"landscape-primary",
"landscape-secondary"
]
},
"compatible": {
//可選,JSON對象,uni-app相容模式
"ignoreVersion": false, //可選,Boolean類型,是否忽略版本相容檢查提示
"runtimeVersion": "", //可選,字元串類型,相容的uni-app運行環境版本號,多個版本使用,分割
"compilerVersion": "" //可選,字元串類型,相容的編譯器版本號
},
"confusion": {
//可選,JSON對象,原生混淆加密配置,參考:https://uniapp.dcloud.io/tutorial/app-sec-confusion
"description": "", //可選,字元串類型,原生混淆描述
"resources": {
//必填,JSON對象,原生混淆文件配置
"js/common.js": {
//可選,JSON對象,鍵名為需要原生混淆的文件路徑
}
}
},
"channel": "", //可選,字元串類型,渠道標識
"cers": {
//可選,JSON對象,應用的異常崩潰與錯誤報告系統配置
"crash": true //可選,Boolean類型,是否提交應用異常崩潰信息
},
"cache": {
//可選,JSON對象,Webview視窗預設使用的緩存模式,uni-app項目已廢棄
"mode": "default" //可選,字元串類型,可取值default、cacheElseNetwork、noCache、cacheOnly
},
"error": {
//可選,JSON對象,頁面載入錯誤配置,uni-app項目僅對webview組件有效,參考:https://uniapp.dcloud.io/tutorial/app-webview-error
"url": "" //必填,字元串類型,webview頁面錯誤是跳轉的頁面地址
},
"kernel": {
//可選,JSON對象,webview內核配置
"ios": "WKWebview", //可選,iOS平臺使用的webview類型,可取值WKWebview、UIWebview
"recovery": "reload" //可選,iOS平臺使用WKWebview時,內核崩潰後的處理邏輯,可取值restart、reload、none
},
"launchwebview": {
//可選,JSON對象,應用首頁相關配置,uni-app項目不建議手動修改
"plusrequire": "normal", //可選,字元串類型,載入plus API時機,可取值ahead、normal、later、none
"injection": false, //可選,Boolean類型,是否提前註入plus API
"overrideresource": [
//可選,JSON對象數組,應用首頁的攔截資源相關配置
{
"match": "", //可選,字元串類型,匹配攔截的資源url地址的正則表達式
"redirect": "", //可選,字元串類型,攔截資源的重定向地址
"mime": "", //可選,字元串類型,攔截資源的數據類型mime
"encoding": "", //可選,字元串類型,攔截資源的數據編碼
"header": {
//可選,JSON對象,攔截資源的http頭數據
}
}
],
"overrideurl": {
//可選,JSON對象,應用首頁的攔截鏈接請求處理邏輯
"mode": "reject", //可選,字元串類型,攔截模式,可取值allow、reject
"match": "", //可選,字元串類型,匹配攔截規則,支持正則表達式
"exclude": "none" //可選,字元串類型,排除攔截理規則,可取值none、redirect
},
"replacewebapi": {
//可選,JSON對象,是否重寫Web API實現相關配置
"geolocation": "none" //可選,字元串類型,重寫標准定位API,可取值none、alldevice、auto
},
"subNViews": [
//可選,JSON對象數組,首頁原生View相關配置,已廢棄
{
"id": "", //可選,字元串類型,原生View標識
"styles": {
//可選,JSON對象,原生View樣式
},
"tags": [
//可選,JSON對象數組,原生View中包含的tag標簽列表
{}
]
}
],
"titleNView": {
//可選,JSON對象,標題欄相關配置
"backgroundColor": "#RRGGBB", //可選,字元串類型,#RRGGBB格式,標題欄背景顏色
"titleText": "", //可選,字元串類型,標題欄標題文字內容
"titleColor": "#RRGGBB", //可選,字元串類型,#RRGGBB格式,標題欄標題文字顏色
"titleSize": "17px", //可選,字元串類型,標題字體大小,預設大小為17px
"autoBackButton": true, //可選,Boolean類型,是否顯示標題欄上返回鍵
"backButton": {
//可選,JSON對象,返回鍵樣式
"backgournd": "#RRGGBB", //可選,字元串類型,#RRGGBB格式,返回按鈕背景顏色
"color": "#RRGGBB", //可選,字元串類型,#RRGGBB格式,返回圖標顏色
"colorPressed": "#RRGGBB" //可選,字元串類型,#RRGGBB,返回圖標按下時的顏色
},
"buttons": [
//可選,JSON對象數組,標題欄按鈕配置
{
"color": "#RRGGBB", //可選,字元串類型,#RRGGBB格式,按鈕上的文字顏色
"colorPressed": "#RRGGBB", //可選,字元串類型,#RRGGBB格式,按鈕按下狀態的文字顏色
"float": "right", //可選,字元串類型,按鈕顯示位置,可取值left、right
"fontWeight": "normal", //可選,字元串類型,按鈕上文字的粗細,可取值normal、bold
"fontSize": "22px", //可選,字元串類型,按鈕上文字的大小
"fontSrc": "", //可選,字元串類型,按鈕上文字使用的字體文件路徑
"text": "" //可選,字元串類型,按鈕上顯示的文字
}
],
"splitLine": {
//可選,JSON對象,標題欄分割線樣式
"color": "#RRGGBB", //可選,字元串類型,#RRGGBB格式,分割線顏色
"height": "1px" //可選,字元串類型,分割線高度
}
},
"statusbar": {
//可選,JSON對象,狀態欄配置
"background": "#RRGGBB" //可選,字元串類型,#RRGGBB格式,沉浸式狀態欄樣式下系統狀態欄背景顏色
},
"top": "0px", //可選,字元串類型,Webview的頂部偏移量,支持px、%單位
"height": "100%", //可選,字元串類型,Webview視窗高度,支持px、%單位
"bottom": "0px", //可選,字元串類型,Webview的底部偏移量,僅在未同時設置top和height屬性時生效
"backButtonAutoControl": "none", //可選,字元串類型,運行環境自動處理返回鍵的控制邏輯,可取值none、hide、close
"additionalHttpHeaders": {
//可選,JSON對象,額外添加HTTP請求頭數據
}
},
"nativePlugins": {
//可選,JSON數組對象,uni原生插件配置,參考:https://nativesupport.dcloud.net.cn/NativePlugin/use/use_local_plugin
"%UniPlugin-ID%": {
//可選,JSON對象,鍵名為插件標識,值為插件配置參數
}
},
"popGesture": "none", //可選,字元串類型,視窗側滑返回預設效果,可取值none、close、hide
"runmode": "liberate", //可選,字元串類型,應用資源運行模式,可取值normal、liberate
"safearea": {
//可選,JSON對象,安全區域配置
"background": "#RRGGBB", //可選,字元串類型,#RRGGBB格式,安全區域背景顏色
"backgroundDark": "#RRGGBB", //可選,字元串類型,#RRGGBB格式,暗黑模式安全區域背景顏色
"bottom": {
//可選,JSON對象,底部安全區域配置
"offset": "none" //可選,字元串類型,安全區域偏移值,可取值auto、none
},
"left": {
//可選,JSON對象,左側安全區域配置
"offset": "none" //可選,字元串類型,安全區域偏移值,可取值auto、none
},
"right": {
//可選,JSON對象,左側安全區域配置
"offset": "none" //可選,字元串類型,安全區域偏移值,可取值auto、none
}
},
"softinput": {
//可選,JSON對象,軟鍵盤相關配置
"navBar": "auto", //可選,字元串類型,iOS平臺軟鍵盤上導航條的顯示模式,可取值auto、none
"auxiliary": false, //可選,Boolean類型,是否開啟輔助輸入功能
"mode": "adjustResize" //可選,字元串類型,彈出系統軟鍵盤模式,可取值adjustResize、adjustPan
},
"ssl": {
//可選,JSON對象,ssl相關設置
"untrustedca": "accept" //可選,字元串類型,https請求時伺服器非受信證書的處理邏輯,可取值accept、refuse、warning
},
"statusbar": {
//可選,JSON對象,應用啟動後的系統狀態欄相關配置
"immersed": "none", //可選,字元串類型,沉浸式狀態欄樣式,可取值none、suggestedDevice、supportedDevice
"style": "light", //可選,字元串類型,系統狀態欄樣式(前景顏色),可取值dark、light
"background": "#RRGGBB" //可選,字元串類型,#RRGGBB格式,系統狀態欄背景顏色
},
"useragent": {
//可選,JSON對象,應用UserAgent相關配置,預設值為系統UserAgent,並添加 uni-app Html5Plus/1.0
"value": "", //可選,字元串類型,設置的預設userAgent值
"concatenate": false //可選,Boolean類型,是否將value值作為追加值連接到系統預設userAgent值之後
},
"useragent_android": {
//可選,JSON對象,Android平臺應用UserAgent相關配置,優先順序高於useragent配置
"value": "", //可選,字元串類型,設置的預設userAgent值
"concatenate": false //可選,Boolean類型,是否將value值作為追加值連接到系統預設userAgent值之後
},
"useragent_ios": {
//可選,JSON對象,iOS平臺應用UserAgent相關配置,優先順序高於useragent配置
"value": "", //可選,字元串類型,設置的預設userAgent值
"concatenate": false //可選,Boolean類型,是否將value值作為追加值連接到系統預設userAgent值之後
}
},
"quickapp": {},
"mp-weixin": {
"appid": "wx開頭的微信小程式appid",
"uniStatistics": {
"enable": false
}
},
"mp-baidu": {
"appid": "百度小程式appid"
},
"mp-toutiao": {
"appid": "抖音小程式appid"
},
"mp-lark": {
"appid": "飛書小程式appid"
},
"h5": {
"title": "演示",
"template": "index.html",
"router": {
"mode": "history",
"base": "/hello/"
},
"async": {
"loading": "AsyncLoading",
"error": "AsyncError",
"delay": 200,
"timeout": 3000
}
}
}
- uni.scss
這個是全局的樣式文件,官方預定了很多常用的樣式規則和變數。
- package.json
在 web 和小程式添加一些依賴包,擴展其他的功能。
- vite.config.js
vue3 項目生成的配置文件。
全局組件
全局組件主要是內置組件和擴展組件。
內置組件
所有的視圖組件,包括 view、swiper 等,本身不顯示任何可視化元素,用途都是為了包裹其他真正顯示的組件,可以直接在 vue 頁面中使用。
常見有:
- uniapp 組件
- vue 組件
- nvue 組件
- 小程式組件
擴展組件
uni-ui 是 DCloud 提供的一個跨端 ui 庫,它是基於 vue 組件的、flex 佈局的、無 dom 的跨全端 ui 框架,不包括基礎組件,它是基礎組件的補充,有些組件需要到插件市場下載才可以使用。
常見有:
- 列表組件
- 表單組件
- 表格組件
- 載入更多組件
- 自定義導航欄組件
- 彈出層組件
常用 API
基礎
onPageNotFound
,頁面不存在事件;onError
,錯誤事件;onAppShow
,頁面前臺事件;onAppHide
,頁面後臺事件;addInterceptor
,攔截器;
網路
request
,發起請求;uploadFile
,上傳文件;downloadFile
,下載文件;connectSocket
,創建一個 websocket 連接;onSocketOpen
,ws 打開事件;onSocketError
,錯誤事件;sendSocketMessage
,發送 ws 消息;onSocketMessage
,接收 ws 消息;closeSocket
,關閉 ws;onSocketClose
,監聽關閉 ws;
頁面路由
navigateTo
,保留當前頁面,跳轉到其他頁面;redirectTo
,關閉當前頁面,跳轉到其他頁面;reLaunch
,關閉所有頁面,跳轉到其他頁面;switchTab
,跳轉到 tabBar 底部導航頁面;navigateBack
,返回上一個頁面或多級頁面;
數據緩存
setStorage
,將數據存儲在本地緩存中的指定 key 中,覆蓋原來該 key 的內容;getStorage
,從本地緩存中獲取指定 key 的內容;removeStorage
,從本地緩存中移除指定 key 及內容;clearStorage
,清除本地緩存;getStorageInfo
,獲取本地緩存信息;
界面
showToast
,顯示消息提示框;hideToast
,隱藏消息提示框;showLoading
,顯示載入提示框;hideLoading
,隱藏載入提示框;showModal
,顯示模態彈出框;showActionSheet
,從底部彈出操作菜單;onPullDownRefresh
,下拉刷新;createSelectorQuery
,節點信息;
文件
chooseImage
,選擇圖片;saveImageToPhotosAlbum
,保存圖片到相冊;chooseFile
,選擇文件;saveFile
,保存文件到本地;removeSavedFile
,刪除本地保存的文件;getSavedFileList
,獲取本地保存的文件列表;getFileInfo
,獲取文件信息;openDocument
,新頁面打開文檔;
條件編譯
概念
條件編譯是用特殊的註釋作為標記,在編譯時根據這些特殊的註釋,將註釋裡面的代碼編譯到不同平臺。
寫法:以 #ifdef
或 #ifndef
加 %PLATFORM%
開頭,以 #endif
結尾。
#ifdef
:if defined 僅在某平臺存在;#ifndef
:if not defined 除了某平臺均存在;%PLATFORM%
:平臺名稱;
%PLATFORM%
值:
值 | 生效條件 |
---|---|
VUE3 | HBuilderX 3.2.0+ 詳情 (uni-app js 引擎版) |
APP | App |
APP-PLUS | App(uni-app js 引擎版) |
APP-PLUS-NVUE 或 APP-NVUE | App nvue 頁面 |
APP-ANDROID | App Android 平臺 僅限 uts 文件 |
APP-IOS | App iOS 平臺 僅限 uts 文件 |
H5 | H5 |
MP-WEIXIN | 微信小程式 |
MP-ALIPAY | 支付寶小程式 |
MP-BAIDU | 百度小程式 |
MP-TOUTIAO | 抖音小程式 |
MP-LARK | 飛書小程式 |
MP-QQ | QQ 小程式 |
MP-KUAISHOU | 快手小程式 |
MP-JD | 京東小程式 |
MP-360 | 360 小程式 |
MP | 微信小程式/支付寶小程式/百度小程式/抖音小程式/飛書小程式/QQ 小程式/360 小程式 |
QUICKAPP-WEBVIEW | 快應用通用(包含聯盟、華為) |
QUICKAPP-WEBVIEW-UNION | 快應用聯盟 |
QUICKAPP-WEBVIEW-HUAWEI | 快應用華為 |
支持的文件
- .vue、.pug
- .css、.scss、.less、.stylus
- .js、.ts
- pages.json
寫法
vue/nvue 模板里使用 <!-- 註釋 -->
,css 使用 /* 註釋 */
,js 使用 //
註釋。
- 模板寫法
<!-- #ifdef %PLATFORM% -->
平臺特有的組件
<!-- #endif -->
- css 樣式寫法
/* #ifdef %PLATFORM% */
平臺特有樣式
/* #endif */
- JS 寫法
// #ifdef %PLATFORM%
平臺特有的API實現;
// #endif
- pages.json
// #ifdef %PLATFORM%
{
"pagePath": "pages/eg",
"text": "案例"
}
// #endif
插件開發
有數千款插件,支持前端組件、js sdk、頁面模板、項目模板、原生插件等多種類型。在生態建設上遠遠領先於競品。
請註意儘量在官方市場尋找插件,npm 等三方市場沒有 uni-app 相容性描述,很容易下載到無法跨平臺的、僅適配 web 的插件。
插件分類
DCloud 插件市場將插件分為前端組件、JS SDK、uni-app 前端模板、App 原生插件、uniCloud 等 7 大類、20 多個子類。
uni_modules
uni_modules 是 uni-app 的插件模塊化規範(HBuilderX 3.1.0+支持),通常是對一組 js sdk、組件、頁面、uniCloud 雲函數、公共模塊等的封裝,用於嵌入到 uni-app 項目中使用,也支持直接封裝為項目模板。
好了,以上就是 uniapp 的框架知識總結。