溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在uniapp中使用nvue

發(fā)布時(shí)間:2022-05-06 14:00:56 來源:億速云 閱讀:2594 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹“怎么在uniapp中使用nvue”,在日常操作中,相信很多人在怎么在uniapp中使用nvue問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么在uniapp中使用nvue”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

開始創(chuàng)建第一個(gè) nvue 頁(yè)面。

目錄結(jié)構(gòu):

怎么在uniapp中使用nvue

index.nvue 代碼如下:

<template>
	<div>
        <text>{{text}}</text>
    </div>
</template>
<script>
	export default {
		data() {
			return {
				text: 'Hello World'
			}
		}
	}
</script>

如此真機(jī)運(yùn)行可能遇到如下錯(cuò)誤:

怎么在uniapp中使用nvue

造成這個(gè)問題的原因是 uni-app 項(xiàng)目里必須有一個(gè) vue 的頁(yè)面,新建一個(gè) vue 頁(yè)面然后重新運(yùn)行就不會(huì)有問題了。

怎么在uniapp中使用nvue

image 設(shè)置 border-radius

在 nvue 里面不能給 image 設(shè)置 border-radius,想要將矩形圖案變?yōu)閳A形需要在 image 外面包一層 div,代碼如下:

<div >
    <image  src="https://img-cdn-qiniu.dcloud.net.cn/uniapp/images/uni@2x.png"></image>
</div>

設(shè)置真實(shí)像素

在 weex 的規(guī)范里只有一個(gè)長(zhǎng)度單位即:px,屏幕總寬度為 750px,設(shè)置長(zhǎng)度后,weex 引擎會(huì)根據(jù)手機(jī)屏幕的寬度動(dòng)態(tài)計(jì)算出實(shí)際長(zhǎng)度,類似于 uni-app 的 upx。

但是在實(shí)際開發(fā)過程中可能不想要這樣動(dòng)態(tài)的長(zhǎng)度單位,此時(shí)可以使用 weex 1.x版本里面一個(gè)長(zhǎng)度單位:wx。這個(gè)單位就是實(shí)際像素單位,雖然 weex 文檔沒有提及,但目前任然是可用的,當(dāng)然隨著 weex 的更新,wx 也可能會(huì)不再支持。

引入外部的 css

在 App.vue 里寫的公用的樣式在 nvue 里是不生效,多個(gè) nvue 想要使用公用的樣式,需要引入外部的 css。

由于 weex 的限制,不能在 style 節(jié)點(diǎn)下使用 @import "xxx.css" 這樣的方式引入外部 css,需要使用如下方式引入 css:

<style src="@/common/test.css"></style>
<style>
   .test {
        color: #E96900;
   }
</style>

需要注意的是在 <style src="@/common/test.css"></style> 節(jié)點(diǎn)里寫樣式是不生效的。

使用 ttf 字體文件

在nvue或者weex中是不能直接在css中 通過 @font-face 這樣的方式引入字體文件的,需要在js中使用 dom 模塊引入字體文件,可參考 weex文檔:

const domModule = weex.requireModule('dom');
domModule.addRule('fontFace', {
    'fontFamily': "iconfont2",
    'src': "url('http://at.alicdn.com/t/font_1469606063_76593.ttf')"
});

vue 打開 nvue 時(shí)傳遞參數(shù)

由于 vue 打開 nvue 時(shí)不能在 url 后攜帶參數(shù),只能使用 storage 的方式進(jìn)行參數(shù)傳遞。

在 vue 頁(yè)面打開 nvue

uni.setStorageSync('test', 'hello');
uni.navigateTo({
    url:"/pages/nvue/nvue"
})

在 nvue 頁(yè)面獲得參數(shù),在 created 里調(diào)用 uni-app 的 api 時(shí)需要延時(shí)一段時(shí)間才能調(diào)用成功(最新版 uni-app 框架已經(jīng)修復(fù)此問題,不用延時(shí)也可以調(diào)用成功)。

