最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用uni-app生成微信小程序的踩坑記錄

 更新時間:2022年04月05日 10:20:07   作者:用戶2355133964485  
uni-app是一個使用 Vue.js 開發(fā)所有前端應用的框架,開發(fā)者編寫一套代碼,可發(fā)布到iOS、Android、H5、以及各種小程序(微信/支付寶/百度/頭條/QQ/釘釘)等多個平臺,這篇文章主要給大家介紹了關于利用uni-app生成微信小程序的踩坑記錄,需要的朋友可以參考下

前言

畢設要求寫一個瀏覽器端,一個APP端,一個微信端,剛開始以為要學三個技術然后寫三個客戶端,后來知道了uni-app這個神器,一次編寫就可以編譯生成APP、H5以及各種小程序版本的客戶端。然而我比較熟悉的是web的前端開發(fā),而且瀏覽器用于測試也是唾手可得,所以整個開發(fā)過程中用瀏覽器測試的基本上都很順利,展現(xiàn)的效果也很好,然而在編譯小程序端的時候出了很大的問題,整個頁面都扭曲了,經(jīng)過這兩天的查資料與修復,終于得到了瀏覽器中的效果,正好也記錄一下這些坑。

1.不允許id選擇器

這個問題是最容易發(fā)現(xiàn)的,在h5頁面中用id標記標簽很常見,然后在css中用#+id來設置標簽的style,但是微信小程序中是不能用id選擇器的,從警告內(nèi)容中很容易發(fā)現(xiàn)。

從警告中還可以看出,小程序中標簽名、屬性名選擇器都不能用。

2.默認豎排

在H5頁面中,元素默認是橫排的,但是在小程序中,元素是默認豎排的,因此最好顯式的設置元素的橫排豎排,這樣就不會發(fā)生頁面錯亂了。

.row-arrange{
    flex-direction: row;	/*橫排元素*/
}

3.圖片加載不出來

其實這個原因官網(wǎng)的文檔上有寫,不過我沒仔細看

而且H5中用相對路徑可以正常加載,但是在小程序中就不行了,所以最好還是用絕對路徑吧。

../../../static/xxx.jpg # 相對路徑
/static/xxx.jpg # 絕對路徑

4.eval函數(shù)不可用

之前寫H5的時候,總是很習慣的用eval(字符串)來得到數(shù)字、JavaScript對象等,但是在微信小程序端這些轉換都會報錯,因此最好的方式是使用對應的轉換API,比如數(shù)字可以用parseInt、JSON對象可以用JSON.parse等。

5.getStorage異步

在H5頁面中,這樣寫是可以拿到存儲的數(shù)據(jù)的:

var data;
uni.getStorage({
	title : 'xxx',
	success : function(res){
		data = res.data;
	}
})
this.data = data;

但是在小程序中,這段代碼就會出錯,我猜是小程序中讀取存儲數(shù)據(jù)略慢吧,而且我上面的這種寫法也不標準,因此嚴格應該這樣寫就不會出錯:

var vm = this;
uni.getStorage({
	title : 'xxx',
	success : function(res){
		vm.data = res.data;
	}
})

6.props的中的值不可修改

props : { 
	questions : {
		type : Array,
		default : []
	},
},

如上所示,我一開始是直接利用questions中的數(shù)據(jù)通過v-for來進行動態(tài)的頁面渲染,用這種方式questions的值可以直接從標簽的屬性設置,會非常方便,即使后面利用this.questions.push(x)給它增加新元素H5頁面也可以更新。但是在微信小程序端就沒有反應了,不管怎么修改,它都不能動態(tài)的進行渲染,因此我在data中增加了一個ques用來進行渲染的數(shù)據(jù)來源:

data() {
	return {
		ques : [],
	};
},
props : { 
	questions : {
		type : Array,
		default : []
	},
},
created : function(){
	...
	this.ques = this.questions;
},

然后只需要利用ques中的數(shù)據(jù)進行渲染即可,如果要添加元素,也是通過修改ques來辦到,如this.ques.push(x)

7.wx.uploadFile攜帶字符串參數(shù)

上傳文件時,按照微信官方的文檔,總是不能成功提交表單格式的字符串參數(shù),有一種解決方法是把上傳文件和上傳字符串分割成兩個接口,但由于我的上傳文件包含權限驗證的token,因此必須在上傳文件的同時攜帶token才行,所以最終用了拼接地址的方法解決了這個問題:

wx.uploadFile({
	url: vm.fileurl + '/file/uploadPic?token=' + tokenJson['token'] + '&userId=' + tokenJson['userId'], //圖片文件上傳接口
	filePath: vm.src,
	name: 'pic',  //
	header: { 
		'Content-Type': 'multipart/form-data',
	},
	formData: {
		method: 'POST'   //請求方式
	},
	success (res){
		...
	}
})

8.picker的multiSelector mode中選擇框出現(xiàn)undefined

展示一下出錯的效果圖:

可以看到所有的選項都成了undefined。

這里是因為我一開始的數(shù)據(jù)使用的都是普通數(shù)組,每一列都是字符串或數(shù)字數(shù)組,比如[[1,2,3],[1,2,3,4,5]]這樣,在H5頁面中這樣做沒有問題,但是在小程序中就會出現(xiàn)錯誤,因此這里每一列都必須采用對象數(shù)組,例如一個很簡單的解決方案:

