uniapp 項目實踐總結(一)uniapp 框架知識總結

来源:https://www.cnblogs.com/guanqiweb/archive/2023/08/28/17663511.html
-Advertisement-
Play Games

> 導語:最近開發了一個基於 uniapp 框架的項目,有一些感觸和體會,所以想記錄以下一些技術和經驗,在這裡做一個系列總結,算是對自己做一個交代吧。 ## 目錄 * 簡介 * 全局文件 * 全局組件 * 常用 API * 條件編譯 * 插件開發 ## 簡介 uniapp 是 DCloud 公司於 ...


導語:最近開發了一個基於 uniapp 框架的項目,有一些感觸和體會,所以想記錄以下一些技術和經驗,在這裡做一個系列總結,算是對自己做一個交代吧。

目錄

  • 簡介
  • 全局文件
  • 全局組件
  • 常用 API
  • 條件編譯
  • 插件開發

簡介

uniapp 是 DCloud 公司於 2015 年開發的一款基於 vue 的跨端框架,編寫一套代碼就可以運行到 web、小程式(各種小程式)和 app(Android 和 iOS)端,使得開發一個項目的成本很小,效率很高,方便快捷。

uniapp 官網

功能框架圖

在這裡插入圖片描述

各端運行效果

在這裡插入圖片描述

全局文件

這裡主要是兩個文件: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 的框架知識總結。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 進程是正在運行的程式的實例,它可以包含一個或多個線程。我們瞭解了進程的執行方式,包括早期單核處理器上的順序執行以及引入多任務概念實現的偽並行。我們還探討了進程的狀態模型。進程可以處於就緒、運行、阻塞和結束等不同的狀態。就緒狀態表示進程已經準備好運行,但還沒有被調度執行。運行狀態表示進程正在執行。阻塞... ...
  • ![](https://img2023.cnblogs.com/blog/3076680/202308/3076680-20230825164340432-1938857156.png) # 1. 連接 ## 1.1. 笛卡兒積 ### 1.1.1. 交叉連接(cross join) ### 1.1 ...
  • ![file](https://img2023.cnblogs.com/other/2685289/202308/2685289-20230828190238753-1379880889.png) 視頻貢獻者 | 王維饒 視頻製作者 | 聶同學 編輯整理 | Debra Chen > Apache ...
  • ![file](https://img2023.cnblogs.com/other/3195851/202308/3195851-20230828185450336-2138333694.png) > 時隔兩個月, Apache SeaTunnel 終於迎來大版本更新。此次發佈的 2.3.3 版本在 ...
  • 第14屆中國資料庫技術大會的GaussDB“五高兩易”核心技術,給世界一個更優選擇專場,華為GaussDB首席安全架構師郭亮詳細解讀了GaussDB的高安全之密態等值技術。 ...
  • 8月17日,在第14屆中國資料庫技術大會(DTCC2023)上,天翼雲科技有限公司資料庫首席技術官李躍森以《天翼雲TeleDB持續創新之路》為題發表演講,介紹了天翼雲TeleDB資料庫的發展歷程、技術突破以及國產化能力。 ...
  • * 0.結論先行 * 1.背景介紹 * 2.測試過程 * 3.結果對比 - 附錄 > myloader還預設禁用binlog了 ## 0. 結論先行 重要結論先說:導入大批量數據時,採用GreatSQL 8.0.32-24中新增並行load data特性是最快的,關於該特性的描述詳見:[Change ...
  • 前端下載文件一般使用的是blob 核心的步驟是獲取後端響應的文件流,用blob創建一個臨時的URL,然後創建一個隱藏的<a>標簽,實現下載需求。 那就先上代碼 function download(item) { axios.get(getServerUrl() + "/teacher/output/ ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...