<script>
    export default {
        created() {
        	console.log("nvue created!");
            setTimeout(() => {
                uni.getStorage({
                	key:'test',
                    success: (res) => {
                    	console.log("獲得上個(gè)頁(yè)面?zhèn)鬟f的數(shù)據(jù)" + res.data)
                    }
                })
            },200)
        }
    }
</script>

仿微信朋友圈效果

在開發(fā)中,有個(gè)頁(yè)面需要做到如微信朋友圈那樣效果:整體列表為從上到下排列,每個(gè)列表為左右兩列,左邊為用戶頭像,右邊消息內(nèi)容。

在開發(fā)的時(shí)候,首先想到的是父元素使用 flex-direction: row; 讓頭像和內(nèi)容,分別在左右展示。但是出了問題,內(nèi)容區(qū)域的高度不能根據(jù)文字的長(zhǎng)度而撐開;如果父元素使用上下排列,內(nèi)容區(qū)域的高度就可以被文字所撐開。

出現(xiàn)問題的代碼如下:

<template>
    <div >
        <div class="items">
            <div class="headImg"></div>
            <div class="rgtBox">
                <text>上下排列時(shí)候可以撐開內(nèi)容,上下排列時(shí)候可以撐開內(nèi)容,上下排列時(shí)候可以撐開內(nèi)容,上下排列時(shí)候可以撐開內(nèi)容,上下排列時(shí)候可以撐開內(nèi)容,上下排列時(shí)候可以撐開內(nèi)容,上下排列時(shí)候可以撐開內(nèi)容,上下排列時(shí)候可以撐開內(nèi)容,上下排列時(shí)候可以撐開內(nèi)容。</text>
            </div>
        </div>
        <div class="items" >
            <div class="headImg"></div>
            <div class="rgtBox" >
                <text>左右排列時(shí)候不可以撐開內(nèi)容,左右排列時(shí)候不可以撐開內(nèi)容,左右排列時(shí)候不可以撐開內(nèi)容,左右排列時(shí)候不可以撐開內(nèi)容,左右排列時(shí)候不可以撐開內(nèi)容,左右排列時(shí)候不可以撐開內(nèi)容,左右排列時(shí)候不可以撐開內(nèi)容,左右排列時(shí)候不可以撐開內(nèi)容,左右排列時(shí)候不可以撐開內(nèi)容</text>
            </div>
        </div>
    </div>
</template>
<script>
    export default {
    }
</script>
<style>
    .items {
        background-color: #fff;
        margin-bottom: 50px;
    }
    .headImg {
        width: 100px;
        height: 100px;
        background-color: #555;
    }
    .rgtBox {
        background-color: #fff;
    }
</style>

出現(xiàn)這個(gè)問題應(yīng)該是 weex 的 bug,左邊元素設(shè)置高度后,右邊若不設(shè)置高度,其最大高度為左邊元素的高度。解決辦法就是將頭像和內(nèi)容均上下排列,然后設(shè)置內(nèi)容區(qū)域的 margin-left、margin-top 和 min-height 就能達(dá)到類似的效果。

代碼如下:

<template>
    <div >
        <div class="item">
            <div class="headImg"></div>
            <div class="rgtBox">
                <text>一段短文本,一段短文本</text>
            </div>
        </div>
        <div class="item">
            <div class="headImg"></div>
            <div class="rgtBox">
                <text>這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本,這里是一段長(zhǎng)文本</text>
            </div>
        </div>
    </div>
</template>

<script>
    export default {}
</script>
<style>
    .item {
        background-color: #fff;
        margin-bottom: 50px;
    }
    .headImg {
        width: 100px;
        height: 100px;
        background-color: #555;
    }
    .rgtBox {
        width: 600px;
        min-height: 100px;
        margin-left: 130px;
        margin-top: -100px; 
        background-color: #fff;
    }
</style>

到此,關(guān)于“怎么在uniapp中使用nvue”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI