初入uni-app遇到的問題

本人之前是做Vue項(xiàng)目開發(fā)的,此篇文章是相對(duì)于vue項(xiàng)目轉(zhuǎn)移至uni-app遇到的問題,以及對(duì)uniapp的學(xué)習(xí)~~~

????????

后續(xù)學(xué)習(xí)中遇到的問題也會(huì)持續(xù)更新的?? -------- Loading.....

image.png

uni-app官方地址
不得不說,人家的標(biāo)語還是很吸引人的,這要是學(xué)會(huì)了,AndroidIOS開發(fā)不就失業(yè)了??
面臨著這么嚴(yán)重的問題,所以在選擇時(shí)一定要三思而后行,只能說學(xué)習(xí)成本肯定很大,而且還有各種坑等著你!

問題和遇到的坑:

??1.uni-app引用npm第三方庫問題

點(diǎn)擊查看官方文檔介紹
點(diǎn)擊查看社區(qū)回復(fù)

??2.路由跳轉(zhuǎn)問題(不支持之前的vue-router)

由之前的router文件夾下的index.js,變成目前的 pages.json

image.png

如何實(shí)現(xiàn)頁面間的跳轉(zhuǎn),點(diǎn)擊查看官方文檔

??3.部分組件無法使用,只能使用相關(guān)原生組件問題(不支持dom操作)

點(diǎn)擊查看官方文檔介紹

??4.不支持window.操作問題
??5.公共樣式引入問題

不能放在 main.js內(nèi)
需要放到 App.vue style內(nèi)

<script>
    export default {
        onLaunch: function() {
            console.log('App Launch')
        },
        onShow: function() {
            console.log('App Show')
        },
        onHide: function() {
            console.log('App Hide')
        }
    }
</script>

<style>
    @import url("static/scss/index.scss");
    /*每個(gè)頁面公共css */
</style>

??6.不支持alert的問題,原生消息提示
uni.showToast({
    title: '標(biāo)題',
    duration: 2000,
    icon:'none'
})

點(diǎn)擊查看官方文檔介紹

??7.sessionStorage的問題

存:

uni.setStorage({
                key: 'storage_key',
                data: 'hello',
                success: function() {
                    console.log('success');
                }
            });

取:

uni.getStorage({
                key: 'storage_key',
                success: function(res) {
                    console.log(res.data);
                }
            });

點(diǎn)擊查看官方文檔介紹
點(diǎn)擊查看社區(qū)回復(fù)

??8.不支持iconfont圖標(biāo)問題

下圖是官方給出的回答:


image.png

盡量轉(zhuǎn)為圖片格式,網(wǎng)上有說可以用的相關(guān)方法,我參考了也,但是在手機(jī)上還是不顯示,有誰試出來了告訴我下 ??
參考地址:https://www.cnblogs.com/gfweb/p/11069062.html

??9.scss全局樣式書寫格式問題

image.png

當(dāng)你發(fā)現(xiàn)在全局樣式中這樣寫不正常的時(shí)候(在單頁面內(nèi)這樣寫是沒問題的)
image.png

注意在 App.vue中加上lang
image.png

??10.引入圖片命名時(shí)盡量不要使用中文

本人是在引入圖標(biāo)圖片時(shí)出現(xiàn)的問題,中文時(shí)H5顯示正常,app不正正常

??11.調(diào)整圖片<img>問題

之前一般都是 <img src="" alt="">,所以在樣式上可以直接 img{} 來設(shè)置,但是在 uniapp 和 微信小程序中是不一致的(圖二為微信小程序)


image.png

image.png

因此盡量通過給 <img src="" alt=""> 定義 class 進(jìn)行樣式處理 ??

??12.調(diào)整圖片<img>大小問題

在H5中,直接設(shè)置 img 的 width:100%,寬度會(huì)直接自適應(yīng)父元素的寬,高度也會(huì)等比例自動(dòng)適應(yīng)
在uniapp中,直接以上操作,高度不會(huì)自動(dòng)適應(yīng),必須固定寬高 ??

image.png

image.png

??13.uni-app中Vuex使用問題

