日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【uni-app基础教程】

發(fā)布時(shí)間:2024/3/24 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【uni-app基础教程】 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

uni-app基礎(chǔ)教程

uni-app是一個(gè)使用Vue.js開(kāi)發(fā)所有前端應(yīng)用的框架,開(kāi)發(fā)者編寫(xiě)一套代碼,可發(fā)布到iOS,Android,H5,以及各種小程序(微信/支付寶/百度/頭條/ QQ /釘釘)等多個(gè)平臺(tái)

一、環(huán)境配置

1.下載HBuilderX

通過(guò)HBuilderX可視化界面,HBuilderX內(nèi)置相關(guān)環(huán)境,開(kāi)箱即用,無(wú)需配置nodejs

開(kāi)始之前,開(kāi)發(fā)者需先下載安裝如下工具:

  • HBuilderX:官方IDE下載地址

下載App開(kāi)發(fā)版,可開(kāi)箱即用;如下載標(biāo)準(zhǔn)版,在運(yùn)行或發(fā)行uni-app時(shí),會(huì)提示安裝uni-app插件,插件下載完成后方可使用。

如使用cli方式創(chuàng)建項(xiàng)目,可直接下載標(biāo)準(zhǔn)版,因?yàn)閡ni-app編譯插件被安裝到項(xiàng)目下了

2.創(chuàng)建uni-app

在點(diǎn)擊工具欄里的文件->新建->項(xiàng)目:

選擇uni-app類(lèi)型,輸入項(xiàng)目名,選擇模板,點(diǎn)擊創(chuàng)建,即可成功創(chuàng)建。

uni-app自帶的模板有。Hello uni-app,是官方的組件和API示例。還有一個(gè)重要模板是uni ui項(xiàng)目模板,日常開(kāi)發(fā)推薦使用該模板,已內(nèi)置大量常用組件。

