快速上手UniApp(適用于有Vue3基礎的)

作為一位有Vue3基礎的開發者,學習UniApp將會是一個相對平滑的過程。UniApp是一個使用Vue.js開發跨平臺應用的前端框架,可以編譯到iOS、Android、H5以及各種小程序平臺。

一、UniApp簡介

UniApp是基于Vue.js的跨平臺開發框架,具有以下特點:

  • 一次開發,多端發布(iOS/Android/H5/微信小程序/支付寶小程序等)
  • 使用Vue語法,學習成本低
  • 豐富的組件和API
  • 良好的社區支持和文檔

二、環境搭建

1. 安裝HBuilderX

vscode也可以寫uniapp,但是HBuilderX是官方推薦的IDE,下載地址:HBuilderX-高效極客技巧

2. 創建項目

  1. 打開HBuilderX
  2. 文件 → 新建 → 項目
  3. 選擇"uni-app"項目模板
  4. 填寫項目名稱和路徑
  5. 選擇"默認模板"或"uni-ui項目"
  6. 點擊創建

3. 項目結構

├── pages                 // 頁面目錄
│   ├── index             // 首頁
│   │   ├── index.vue     // 首頁vue文件
│   │   └── index.json    // 首頁配置文件
├── static                // 靜態資源
├── App.vue               // 應用入口文件
├── main.js               // 入口js文件
├── manifest.json         // 應用配置文件
└── pages.json            // 頁面路由和導航欄配置

三、Vue3與UniApp的結合

1. 組合式API使用

UniApp完全支持Vue3的組合式API,你可以像在Vue3中一樣使用setup()函數:

<script setup>
import { ref, onMounted } from 'vue'const count = ref(0)onMounted(() => {console.log('組件已掛載')
})function increment() {count.value++
}
</script><template><view><button @click="increment">點擊計數: {{ count }}</button></view>
</template>

2. 響應式系統

UniApp使用Vue3的響應式系統,你可以直接使用refreactive

<script setup>
import { ref, reactive } from 'vue'const message = ref('Hello UniApp!')
const user = reactive({name: '張三',age: 25
})function updateUser() {user.name = '李四'user.age += 1
}
</script>

四、核心概念

1. 頁面與組件

UniApp中的頁面和組件都是.vue文件,但有一些區別:

  • 頁面:位于pages目錄下,每個頁面有自己的路由路徑
  • 組件:可復用的UI單元,通常放在components目錄下

2. 路由系統

UniApp的路由配置在pages.json中:

{"pages": [{"path": "pages/index/index","style": {"navigationBarTitleText": "首頁"}},{"path": "pages/user/user","style": {"navigationBarTitleText": "用戶中心"}}]
}

頁面跳轉使用UniApp提供的API:

// 保留當前頁面,跳轉到應用內的某個頁面
uni.navigateTo({url: '/pages/user/user'
})// 關閉當前頁面,跳轉到應用內的某個頁面
uni.redirectTo({url: '/pages/user/user'
})// 返回上一頁面
uni.navigateBack()

3. 生命周期

UniApp在Vue生命周期基礎上擴展了一些應用和頁面生命周期:

??應用生命周期(App.vue中)??:

  • onLaunch - 初始化完成時觸發
  • onShow - 啟動或從后臺進入前臺顯示
  • onHide - 從前臺進入后臺

??頁面生命周期??:

  • onLoad - 頁面加載時
  • onShow - 頁面顯示時
  • onReady - 頁面初次渲染完成
  • onHide - 頁面隱藏時
  • onUnload - 頁面卸載時

在組合式API中,可以使用onXxx來監聽:

import { onLoad, onShow } from '@dcloudio/uni-app'onLoad(() => {console.log('頁面加載')
})onShow(() => {console.log('頁面顯示')
})

五、UI開發

1. 基本組件

UniApp提供了一系列跨平臺組件,替換了HTML原生標簽:

HTML標簽UniApp組件說明
divview視圖容器
spantext文本
imgimage圖片
anavigator鏈接

示例:

<view class="container"><text>這是一段文本</text><image src="/static/logo.png" mode="aspectFit"></image>
</view>

2. 樣式編寫

UniApp支持大部分CSS特性,但需要注意:

  • 使用rpx作為響應式單位(1rpx ≈ 0.5px)
  • 某些CSS屬性在不同平臺可能有差異
  • 支持Flex布局
.container {display: flex;flex-direction: column;align-items: center;padding: 20rpx;
}.title {font-size: 32rpx;color: #333;
}

3. 條件編譯

UniApp提供了條件編譯來處理多端差異:

<!-- #ifdef H5 -->
<view>這段內容只在H5平臺顯示</view>
<!-- #endif --><!-- #ifdef MP-WEIXIN -->
<view>這段內容只在微信小程序顯示</view>
<!-- #endif -->

也可以在JS中使用:

// #ifdef H5
console.log('這段代碼只在H5平臺執行')
// #endif

六、API調用

