uniapp 常用

1, 判斷網(wǎng)絡(luò)類型

    onReady() {
        // 判斷網(wǎng)絡(luò)類型
        uni.getNetworkType({
            success: res => {
                if (res.networkType == '2g' || res.networkType == '3g' || res.networkType == '4g') {
                    console.log('當(dāng)前使用非WIFI環(huán)境遥倦,請注意流量使用');
                } else if (res.networkType == 'none') {
                    console.log('沒有網(wǎng)絡(luò)');
                }
            }
        });
    },

2, uniapp app使用分包
(1) manifest.json中啟用分包
(2) pages.json文件中的配置

//manifest.json
"app-plus": {
        // app開啟分包
        "optimization": {
            "subPackages": true
        },
        "runmode": "liberate", // 開啟分包優(yōu)化后,必須配置資源釋放模式
}
//pages.json文件
"subPackages": [{
        "root": "pages/page",
        "pages": [{
                "path": "search",
                "style": {
                    "navigationStyle": "custom"
                }
            }
        ]
    }],

3, 滾動到頭部,漸變顯示元素

//html
    <view  :style="{ top: wanlsys.height + 'px', opacity: headerOpacity }">
            固定元素    
    </view>



//js
        onLoad(option) {
            // 計算頁面尺寸
            let sys = this.$wanlshop.wanlsys();
            this.headTop = sys.top;
            this.headHeight = sys.height;
            this.windowHeight = sys.windowHeight;
            // 加載 Api
            if (option.id) {
                this.loadData(option);
            } else {
                this.loadData({
                    id: null
                });
            }
        },
        onPageScroll(e) {
            //導(dǎo)航欄漸變
            let tmpY = 150;
            e.scrollTop = e.scrollTop > tmpY ? 150 : e.scrollTop; //如果當(dāng)前高度大于150則150否則當(dāng)前高度
            this.headerOpacity = e.scrollTop * (1 / tmpY); //$headerOpacity 賦值當(dāng)前高度x(1÷150)
        },

4, 監(jiān)聽頁面是橫屏還是豎屏

//uni.getSystemInfo 可以獲取設(shè)備寬高,如果res.windowWidth > res.windowHeight則為橫屏
//uni.onWindowResize,用戶每旋轉(zhuǎn)一次屏幕就會觸發(fā)里面的onShow鉤子讼载,因此在頁面顯示或橫豎屏變化都會觸發(fā)這函數(shù)躏鱼,來判斷是否是橫豎屏;
//res.deviceOrientation 等于landscape 的話是豎屏,portrait則是橫屏
//全局橫屏: pages.json 
"globalStyle": {
        "pageOrientation": "auto"
    },

//單頁面橫屏: 需要橫屏的頁面
onLoad(){
// #ifdef APP-PLUS
       plus.screen.lockOrientation('default'); 
    // #endif
onUnload(){
// #ifdef APP-PLUS
      plus.screen.lockOrientation('portrait-primary'); 
    // #endif
}
}

5.設(shè)置原生tabbar徽標(biāo)

uni.setTabBarBadge({
            index: 3,
            text:'99+'
        })
//注意這個方法僅在tabbar頁面生效,可以將數(shù)據(jù)存在app.vue 的globalData內(nèi),全局都可用
  1. 頁面須多次獲取url帶的參數(shù),但是onLoad中只能接收一次,我們可以存storage內(nèi),頁面銷毀時再清空(適用情況,多頁面公用一個tabbar,切換時傳值就會丟掉)

//方法一:h5 app都適用
onLoad(opt) {
            if (opt.bid) {
                this.bid = opt.bid
                uni.setStorageSync('bid', opt.bid) 
            } else {
                this.bid = uni.getStorageSync('bid')
            }


        },
//銷毀時清空
        onUnload() {
            console.log('onUnload')
            uni.removeStorageSync('bid');
        },

方法二: 
        onShow() {
            // hash路由獲取方式,這里兩種路由方式是指manifast.json中web配置中配置的路由模式
            const w = location.hash.indexOf('?');
            const paraString = location.hash.substring(w + 1)
            
            // histery路由用這個
            // let paraString = location.search;
            let paras = paraString.split("=");
            this.bid = paras[1]

        },

7 去除默認(rèn)nav欄的返回按鈕

//在頁面的mounted生命周期設(shè)置
        mounted(){
            var a = document.getElementsByClassName('uni-page-head-hd')[0]
            a.style.display = 'none';
        },

8 app監(jiān)測更新版本

