掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
uni-app 在發(fā)布到H5時(shí)支持所有vue的語(yǔ)法;發(fā)布到App和小程序時(shí),由于平臺(tái)限制,無(wú)法實(shí)現(xiàn)全部vue語(yǔ)法,但uni-app仍是是對(duì)vue語(yǔ)法支持度最高的跨端框架。本文將詳細(xì)講解差異。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、成都網(wǎng)站建設(shè)、溫縣網(wǎng)絡(luò)推廣、微信小程序開發(fā)、溫縣網(wǎng)絡(luò)營(yíng)銷、溫縣企業(yè)策劃、溫縣品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供溫縣建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
相比Web平臺(tái), Vue.js 在 uni-app 中使用差異主要集中在兩個(gè)方面:
uni-app 完整支持 Vue 實(shí)例的生命周期,同時(shí)還新增 應(yīng)用生命周期 及 頁(yè)面生命周期。
詳見官方文檔:生命周期鉤子。
uni-app 完整支持 Vue 模板語(yǔ)法。
詳見Vue官方文檔:模板語(yǔ)法。
注意 如果使用老版的非自定義組件模式,即manifest中"usingComponents":false,部分模版語(yǔ)法不支持,但此模式已于2019年11月起下線。
data 必須聲明為返回一個(gè)初始數(shù)據(jù)對(duì)象的函數(shù);否則頁(yè)面關(guān)閉時(shí),數(shù)據(jù)不會(huì)自動(dòng)銷毀,再次打開該頁(yè)面時(shí),會(huì)顯示上次數(shù)據(jù)。
//正確用法,使用函數(shù)返回對(duì)象
data() {
return {
title: 'Hello'
}
}
//錯(cuò)誤寫法,會(huì)導(dǎo)致再次打開頁(yè)面時(shí),顯示上次數(shù)據(jù)
data: {
title: 'Hello'
}
實(shí)現(xiàn)全局變量的方式需要遵循 Vue 單文件模式的開發(fā)規(guī)范。詳細(xì)參考:uni-app全局變量的幾種實(shí)現(xiàn)方式
為節(jié)約性能,我們將 Class 與 Style 的表達(dá)式通過(guò) compiler 硬編碼到 uni-app 中,支持語(yǔ)法和轉(zhuǎn)換效果如下:
class 支持的語(yǔ)法:
111
222
333
444
555 style 支持的語(yǔ)法:
666
777 非H5端不支持 Vue官方文檔:Class 與 Style 綁定 中的 classObject 和 styleObject 語(yǔ)法。
不支持示例:
注意:以:style=""這樣的方式設(shè)置px像素值,其值為實(shí)際像素,不會(huì)被編譯器轉(zhuǎn)換。
此外還可以用 computed 方法生成 class 或者 style 字符串,插入到頁(yè)面中,舉例說(shuō)明:
用在組件上
非H5端暫不支持在自定義組件上使用 Class 與 Style 綁定
完整支持 Vue官方文檔:計(jì)算屬性。
完整支持 Vue官方文檔:條件渲染
完整vue列表渲染 Vue官方文檔:列表渲染
如果列表中項(xiàng)目的位置會(huì)動(dòng)態(tài)改變或者有新的項(xiàng)目添加到列表中,并且希望列表中的項(xiàng)目保持自己的特征和狀態(tài)(如 中的輸入內(nèi)容,
:key 的值以兩種形式提供
當(dāng)數(shù)據(jù)改變觸發(fā)渲染層重新渲染的時(shí)候,會(huì)校正帶有 key 的組件,框架會(huì)確保他們被重新排序,而不是重新創(chuàng)建,以確保使組件保持自身的狀態(tài),并且提高列表渲染時(shí)的效率。
如不提供 :key,會(huì)報(bào)一個(gè) warning, 如果明確知道該列表是靜態(tài),或者不必關(guān)注其順序,可以選擇忽略。
示例:
{{index +':'+ item.name}}
{{index +':'+ item}}
幾乎全支持 Vue官方文檔:事件處理器
// 事件映射表,左側(cè)為 WEB 事件,右側(cè)為 ``uni-app`` 對(duì)應(yīng)事件
{
click: 'tap',
touchstart: 'touchstart',
touchmove: 'touchmove',
touchcancel: 'touchcancel',
touchend: 'touchend',
tap: 'tap',
longtap: 'longtap', //推薦使用longpress代替
input: 'input',
change: 'change',
submit: 'submit',
blur: 'blur',
focus: 'focus',
reset: 'reset',
confirm: 'confirm',
columnchange: 'columnchange',
linechange: 'linechange',
error: 'error',
scrolltoupper: 'scrolltoupper',
scrolltolower: 'scrolltolower',
scroll: 'scroll'
}注意:
支持 Vue官方文檔:表單控件綁定。
建議開發(fā)過(guò)程中直接使用 uni-app:表單組件。用法示例:
H5 的select 標(biāo)簽用 picker 組件進(jìn)行代替
當(dāng)前選擇:{{array[index]}}
表單元素 radio 用 radio-group 組件進(jìn)行代替
App端(vue頁(yè)面V3編譯模式)和H5端支持v-html,其他端不支持v-html。
跨端的富文本處理方案詳見:https://ask.dcloud.net.cn/article/35772

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流