UniApp提供了豐富的API,涵蓋設備、網絡、媒體等功能:

1. 網絡請求

uni.request({url: 'https://example.com/api',method: 'GET',success: (res) => {console.log(res.data)},fail: (err) => {console.error(err)}
})

2. 數據緩存

// 異步存儲
uni.setStorage({key: 'token',data: 'abcdefg',success: () => {console.log('存儲成功')}
})// 同步存儲(推薦在setup中使用)
try {uni.setStorageSync('token', 'abcdefg')
} catch (e) {console.error(e)
}

3. 設備信息

uni.getSystemInfo({success: (res) => {console.log(res.platform) // 平臺console.log(res.windowWidth) // 窗口寬度}
})

七、狀態管理

對于復雜應用,可以使用Pinia進行狀態管理:

1. 安裝Pinia

npm install pinia @pinia/nuxt

2. 創建store

// stores/counter.js
import { defineStore } from 'pinia'export const useCounterStore = defineStore('counter', {state: () => ({count: 0}),actions: {increment() {this.count++}}
})

3. 在main.js中配置

import { createSSRApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'export function createApp() {const app = createSSRApp(App)app.use(createPinia())return {app}
}

4. 在組件中使用

<script setup>
import { useCounterStore } from '@/stores/counter'const counter = useCounterStore()
</script><template><view><text>Count: {{ counter.count }}</text><button @click="counter.increment()">增加</button></view>
</template>

八、調試與發布

1. 調試

  • H5:直接在瀏覽器中調試
  • 小程序:使用對應開發者工具
  • App:使用真機調試或模擬器

2. 發布

  1. HBuilderX中選擇"發行"
  2. 選擇目標平臺(H5/小程序/App等)
  3. 根據向導完成配置
  4. 生成發布包

九、學習資源

  1. 官方文檔:https://uniapp.dcloud.net.cn/
  2. UniUI組件庫:https://uniapp.dcloud.net.cn/component/uniui/uni-ui.html
  3. 插件市場:https://ext.dcloud.net.cn/
  4. 社區論壇:https://ask.dcloud.net.cn/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/90758.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90758.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90758.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

background和background-color的區別

前言&#xff1a;由于全局切換變量時&#xff0c;發現空頁面按鈕變量顏色未生效&#xff0c;審查元素發現變量未定義。實際上是背景色由純色變成了漸變色&#xff0c;而background-color不支持漸變色導致變量不生效特性backgroundbackground-color功能設置?所有?背景屬性&…

Vue Vue-route (5)

Vue 漸進式JavaScript 框架 基于Vue2的學習筆記 - Vue-route History模式和路由懶加載 目錄 History模式 設置history模式 后端配置 Apache 路由懶加載 配置 總結 History模式 設置history模式 Vue-route默認hash模式——使用URL的hash來模擬一個完整的URL&#xff0c…

家用智能攝像機PRV文件刪除的恢復方法

家用智能攝像頭一般采用的是mp4或者mov視頻方案&#xff0c;這一類方案文件通用性強、使用簡單&#xff0c;以MP4為例無論是APP在線播放還是TF卡接電腦查看都很輕松。即便如此&#xff0c;有些廠商還是走上了“自定義”的道路&#xff0c;自定義的文件結構導致無法正常播放&…

聊下easyexcel導出

直接上干貨&#xff0c;首先pom文件引入依賴 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.1</version></dependency>接下來是java代碼 public void export(List<Liquidity…

[Python] Flask 多線程繪圖時報錯“main thread is not in main loop”的解決方案

在構建基于 Flask 的后端服務過程中,使用 matplotlib 繪圖時,很多開發者會遇到一個經典的運行時錯誤: RuntimeError: main thread is not in main loop這通常出現在服務開啟多線程時調用 matplotlib,本文將從原理、解決方式到部署建議進行全面解析。 一、問題來源:matpl…

dbEaver連接hbase,各種問題的終極解決

網上有不少文章&#xff0c;但基本都不行&#xff0c;主要還是hbase版本和phoenix版本的問題&#xff0c;經我測試&#xff0c;如下方法保證能連接成功。 1、下載phoenix: https://phoenix.apache.org/download.html 要選擇和你的hbase版本對應的版本。 2、解壓phoenix-hbase-2…

selenium中find_element()用法進行元素定位

1. 導入必要的模塊首先需要導入 By 類&#xff1a;from selenium.webdriver.common.by import By2. 常用定位方式(1) 通過ID定位element driver.find_element(By.ID, "username") element.send_keys("testuser") # 輸入內容 (2) 通過Name定位element dr…

第八講~~數據庫技術

前言&#xff1a;什么是數據庫&#xff1f;存儲數據的倉庫。常見的數據庫有哪些&#xff1f;————SQL Server&#xff08;數據庫較大 5G&#xff09;————Access————Oracle&#xff08;大型數據庫700多兆-200多兆&#xff09;&#xff08;付費&#xff09;————My…

無人機雷達模塊運行與技術解析

一、運行方式1. 傳感器數據采集 雷達發射高頻電磁波&#xff08;X/Ku波段或毫米波&#xff09;&#xff0c;接收無人機反射的回波信號。 多傳感器協同&#xff1a;雷達與光電、無線電偵測、聲學設備并行掃描空域&#xff0c;覆蓋不同頻段與物理特性&#xff08;如熱信號、聲紋…

STM32中ADC詳解

前言 在嵌入式系統中&#xff0c;模擬信號與數字信號的轉換是連接物理世界與數字系統的核心環節。ADC&#xff08;Analog-to-Digital Converter&#xff0c;模數轉換器&#xff09;作為實現這一轉換的關鍵外設&#xff0c;被廣泛應用于傳感器數據采集&#xff08;如溫濕度、光照…

機器學習(ML)、深度學習(DL)、強化學習(RL)關系和區別

機器學習&#xff08;ML&#xff09;、深度學習&#xff08;DL&#xff09;、強化學習&#xff08;RL&#xff09;關系和區別區別一、機器學習的技術分層與范疇二、深度學習&#xff08;DL&#xff09; vs. 強化學習&#xff08;RL&#xff09;&#xff1a;在ML中的對比三、深度…

醫療AI前端開發中的常見問題分析和解決方法

一、 前端性能優化問題 (醫療AI場景尤其關鍵) 頁面加載速度慢的原因及解決方案 原因: 海量數據加載: 加載高分辨率DICOM影像序列、大型患者數據集、復雜模型參數。復雜計算: 在瀏覽器端運行輕量級AI推理(如分割預覽)、大型圖表渲染。第三方庫臃腫: 醫學可視化庫(Corners…

python庫之jieba 庫

jieba 庫jieba 庫的原理分析jieba庫可用于將中文的一段語句分解為單詞,通常用于解析中文語句的含義。例如外國人需要學習中文而中文語句是一直連續的文字組合。例如“我們在學習Python辦公自動化”這句話,外國人在理解這句話的含義時,首先需要將這句話正確地分解為一個個單詞,即…

基于Hadoop的航空公司客戶數據分析與客戶群體K-measn聚類分析(含LRFMC模型)

文章目錄有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部署調試可以私信博主項目介紹數據源介紹數據預處理hadoop集群分析建模分析總結每文一語有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部署調試可以私信博主 項目介紹 本研究依托全國范圍內的航空公司…

實習內容總結

相關來自AI非內部資料 Monorepo 大倉 + pnpm + Turborepo 工程化實踐原理 核心概念解釋 1. Monorepo (單倉庫架構) 概念:將多個項目(packages)放在同一個代碼倉庫中管理,而非分散在多個倉庫。優勢:統一管理依賴、版本一致性、跨項目復用代碼、原子化提交、簡化CI/CD流程…

余電快速泄放電路

余電快速泄放電路&#xff0c;即放電電路&#xff0c;用在需要快速反復開關電源&#xff0c;且負載電路上有大容量電容的場景。 斷開電源開關后&#xff0c;如果負載電路有大電容&#xff0c;會引起負載電路上的電壓下降緩慢。此時如果重新接上電源開關&#xff0c;負載電路在未…

MOSFET驅動電路設計時,為什么“慢”開,“快”關?

MOSFET作為開關器件&#xff0c;在驅動電路中主要用于控制電流的通斷&#xff0c;比如在DC-DC轉換器、電機驅動或者功率放大電路中。它的開關過程&#xff08;開和關&#xff09;會直接影響電路的效率、發熱和可靠性。“慢開快關”的這個設計原則&#xff0c;背后有什么電路設計…

分音塔科技(BABEL Technology) 的公司背景、股權構成、產品類型及技術能力的全方位解讀

分音塔科技&#xff08;BABEL Technology&#xff09; 的公司背景、股權構成、產品類型及技術能力的全方位解讀 文章目錄**分音塔科技&#xff08;BABEL Technology&#xff09;** 的公司背景、股權構成、產品類型及技術能力的全方位解讀**一、公司背景&#xff1a;清華系AI企業…

2025科大訊飛AI大賽<大模型技術方向>(Datawhale AI 夏令營)

賽事報名鏈接&#xff1a;2025 iFLYTEK AI開發者大賽-訊飛開放平臺 本賽事聚焦電商直播帶貨場景&#xff0c;要求基于帶貨視頻及評論文本數據&#xff0c;完成三階段任務&#xff1a; 任務一&#xff1a;商品識別 數據方面的信息 數據來源&#xff1a;origin_videos_data.cs…

M|電鋸驚魂

rating: 7.5 豆瓣: 8.7 M&#xff5c;電鋸驚魂 懸疑片&#xff0c;不恐怖。 前期中規中矩&#xff0c;中后期bug很多&#xff08;降智、劇情殺等&#xff09;&#xff0c;但是反轉優秀。 總之&#xff0c;醫生夫妻、兩位警察在此片中各有不同程度的降智。也許是這種恐怖、懸疑電…