首先寫數(shù)據(jù)的時候需要用對象數(shù)組的方式

data() {
    return {
		area : [[{'name':'北京市'},{'name':'河北省'}],[{'name':'邢臺市'},{'name':'石家莊市'}],[{'name':'不知道縣'}]],
		areaIndex : [1,0,0],
	}
}

然后在標簽中用如下的方法:

<picker mode="multiSelector" :value="areaIndex" :range="area" range-key="name" @columnchange="changeColumn" style="width:100%;">
	<view class="row-arrange">
		<text class="little-font-size">{{area[0][areaIndex[0]].name}}</text>
		<text class="little-font-size">{{area[1][areaIndex[1]].name}}</text>
		<text class="little-font-size">{{area[2][areaIndex[2]].name}}</text>
	</view>
</picker>

注意這里的range-key不能帶冒號,而且里面的值應該是對象數(shù)組中的key

總結

到此這篇關于利用uni-app生成微信小程序踩坑的文章就介紹到這了,更多相關uni-app生成微信小程序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Bootstrap popover用法詳解

    Bootstrap popover用法詳解

    這篇文章主要為大家詳細介紹了Boostrap popover用法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • JavaScript利用多彩線條擺出心形效果的示例代碼

    JavaScript利用多彩線條擺出心形效果的示例代碼

    這篇文章主要為大家詳細介紹了如何利用JavaScript語言實現(xiàn)多彩線條擺出心形效果,文中的實現(xiàn)步驟講解詳細,快跟隨小編一起動手嘗試一下吧
    2022-07-07
  • 基于IE下ul li 互相嵌套時的bug,排查,解決過程以及心得介紹

    基于IE下ul li 互相嵌套時的bug,排查,解決過程以及心得介紹

    昨天到今天上午都在查一個IE的bug,情形如下:通過異步請求獲取json數(shù)據(jù),然后拼接成html代碼,最后使用innerHTML類似方法插入到文檔流中。在chrome下和IE8\9下均表現(xiàn)正常。結果已進入IE7,瀏覽器就崩潰,更別提IE6了,也是一副死給你看的樣子。于是我就把這個bug定位于IE6\7,其實這時候我已經(jīng)陷入了這個固定思維模式中,浪費了不少時間
    2013-05-05
  • JS創(chuàng)建對象的六種方式

    JS創(chuàng)建對象的六種方式

    在js中,對象是鍵值對的集合,可以通過很多種方式創(chuàng)建; 本文給大家介紹了六種創(chuàng)建方式:對象字面量、構造函數(shù)、Object.create()、工廠函數(shù)、class、單例模式,需要的朋友可以參考下
    2025-04-04
  • javascript cookie操作類的實現(xiàn)代碼小結附使用方法

    javascript cookie操作類的實現(xiàn)代碼小結附使用方法

    javascript cookie操作類的實現(xiàn)代碼小結附使用方法,對于cookies操作不是很熟悉的朋友可以參考下。
    2010-06-06
  • 微信小程序實現(xiàn)點擊導航條切換頁面

    微信小程序實現(xiàn)點擊導航條切換頁面

    這篇文章主要為大家詳細介紹了微信小程序實現(xiàn)點擊導航條切換頁面,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • JavaScript 事件對內(nèi)存和性能的影響

    JavaScript 事件對內(nèi)存和性能的影響

    本文主要介紹了JavaScript 事件對內(nèi)存和性能的影響。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • JavaScript中Promise處理異步的并行與串行

    JavaScript中Promise處理異步的并行與串行

    js中的promise是一個異步編程的解決方案,語法層面上他是一個構造函數(shù),名字為Promise(),下面這篇文章主要給大家介紹了關于JavaScript中Promise處理異步的并行與串行的相關資料,需要的朋友可以參考下
    2022-12-12
  • JS中setTimeout和setInterval的最大延時值詳解

    JS中setTimeout和setInterval的最大延時值詳解

    這篇文章主要介紹了JS中setTimeout和setInterval的最大延時值的相關資料,文中通過示例代碼介紹的很詳細,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-02-02
  • 通過偽協(xié)議解決父頁面與iframe頁面通信的問題

    通過偽協(xié)議解決父頁面與iframe頁面通信的問題

    這篇文章主要介紹了通過偽協(xié)議解決父頁面與iframe頁面通信的問題,需要的朋友可以參考下
    2015-04-04

最新評論

邹平县| 巩留县| 平乡县| 丰台区| 万全县| 诏安县| 华宁县| 韩城市| 全南县| 洞头县| 遵义市| 祁连县| 二连浩特市| 宜章县| 绍兴市| 正定县| 司法| 东乡县| 马鞍山市| 南京市| 上思县| 巴东县| 兰考县| 巴里| 集安市| 定南县| 仪征市| 保靖县| 乌鲁木齐县| 施秉县| 阿巴嘎旗| 东乌珠穆沁旗| 庄河市| 峨山| 荥阳市| 民勤县| 全椒县| 涞源县| 七台河市| 大兴区| 余江县|