第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

首頁 慕課教程 uni-app 入門教程 uni-app 入門教程 運(yùn)行環(huán)境判斷以及平臺判斷

運(yùn)行環(huán)境判斷以及平臺判斷

1. 前言

在日常開發(fā)過程中,一般測試服務(wù)器和生產(chǎn)服務(wù)器是分開的,測試服務(wù)器和生產(chǎn)服務(wù)器之間的項(xiàng)目配置數(shù)據(jù)是不同的,每次切換運(yùn)行環(huán)境還要修改這些配置數(shù)據(jù)非常麻煩,并且不利于我們后期對項(xiàng)目的維護(hù),萬一上線時某個數(shù)據(jù)忘記改了,整個項(xiàng)目不就歇菜了嘛。

那這個時候能判斷當(dāng)前環(huán)境是開發(fā)環(huán)境還是生產(chǎn)環(huán)境就很重要了,可以自動幫助我們完成測試服務(wù)器和生產(chǎn)服務(wù)器之間的動態(tài)切換。

另外因?yàn)橐恍┢脚_的差異性,我們也需要對當(dāng)前的平臺進(jìn)行判斷,用來應(yīng)對這些平臺的差異。

比如 uni-app 可以打包成原生 app、H5 頁面、小程序等項(xiàng)目,并運(yùn)行在相應(yīng)的平臺上面,但是各個平臺之間也是有區(qū)別的,比如微信小程序自帶了標(biāo)題欄還有返回鍵,但是原生 app 沒有自帶標(biāo)題欄和返回鍵,就需要我們自己定義。所以需要項(xiàng)目來自己判別當(dāng)前運(yùn)行在哪個平臺上面,根據(jù)平臺的特性顯示不同的頁面。

2. 判斷開發(fā)環(huán)境和生產(chǎn)環(huán)境

2.1 在 HBuilderX 中判斷

在用 HBuilderX 進(jìn)行開發(fā)時,開發(fā)環(huán)境和運(yùn)行環(huán)境不需要使用代碼判斷,點(diǎn)擊“運(yùn)行”編譯出來的代碼是開發(fā)環(huán)境:

點(diǎn)擊“發(fā)行”編譯出來的代碼是生產(chǎn)環(huán)境:

2.2 使用代碼判斷

在 uni-app 中使用代碼來判斷開發(fā)環(huán)境還是生產(chǎn)環(huán)境也很簡單, uni-app 框架直接幫我們打包了一個現(xiàn)成的方法 process.env.NODE_ENV,我們通過這個方法可以直接來判斷當(dāng)前環(huán)境是開發(fā)環(huán)境還是生產(chǎn)環(huán)境。
實(shí)例:

if(process.env.NODE_ENV === 'development'){
    console.log('開發(fā)環(huán)境')
}else{
    console.log('生產(chǎn)環(huán)境')
}

在這里我們只是打印了一下當(dāng)前是開發(fā)環(huán)境還是生產(chǎn)環(huán)境,實(shí)際開發(fā)過程中,可以將打印語句換成相應(yīng)開發(fā)環(huán)境下的配置數(shù)據(jù),這樣切換平臺運(yùn)行的時候就不用擔(dān)心配置數(shù)據(jù)出問題了。

3. 運(yùn)行平臺判斷

運(yùn)行平臺的判斷可以在編譯期判斷,也可以在運(yùn)行期判斷。

3.1 在編譯器判斷

平臺之間的差異在講條件編譯的時候也說過,可以通過條件編譯使特定的代碼只運(yùn)行在對應(yīng)平臺上。

條件編譯里面的代碼,只會編譯到對應(yīng)平臺的發(fā)行包里面,其他平臺發(fā)行包不會包含條件編譯的代碼。比如說下面的代碼,只會編譯到 H5 的發(fā)行包里面,其他平臺的發(fā)行包不會包含下面代碼。
實(shí)例:

// #ifdef H5
    console.log("只有 H5 平臺才能打印這句話")
// #endif

3.2 在運(yùn)行期判斷

運(yùn)行期判斷是指代碼已經(jīng)編譯到發(fā)行包里面,所以我們還是需要來判斷當(dāng)前是在哪個平臺上面運(yùn)行。這個時候可以使用 uni.getSystemInfoSync().platform 方法來判斷當(dāng)前的平臺是Android,iOS還是小程序開發(fā)工具。

在百度小程序開發(fā)工具、微信小程序開發(fā)工具、支付寶小程序開發(fā)工具中使用 uni.getSystemInfoSync().platform 返回值都是 devtools,所以我們只能知道當(dāng)前是小程序開發(fā)工具,不能繼續(xù)往下細(xì)分了。
實(shí)例:

switch(uni.getSystemInfoSync().platform){
    case 'android':
       console.log('運(yùn)行在Android平臺上面')
       break;
    case 'ios':
       console.log('運(yùn)行在iOS平臺上面')
       break;
    default:
       console.log('運(yùn)行在開發(fā)者工具上面')
       break;
}

3.3 自定義平臺

如果我們還有其他的開發(fā)需求,比如微信服務(wù)號開發(fā),uni-app 中沒有對應(yīng)的平臺,我們就可以自定義一個,在 package.json 文件中增加 uni-app 擴(kuò)展節(jié)點(diǎn)。
實(shí)例:

    "uni-app": {
        "scripts": {
            "wx-platform": { //自定義編譯平臺配置,可通過cli方式調(diào)用
                "title":"微信服務(wù)號", // 自定義平臺名稱,在HBuilderX中會顯示在 運(yùn)行/發(fā)行 菜單中
                "env": {//環(huán)境變量
                    "UNI_PLATFORM": "mp-weixin"  //基準(zhǔn)平臺,僅限:h5、mp-weixin、mp-alipay、mp-baidu、mp-toutiao、mp-qq
                 },
                "define": { //自定義條件編譯
                    "WX-PLATFORM": true //自定義條件編譯常量,建議為大寫
                }
            }
        }    
    }

Tips

  • 通過 HBuilderX 可視化界面創(chuàng)建的項(xiàng)目一般是沒有 package.json 文件的。通過vue-cli命令行方式創(chuàng)建的項(xiàng)目默認(rèn)有 package.json 文件;
  • package.json文件中不允許出現(xiàn)注釋,否則擴(kuò)展配置無效,所以我們配置時需要將所有注釋都刪掉;
  • 使用自定義平臺功能,vue-cli需更新到最新版,HBuilderX需升級到 2.1.6+ 版本。

使用自定義平臺
實(shí)例:

// #ifdef WX-PLATFORM
  console.log("微信服務(wù)號平臺特有代碼")
// #endif

4. 小結(jié)

本節(jié)課程我們主要學(xué)習(xí)了運(yùn)行環(huán)境判斷和當(dāng)前運(yùn)行平臺的判斷,分別調(diào)用 process.env.NODE_ENV、uni.getSystemInfoSync().platform 來進(jìn)行判斷。本節(jié)課程的重點(diǎn)如下:

  • 掌握在使用 HBuilderX 開發(fā)、cli開發(fā)應(yīng)該如何判斷當(dāng)前環(huán)境是開發(fā)環(huán)境還是生產(chǎn)環(huán)境;
  • 掌握兩種平臺判斷:編譯期判斷、運(yùn)行期判斷;
  • 了解自定義平臺,以及如何使用自定義平臺。