uni-app中this.$store為undefind ,必須要在main.js中加入這行代碼

Vue.prototype.$store = store
??14.部分HTML標(biāo)簽無法解析問題

<section>,<span>,<div>等這些在微信小程序中都不會(huì)被解析,因此盡量用 <view> 代替
點(diǎn)擊查看官方文檔介紹

??15.axios請(qǐng)求頭封裝問題

之前vue項(xiàng)目中用到的是axios,但是完全照搬過去的話,會(huì)發(fā)現(xiàn)微信小程序就會(huì)有問題。
因此就要換一種封裝請(qǐng)求的方法,uni-app上也有人家封裝好的,可以直接下載來用(個(gè)人感覺有點(diǎn)秘密糊糊,而且文檔不完善,畢竟不是大佬 ??)
uni-app攔截封裝地址
uni-app發(fā)起請(qǐng)求參考文檔

我這邊只是參考之前的代碼,簡單實(shí)現(xiàn)了請(qǐng)求(把請(qǐng)求走通了,不排除后面會(huì)有啥問題)
新建 https.js文件

/**
 * Created by superman on 17/2/16.
 * http配置
 */
'use strict'
import globalConfig from '../global.js' //全局配置的api請(qǐng)求地址
export function http(params) {
    uni.request({
        url: globalConfig.url.apiUrl + params.url,
        method: params.method,
        data: params.data,
        dataType: 'json',
        header: {
            'Content-Type': 'application/json;charset=utf-8',
            'channel-code': 'AXXXXXXXXX',
            'client-type': 'MOH5',
            'version': '0.0.1'
        },
        success: function(res) {
            let code = res.data.retCode
            console.log(res)
            if (code == 'N00000') {
                params.success(res.data)
            } else {
                uni.showToast({
                    title: res.data.retMsg,
                    icon: 'none',
                    duration: 2000
                })
            }
        },
        fail: function(err) {
            console.log(err)
            uni.showToast({
                title: '服務(wù)器出現(xiàn)問題,請(qǐng)稍后再試',
                icon: 'none',
            })
        }
    })
}
export default http;

main.js引入

import http from 'static/js/https.js'
Vue.prototype.$http = http;

頁面應(yīng)用

// 獲取公告列表
            getNoticeList() {
                var _this = this;
                this.$http({
                    url: 'core-api/cms/siteNotice/all',
                    method: 'POST',
                    success: (res) => {
                        console.log(res)
                        _this.noticeList = res.body.siteNoticeList
                    }
                })
            },
??16.不能使用類似于vue的路由嵌套問題

點(diǎn)擊查看社區(qū)回復(fù)

??17.路由攔截問題

一般在vue中可以通過設(shè)置...,進(jìn)行攔截,但是在uniapp中是不支持這樣的,因此是需要封裝一個(gè)公共的js方法,來進(jìn)行判斷

const router = new VueRouter({ ... })
router.beforeEach((to, from, next) => {
// ...
})

點(diǎn)擊查看社區(qū)回復(fù)

其他:

??1.H5正常但App異常的可能性

點(diǎn)擊查看官方文檔介紹

??2.vue h5轉(zhuǎn)換uni-app指南

點(diǎn)擊查看社區(qū)回復(fù)

??3.HBuilder/HBuilderX真機(jī)運(yùn)行、手機(jī)運(yùn)行、真機(jī)聯(lián)調(diào)常見問題

點(diǎn)擊查看社區(qū)回復(fù)

??4.App打開空白頁,H5沒問題

參考地址:https://blog.csdn.net/weixin_43343144/article/details/98085487

??5.自定義導(dǎo)航欄使用注意
{
    "pages": [ //pages數(shù)組中第一項(xiàng)表示應(yīng)用啟動(dòng)頁,參考:https://uniapp.dcloud.io/collocation/pages
        {
            "path": "pages/index/index"
        }
    ],
    "globalStyle": {
        "navigationStyle":"custom" //去除頭部導(dǎo)航后
    }
}

點(diǎn)擊查看官方文檔介紹

??6.uni-app 中保持用戶登錄狀態(tài)

點(diǎn)擊查看社區(qū)回復(fù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容