//首先獲取后臺版本號,與前端參數(shù)對比看是否更新,根據(jù)情況讓用戶選擇是否更新即可
//在需要監(jiān)測的頁面,或app.vue都行,app.vue生命周期略有改動
        async onLoad() {
//判斷是否為app
            // #ifdef APP-PLUS 
      //判斷手機(jī)系統(tǒng)是否為android
            if(uni.getSystemInfoSync().platform !== 'ios'){
                this.onGetUpdate()
            }
            // #endif
        },
        methods: {
            downLoad() {
                const downLoadTask = uni.downloadFile({
                    url: 'https://www.xxx.cn/rongchengbang.apk',//apk下載鏈接
                    success:(res) => {
                        // console.log(res,"res-----")
                        if (res.statusCode == 200) {
                            uni.showToast({
                                title:'安裝包下載成功,即將安裝',
                                icon:"success"
                            })
                            plus.runtime.install(res.tempFilePath)  //安裝apk
                        } else {
                                                console.log('安裝失敗')
                        }
                    }
                })
                this.show = false
                this.showToast('后臺下載中...')
               //缺點(diǎn)是看不到進(jìn)度條,下載好后會自動彈出安裝
                
            },
            // 獲取后臺值看是否熱更新,這個就看自己項(xiàng)目接口怎么獲取數(shù)據(jù)了
            async onGetUpdate() {
                const res = await getUpdate({})
                const {
                    code,
                    data,
                    msg
                } = res.data
                // console.log(res, 'ssss',this.versionNumber,data)
                if (code == 1) {
                    if (this.versionNumber != data) {
                        this.show = true  //下載提示模態(tài)框顯示,確認(rèn)按鈕綁定downLoad事件即可,這里就不寫了
                    }
                } else {
                    this.showToast(msg)
                }
            },
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市歼跟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌格遭,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件留瞳,死亡現(xiàn)場離奇詭異拒迅,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)她倘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門璧微,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人硬梁,你說我怎么就攤上這事前硫。” “怎么了荧止?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵屹电,是天一觀的道長阶剑。 經(jīng)常有香客問我,道長危号,這世上最難降的妖魔是什么牧愁? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮外莲,結(jié)果婚禮上猪半,老公的妹妹穿的比我還像新娘。我一直安慰自己偷线,他們只是感情好磨确,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著声邦,像睡著了一般乏奥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上翔忽,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天英融,我揣著相機(jī)與錄音,去河邊找鬼歇式。 笑死驶悟,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的材失。 我是一名探鬼主播痕鳍,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼龙巨!你這毒婦竟也來了笼呆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤旨别,失蹤者是張志新(化名)和其女友劉穎诗赌,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秸弛,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铭若,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了递览。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叼屠。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖绞铃,靈堂內(nèi)的尸體忽然破棺而出镜雨,到底是詐尸還是另有隱情,我是刑警寧澤儿捧,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布荚坞,位于F島的核電站挑宠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏西剥。R本人自食惡果不足惜痹栖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瞭空。 院中可真熱鬧揪阿,春花似錦、人聲如沸咆畏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽旧找。三九已至溺健,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钮蛛,已是汗流浹背鞭缭。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留魏颓,地道東北人岭辣。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像甸饱,于是被迫代替她去往敵國和親沦童。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 一叹话、UniAPP 介紹 (1)什么是 UniAPP 偷遗? uni-app 是一個使用 Vue.js 開發(fā)所有前端應(yīng)用...
    DaZenD閱讀 1,489評論 0 1
  • 基于 UniAPP 從入門到社區(qū)項(xiàng)目實(shí)戰(zhàn) 課程背景:咱們作為前端開發(fā)人員,單純的Web 端開發(fā)已經(jīng)慢慢無法滿足我們...
    A_走在冷風(fēng)中閱讀 1,467評論 0 2
  • 微信小程序開發(fā)指引 前言 本文檔我們主要關(guān)注微信小程序的開發(fā)使用驼壶。微信小程序使用微信開發(fā)者工具開發(fā)氏豌,使用其專有語言...
    tikeyc閱讀 36,675評論 0 19
  • # 創(chuàng)建運(yùn)行 創(chuàng)建uni-app[https://uniapp.dcloud.io/quickstart-cli?...
    前端青音閱讀 1,947評論 0 0
  • uni-app的基本使用 課程介紹: 基礎(chǔ)部分: 環(huán)境搭建 頁面外觀配置 數(shù)據(jù)綁定 uni-app的生命周期 組件...
    綠茵場上的碼者閱讀 43,231評論 1 21