3.運(yùn)行uni-app

  • 瀏覽器運(yùn)行:進(jìn)入hello-uniapp項(xiàng)目,點(diǎn)擊工具欄的運(yùn)行->運(yùn)行到瀏覽器->選擇瀏覽器,即可在瀏覽器里面體驗(yàn)uni-app的H5版。
  • 真機(jī)運(yùn)行:連接手機(jī),開(kāi)啟USB調(diào)試,進(jìn)入hello-uniapp項(xiàng)目,點(diǎn)擊工具欄的運(yùn)行->真機(jī)運(yùn)行->選擇運(yùn)行的設(shè)備,即可在該設(shè)備里面體驗(yàn)uni-app。如手機(jī)無(wú)法識(shí)別,請(qǐng)點(diǎn)擊菜單運(yùn)行-運(yùn)行到手機(jī)或模擬器-真機(jī)運(yùn)行常見(jiàn)故障排查指南。注意當(dāng)前開(kāi)發(fā)App也需要安裝微信開(kāi)發(fā)者工具。
  • 在微信開(kāi)發(fā)者工具里運(yùn)行:進(jìn)入hello-uniapp項(xiàng)目,點(diǎn)擊工具欄的運(yùn)行->運(yùn)行到小程序模擬器->微信開(kāi)發(fā)者工具,即可在微信開(kāi)發(fā)者工具里面體驗(yàn)uni-app。注意:如果是第一次使用,需要先配置小程序ide的相關(guān)路徑,才能運(yùn)行成功。如下圖,需在輸入框輸入微信開(kāi)發(fā)者工具的安裝路徑。若HBuilderX不能正常啟動(dòng)微信開(kāi)發(fā)者工具,需要開(kāi)發(fā)者手動(dòng)啟動(dòng),然后將uni-app生成小程序工程的路徑復(fù)制到微信開(kāi)發(fā)者工具里面,在HBuilderX里面開(kāi)發(fā),在微信開(kāi)發(fā)者工具里面就可以看到實(shí)時(shí)的效果。uni-app或?qū)㈨?xiàng)目編譯到根目錄的unpackage目錄。
  • 在支付寶小程序開(kāi)發(fā)者工具里運(yùn)行:進(jìn)入hello-uniapp項(xiàng)目,點(diǎn)擊工具欄的運(yùn)行->運(yùn)行到小程序模擬器->支付寶小程序開(kāi)發(fā)者工具,即可在支付寶小程序開(kāi)發(fā)者工具里面體驗(yàn)uni -app。
  • 在百度開(kāi)發(fā)者工具里運(yùn)行:進(jìn)入hello-uniapp項(xiàng)目,點(diǎn)擊工具欄的運(yùn)行->運(yùn)行到小程序模擬器->百度開(kāi)發(fā)者工具,即可在百度開(kāi)發(fā)者工具里面體驗(yàn)uni-app。
  • 在字節(jié)跳動(dòng)開(kāi)發(fā)者工具里運(yùn)行:進(jìn)入hello-uniapp項(xiàng)目,點(diǎn)擊工具欄的運(yùn)行->運(yùn)行到小程序模擬器->字節(jié)跳動(dòng)開(kāi)發(fā)者工具,即可在字節(jié)跳動(dòng)開(kāi)發(fā)者工具里面體驗(yàn)uni -app。
  • 提示

    • 如果是第一次使用,需要配置開(kāi)發(fā)工具的相關(guān)路徑。請(qǐng)點(diǎn)擊工具欄的運(yùn)行->運(yùn)行到小程序模擬器->運(yùn)行設(shè)置,配置相應(yīng)的小程序開(kāi)發(fā)者工具的路徑。
    • 支付寶/百度/字節(jié)跳動(dòng)小程序工具,不支持直接指定項(xiàng)目啟動(dòng)并運(yùn)行。因此開(kāi)發(fā)工具啟動(dòng)后,替換HBuilderX控制臺(tái)中提示的項(xiàng)目路徑,在相應(yīng)的小程序開(kāi)發(fā)者工具中打開(kāi)。
    • 如果自動(dòng)啟動(dòng)小程序22
    • 】 發(fā)工具失敗,請(qǐng)手動(dòng)啟動(dòng)小程序開(kāi)發(fā)工具放入HBuilderX控制臺(tái)提示的項(xiàng)目路徑,打開(kāi)項(xiàng)目。

    運(yùn)行的快捷鍵是Ctrl+r。HBuilderX還提供了快捷運(yùn)行菜單,可以按數(shù)字快速選擇要運(yùn)行的設(shè)備:

    4.目錄結(jié)構(gòu)

    一個(gè) uni-app 工程,默認(rèn)包含如下目錄及文件:

    ┌─components uni-app組件目錄 │ └─comp-a.vue 可復(fù)用的a組件 ├─hybrid 存放本地網(wǎng)頁(yè)的目錄,詳見(jiàn) ├─platforms 存放各平臺(tái)專(zhuān)用頁(yè)面的目錄,詳見(jiàn) ├─pages 業(yè)務(wù)頁(yè)面文件存放的目錄 │ ├─index │ │ └─index.vue index頁(yè)面 │ └─list │ └─list.vue list頁(yè)面 ├─static 存放應(yīng)用引用靜態(tài)資源(如圖片、視頻等)的目錄,注意:靜態(tài)資源只能存放于此 ├─wxcomponents 存放小程序組件的目錄,詳見(jiàn) ├─main.js Vue初始化入口文件 ├─App.vue 應(yīng)用配置,用來(lái)配置App全局樣式以及監(jiān)聽(tīng) 應(yīng)用生命周期 ├─manifest.json 配置應(yīng)用名稱(chēng)、appid、logo、版本等打包信息,詳見(jiàn) └─pages.json 配置頁(yè)面路由、導(dǎo)航條、選項(xiàng)卡等頁(yè)面類(lèi)信息,詳見(jiàn)

    5.手機(jī)模擬器

    下載手機(jī)模擬器

    MUMU模擬器:https://mumu.163.com/

    模擬器端口:

    手機(jī)模擬器的名稱(chēng)默認(rèn)端口號(hào)
    Genymotion模擬器5555
    夜神模擬器62001/52001
    海馬玩模擬器26944
    mumu模擬器7555
    天天模擬器6555
    逍遙安卓模擬器21503
    BlueStacks 藍(lán)疊3模擬器5555
    雷神安卓模擬器5555
    騰訊手游助手5555

    應(yīng)用生命周期

    uni-app 支持如下應(yīng)用生命周期函數(shù):

    函數(shù)名說(shuō)明
    onLaunch當(dāng)uni-app初始化完成時(shí)觸發(fā)(局部只觸發(fā)一次)
    onShow當(dāng)uni-app啟動(dòng),或從后臺(tái)進(jìn)入前臺(tái)顯示
    onHide當(dāng)uni-app從前臺(tái)進(jìn)入后臺(tái)
    onError當(dāng)uni-app報(bào)錯(cuò)時(shí)觸發(fā)
    onUniNViewMessage對(duì)nvue頁(yè)面發(fā)送的數(shù)據(jù)進(jìn)行監(jiān)聽(tīng),可參考 nvue 向 vue 通訊
    onUnhandledRejection對(duì)未處理的 Promise 拒絕事件監(jiān)聽(tīng)函數(shù)(2.8.1+)
    onPageNotFound頁(yè)面不存在監(jiān)聽(tīng)函數(shù)
    onThemeChange監(jiān)聽(tīng)系統(tǒng)主題變化

    注意:應(yīng)用生命周期僅可在 App.vue 中監(jiān)聽(tīng),在其他頁(yè)面監(jiān)聽(tīng)無(wú)效

    頁(yè)面生命周期

    uni-app 支持如下頁(yè)面生命周期函數(shù):

    函數(shù)名說(shuō)明平臺(tái)差異說(shuō)明最低版本
    onInit監(jiān)聽(tīng)頁(yè)面初始化,其參數(shù)通onLoad參數(shù),為上個(gè)頁(yè)面?zhèn)鬟f的數(shù)據(jù),參數(shù)類(lèi)型為Object(用于頁(yè)面?zhèn)鲄?#xff09;,觸發(fā)時(shí)機(jī)早于onLoad百度小程序3.1.0+
    onLoad監(jiān)聽(tīng)頁(yè)面加載,其參數(shù)為上個(gè)頁(yè)面?zhèn)鬟f的數(shù)據(jù),參數(shù)類(lèi)型為 Object(用于頁(yè)面?zhèn)鲄?#xff09;
    onShow監(jiān)聽(tīng)頁(yè)面顯示。頁(yè)面每次出現(xiàn)在屏幕上都觸發(fā),包括從下級(jí)頁(yè)面點(diǎn)返回進(jìn)入當(dāng)前頁(yè)面
    onReady監(jiān)聽(tīng)頁(yè)面初次渲染完成。注意如果渲染速度快,會(huì)在頁(yè)面進(jìn)入動(dòng)畫(huà)完成前觸發(fā)
    onHide監(jiān)聽(tīng)頁(yè)面隱藏
    onUnload監(jiān)聽(tīng)頁(yè)面卸載
    onResize監(jiān)聽(tīng)窗口尺寸變化App,微信小程序
    onPullDownRefresh監(jiān)聽(tīng)用戶(hù)拖動(dòng)動(dòng)作,一般用于拖動(dòng)刷新,參考示例
    onReachBottom頁(yè)面上拉觸底事件的處理函數(shù)
    onTabItemTap單擊選項(xiàng)卡時(shí)觸發(fā),參數(shù)為對(duì)象,具體見(jiàn)以下注意事項(xiàng)微信小程序,百度小程序,H5,App(自定義組件模式)
    onShareAppMessage用戶(hù)點(diǎn)擊右上角分享微信小程序,百度小程序,字節(jié)跳動(dòng)小程序,支付寶小程序
    onPageScroll監(jiān)聽(tīng)頁(yè)面滾動(dòng),參數(shù)為對(duì)象nvue 暫不支持
    onNavigationBarButtonTap監(jiān)聽(tīng)原生標(biāo)題欄按鈕點(diǎn)擊事件,參數(shù)為對(duì)象5+ App,H5
    onBackPress監(jiān)聽(tīng)頁(yè)面返回,返回事件= {from:backbutton,navigationBack},backbutton 表示來(lái)源是左上角返回按鈕或android 返回鍵; navigateBack 表示來(lái)源是 uni.navigateBack;詳細(xì)說(shuō)明及使用:onBackPress 詳解。支付寶小程序只有真機(jī)能觸發(fā),只能監(jiān)聽(tīng)非 navigateBack 引起的返回,不可阻止默認(rèn)行為。App,H5、支付寶小程序
    onNavigationBarSearchInputChanged監(jiān)聽(tīng)原生標(biāo)題欄搜索輸入框輸入內(nèi)容變化事件App,H51.6.0
    onNavigationBarSearchInputConfirmed監(jiān)聽(tīng)原生標(biāo)題欄搜索輸入框搜索事件,用戶(hù)點(diǎn)擊軟鍵盤(pán)上的“搜索”按鈕時(shí)觸發(fā)。App,H51.6.0
    onNavigationBarSearchInputClicked監(jiān)聽(tīng)原生標(biāo)題欄搜索輸入框點(diǎn)擊事件App,H51.6.0
    onShareTimeline監(jiān)聽(tīng)用戶(hù)點(diǎn)擊右上角轉(zhuǎn)發(fā)到朋友去微信小程序2.8.1+
    onAddToFavorites監(jiān)聽(tīng)用戶(hù)點(diǎn)擊右上角收藏微信小程序2.8.1+

    onInit使用注意

    • 僅百度小程序基礎(chǔ)庫(kù) 3.260 以上支持 onInit 生命周期
    • 其他版本或平臺(tái)可以同時(shí)使用 onLoad 生命周期進(jìn)行兼容,注意避免重復(fù)執(zhí)行相同邏輯
    • 不依賴(lài)頁(yè)面?zhèn)鲄⒌倪壿嬁梢灾苯邮褂?created 生命周期替代

    組件生命周期

    uni-app 組件支持的生命周期,與 vue 標(biāo)準(zhǔn)組件的生命周期相同。這里沒(méi)有頁(yè)面級(jí)的 onLoad 等生命周期:

    函數(shù)名說(shuō)明平臺(tái)差異說(shuō)明最低版本
    beforeCreate在實(shí)例初始化之后被調(diào)用。詳見(jiàn)
    created在實(shí)例創(chuàng)建完成后被立即調(diào)用。詳見(jiàn)
    beforeMount在掛載開(kāi)始之前被調(diào)用。詳見(jiàn)
    mounted掛載到實(shí)例上去之后調(diào)用。詳見(jiàn) 注意:此處并不能確定子組件被全部掛載,如果需要子組件完全掛載之后在執(zhí)行操作可以使用$nextTickVue官方文檔
    beforeUpdate數(shù)據(jù)更新時(shí)調(diào)用,發(fā)生在虛擬 DOM 打補(bǔ)丁之前。詳見(jiàn)僅 H5 平臺(tái)支持
    updated由于數(shù)據(jù)更改導(dǎo)致的虛擬 DOM 重新渲染和打補(bǔ)丁,在這之后會(huì)調(diào)用該鉤子。詳見(jiàn)僅 H5 平臺(tái)支持
    beforeDestroy實(shí)例銷(xiāo)毀之前調(diào)用。在這一步,實(shí)例仍然完全可用。詳見(jiàn)
    destroyedVue 實(shí)例銷(xiāo)毀后調(diào)用。調(diào)用后,Vue 實(shí)例指示的所有東西都會(huì)解綁定,所有的事件監(jiān)聽(tīng)器會(huì)被移除,所有的子實(shí)例也會(huì)被銷(xiāo)毀。詳見(jiàn)

    三、路由

    uni-app頁(yè)面路由為框架統(tǒng)一管理,需要在pages.json里配置每個(gè)路由頁(yè)面的路徑和頁(yè)面樣式。類(lèi)似的小程序在app.json中配置頁(yè)面路由相同

    頁(yè)面棧

    框架以棧的形式管理當(dāng)前所有頁(yè)面,當(dāng)發(fā)生路由切換的時(shí)候,頁(yè)面棧的表現(xiàn)如下:

    路由方式頁(yè)面棧表現(xiàn)觸發(fā)時(shí)機(jī)
    初始化新頁(yè)面入棧uni-app:的第一個(gè)頁(yè)面
    新頁(yè)面新頁(yè)面入棧調(diào)用API uni.navigateTo ,使用組件 <navigator open-type =“ navigate” />
    頁(yè)面重啟當(dāng)前頁(yè)面出棧,新頁(yè)面入棧調(diào)用API uni.redirectTo ,使用組件 <navigator open-type =“ redirectTo” />
    頁(yè)面返回頁(yè)面不斷出棧,直到目標(biāo)返回頁(yè)調(diào)用API uni.navigateBack ,使用組件 <navigator open-type =“ navigateBack” /> ,用戶(hù)按左上角返回按鈕,安卓用戶(hù)點(diǎn)擊物理后退鍵
    標(biāo)簽切換頁(yè)面全部出棧,只留下新的標(biāo)簽頁(yè)面調(diào)用API uni.switchTab ,使用組件 <navigator open-type =“ switchTab” /> ,用戶(hù)切換Tab
    重加載頁(yè)面全部出棧,只留下新的頁(yè)面調(diào)用API uni.reLaunch ,使用組件 <navigator open-type =“ reLaunch” />

    判斷平臺(tái)

    平臺(tái)判斷有2種場(chǎng)景,一種是在編譯期判斷,一種是在運(yùn)行期判斷。

    • 編譯期判斷編譯期判斷,即條件編譯,不同平臺(tái)在編譯出包后已經(jīng)是不同的代碼
    // #ifdef H5alert("只有h5平臺(tái)才有alert方法") // #endif
    • 運(yùn)行期診斷運(yùn)行期判斷是指代碼已經(jīng)打入包中,仍然需要在運(yùn)行期判斷平臺(tái),此時(shí)可使用uni.getSystemInfoSync().platform判斷客戶(hù)端環(huán)境是Android,iOS還是小程序開(kāi)發(fā)工具(在百度小程序開(kāi)發(fā)工具,微信小程序開(kāi)發(fā)工具,支付寶小程序開(kāi)發(fā)工具中使用uni.getSystemInfoSync().platform返回值重置devtools)。
    switch(uni.getSystemInfoSync().platform){case 'android':console.log('運(yùn)行Android上')break;case 'ios':console.log('運(yùn)行iOS上')break;default:console.log('運(yùn)行在開(kāi)發(fā)者工具上')break; }

    四、樣式布局

    uni-app 支持的通用 css 單位包括 px、rpx

    • px 即屏幕像素
    • rpx 即響應(yīng)式px,一種根據(jù)屏幕寬度自適應(yīng)的動(dòng)態(tài)單位。以750寬的屏幕為基準(zhǔn),750rpx恰好為屏幕寬度。屏幕變寬,rpx 實(shí)際顯示效果會(huì)等比放大。

    vue頁(yè)面支持普通H5單位,但在nvue里不支持:

    • rem 默認(rèn)根字體大小為 屏幕寬度/20(微信小程序、字節(jié)跳動(dòng)小程序、App、H5)
    • vh viewpoint height,視窗高度,1vh等于視窗高度的1%
    • vw viewpoint width,視窗寬度,1vw等于視窗寬度的1%

    nvue還不支持百分比單位。

    App端,在 pages.json 里的 titleNView 或頁(yè)面里寫(xiě)的 plus api 中涉及的單位,只支持 px。注意此時(shí)不支持 rpx

    nvue中,uni-app 模式(nvue 不同編譯模式介紹)可以使用 px 、rpx,表現(xiàn)與 vue 中一致。weex 模式目前遵循weex的單位,它的單位比較特殊:

    • px:,以750寬的屏幕為基準(zhǔn)動(dòng)態(tài)計(jì)算的長(zhǎng)度單位,與 vue 頁(yè)面中的 rpx 理念相同。(一定要注意 weex 模式的 px,和 vue 里的 px 邏輯不一樣。)
    • wx:與設(shè)備屏幕寬度無(wú)關(guān)的長(zhǎng)度單位,與 vue 頁(yè)面中的 px 理念相同

    樣式導(dǎo)入

    使用@import語(yǔ)句可以導(dǎo)入外聯(lián)樣式表,@import后跟需要導(dǎo)入的外聯(lián)樣式表的相對(duì)路徑,用;表示語(yǔ)句結(jié)束。

    <style>@import "../../common/uni.css";.uni-card {box-shadow: none;} </style>

    內(nèi)聯(lián)樣式

    框架組件上支持使用 style、class 屬性來(lái)控制組件的樣式。

    • style:
    • class:

    選擇器

    目前支持的選擇器有:

    選擇器樣例樣例描述
    .class.intro選擇所有擁有 class=“intro” 的組件
    #id#firstname選擇擁有 id=“firstname” 的組件
    elementview選擇所有 view 組件
    element, elementview, checkbox選擇所有文檔的 view 組件和所有的 checkbox 組件
    ::afterview::after在 view 組件后邊插入內(nèi)容,僅微信小程序和App生效
    ::beforeview::before在 view 組件前邊插入內(nèi)容,僅微信小程序和App生效

    注意:

    • 在 uni-app 中不能使用 * 選擇器。
    • page 相當(dāng)于 body 節(jié)點(diǎn),例如:page { background-color:#ccc; }

    全局樣式與局部樣式

    定義在 App.vue 中的樣式為全局樣式,作用于每一個(gè)頁(yè)面。在 pages 目錄下 的 vue 文件中定義的樣式為局部樣式,只作用在對(duì)應(yīng)的頁(yè)面,并會(huì)覆蓋 App.vue 中相同的選擇器。

    注意:

    • App.vue 中通過(guò) @import 語(yǔ)句可以導(dǎo)入外聯(lián)樣式,一樣作用于每一個(gè)頁(yè)面。
    • nvue頁(yè)面暫不支持全局樣式

    背景圖片

    uni-app 支持使用在 css 里設(shè)置背景圖片,使用方式與普通 web 項(xiàng)目大體相同,但需要注意以下幾點(diǎn):

    • 支持 base64 格式圖片。
    • 支持網(wǎng)絡(luò)路徑圖片。
    • 小程序不支持在css中使用本地文件,包括本地的背景圖和字體文件。需以base64方式方可使用
    • 使用本地路徑背景圖片需注意:在背景圖片小于 40kb 時(shí),uni-app 編譯到不支持本地背景圖的平臺(tái)時(shí),會(huì)自動(dòng)將其轉(zhuǎn)化為 base64 格式;圖片大于等于 40kb,會(huì)有性能問(wèn)題,不建議使用太大的背景圖,如必須使用,則需自己將其轉(zhuǎn)換為 base64 格式使用,或?qū)⑵渑驳椒?wù)器上,從網(wǎng)絡(luò)地址引用。本地背景圖片的引用路徑推薦使用以 ~@ 開(kāi)頭的絕對(duì)路徑。 .test2 { background-image: url(‘~@/static/logo.png’); }

    注意

    • 微信小程序不支持相對(duì)路徑(真機(jī)不支持,開(kāi)發(fā)工具支持)

    字體圖標(biāo)

    uni-app 支持使用字體圖標(biāo),使用方式與普通 web 項(xiàng)目相同,需要注意以下幾點(diǎn):

    • 支持 base64 格式字體圖標(biāo)。
    • 支持網(wǎng)絡(luò)路徑字體圖標(biāo)。
    • 小程序不支持在css中使用本地文件,包括本地的背景圖和字體文件。需以base64方式方可使用。
    • 網(wǎng)絡(luò)路徑必須加協(xié)議頭 https。
    • 從 http://www.iconfont.cn 上拷貝的代碼,默認(rèn)是沒(méi)加協(xié)議頭的。
    • 從 http://www.iconfont.cn 上下載的字體文件,都是同名字體(字體名都叫iconfont,安裝字體文件時(shí)可以看到),在nvue內(nèi)使用時(shí)需要注意,此字體名重復(fù)可能會(huì)顯示不正常。
    • 使用本地路徑圖標(biāo)字體需注意:在字體文件小于 40kb 時(shí),uni-app 會(huì)自動(dòng)將其轉(zhuǎn)化為 base64 格式;字體文件大于等于 40kb,仍轉(zhuǎn)換為 base64 方式使用的話(huà)可能有性能問(wèn)題,如必須使用,則需自己將其轉(zhuǎn)換為 base64 格式使用,或?qū)⑵渑驳椒?wù)器上,從網(wǎng)絡(luò)地址引用;字體文件的引用路徑推薦使用以 ~@ 開(kāi)頭的絕對(duì)路徑。 @font-face { font-family: test1-icon; src: url(‘~@/static/iconfont.ttf’); }

    nvue中不可直接使用css的方式引入字體文件,需要使用以下方式在js內(nèi)引入。nvue內(nèi)不支持本地路徑引入字體,請(qǐng)使用網(wǎng)絡(luò)鏈接或者base64形式。src字段的url的括號(hào)內(nèi)一定要使用單引號(hào)。

    var domModule = weex.requireModule('dom'); domModule.addRule('fontFace', {'fontFamily': "fontFamilyName",'src': "url('https://...')" })

    示例:

    <template><view><view><text class="test">&#xe600;</text><text class="test">&#xe687;</text><text class="test">&#xe60b;</text></view></view> </template> <style>@font-face {font-family: 'iconfont';src: url('https://at.alicdn.com/t/font_865816_17gjspmmrkti.ttf') format('truetype');}.test {font-family: iconfont;margin-left: 20rpx;} </style>

    <template/>和<block/>

    uni-app 支持在 template 模板中嵌套 和 ,用來(lái)進(jìn)行 列表渲染 和 條件渲染。

    和 并不是一個(gè)組件,它們僅僅是一個(gè)包裝元素,不會(huì)在頁(yè)面中做任何渲染,只接受控制屬性。

    代碼示例

    <template><view><template v-if="test"><view>test 為 true 時(shí)顯示</view></template><template v-else><view>test 為 false 時(shí)顯示</view></template></view> </template> <template><view><block v-for="(item,index) in list" :key="index"><view>{{item}} - {{index}}</view></block></view> </template>

    五、條件編譯

    條件編譯

    條件編譯是用特殊的注釋作為標(biāo)記,在編譯時(shí)根據(jù)這些特殊的注釋,將注釋里面的代碼編譯到不同平臺(tái)。

    寫(xiě)法:以 #ifdef#ifndef%PLATFORM% 開(kāi)頭,以 #endif 結(jié)尾。

    • #ifdef:if defined 僅在某平臺(tái)存在
    • #ifndef:if not defined 除了某平臺(tái)均存在
    • %PLATFORM%:平臺(tái)名稱(chēng)
    條件編譯寫(xiě)法說(shuō)明
    #ifdef APP-PLUS 需條件編譯的代碼 #endif僅出現(xiàn)在 App 平臺(tái)下的代碼
    #ifndef H5 需條件編譯的代碼 #endif除了 H5 平臺(tái),其它平臺(tái)均存在的代碼
    #ifdef H5 || MP-WEIXIN 需條件編譯的代碼 #endif在 H5 平臺(tái)或微信小程序平臺(tái)存在的代碼(這里只有||,不可能出現(xiàn)&&,因?yàn)闆](méi)有交集)

    %PLATFORM% 可取值如下:

    值平臺(tái)
    APP-PLUSApp
    APP-PLUS-NVUEApp nvue
    H5H5
    MP-WEIXIN微信小程序
    MP-ALIPAY支付寶小程序
    MP-BAIDU百度小程序
    MP-TOUTIAO字節(jié)跳動(dòng)小程序
    MP-QQQQ小程序
    MP微信小程序/支付寶小程序/百度小程序/字節(jié)跳動(dòng)小程序/QQ小程序

    支持的文件

    • .vue
    • .js
    • .css
    • pages.json
    • 各預(yù)編譯語(yǔ)言文件,如:.scss、.less、.stylus、.ts、.pug

    注意: 條件編譯是利用注釋實(shí)現(xiàn)的,在不同語(yǔ)法里注釋寫(xiě)法不一樣,js使用 // 注釋、css 使用 /* 注釋 */、vue/nvue 模板里使用 ;

    API 的條件編譯

    // #ifdef %PLATFORM% 平臺(tái)特有的API實(shí)現(xiàn) // #endif

    示例,如下代碼僅在 App 下出現(xiàn):

    示例,如下代碼不會(huì)在 H5 平臺(tái)上出現(xiàn):

    除了支持單個(gè)平臺(tái)的條件編譯外,還支持多平臺(tái)同時(shí)編譯,使用 || 來(lái)分隔平臺(tái)名稱(chēng)。

    示例,如下代碼會(huì)在 App 和 H5 平臺(tái)上出現(xiàn):

    組件的條件編譯

    <!-- #ifdef %PLATFORM% --> 平臺(tái)特有的組件 <!-- #endif -->

    示例,如下廣告組件僅會(huì)在微信小程序中出現(xiàn):

    樣式的條件編譯

    /* #ifdef %PLATFORM% */ 平臺(tái)特有樣式 /* #endif */

    注意: 樣式的條件編譯,無(wú)論是 css 還是 sass/scss/less/stylus 等預(yù)編譯語(yǔ)言中,必須使用 /注釋/ 的寫(xiě)法。

    正確寫(xiě)法

    錯(cuò)誤寫(xiě)法

    pages.json 的條件編譯

    下面的頁(yè)面,只有運(yùn)行至 App 時(shí)才會(huì)編譯進(jìn)去。

    不同平臺(tái)下的特有功能,以及小程序平臺(tái)的分包,都可以通過(guò) pages.json 的條件編譯來(lái)更好地實(shí)現(xiàn)。這樣,就不會(huì)在其它平臺(tái)產(chǎn)生多余的資源,進(jìn)而減小包體積。

    注意

    • Android 和 iOS 平臺(tái)不支持通過(guò)條件編譯來(lái)區(qū)分,如果需要區(qū)分 Android、iOS 平臺(tái),請(qǐng)通過(guò)調(diào)用 uni.getSystemInfo 來(lái)獲取平臺(tái)信息。支持ifios、ifAndroid代碼塊,可方便編寫(xiě)判斷。

    總結(jié)

    以上是生活随笔為你收集整理的【uni-app基础教程】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。