UniappDay01

1.技術架構

在這里插入圖片描述

2.創建uniapp項目
  1. 通過HBuilderX創建
  • 官網安裝
  • 創建uniapp vue3項目
  • 安裝uniapp vue3的編譯器
  • 在工具欄啟動微信小程序
  • 開啟服務端口
  • 模擬器窗口分離和置頂
  1. 通過命令行創建
3.pages.json和tabbar案例

pages.json用來配置路由,導航欄,tabbar等頁面類信息
圖標等靜態資源放到static中,否則打包不了
這個一點要勾選上
在這里插入圖片描述
tabbar中至少配置兩項,否則會報錯
給微信小程序配置AppID

4.uni-app和原生小程序開發時候的區別

數據綁定事件及事件處理同Vue.js規范:

  1. 屬性綁定 src=“{{ url }}” 升級成 :src=“url”
  2. 事件綁定 bindtap=“eventName” 升級成 @tap=“eventName”,支持()傳參
  3. 支持Vue常用指令 v-if, v-for, v-show, v-model 等
<template><swiper indicator-dots autoplay class="banner" circular :interval="3000" :duration="1000"><swiper-item v-for="item in pictures" :key="item.id"><image @tap="onPreImage(item.url)" :src="item.url"></image></swiper-item></swiper>
</template><script>export default {data() {return {title: 'Hello uniapp',// 輪播圖數組pictures: [{ id: '1', url: "https://pcapi-xiaotuxian-front-devtest.itheima.net/miniapp/uploads/goods_preview_1.jpg" },{ id: '2', url: "https://pcapi-xiaotuxian-front-devtest.itheima.net/miniapp/uploads/goods_preview_2.jpg" },{ id: '3', url: "https://pcapi-xiaotuxian-front-devtest.itheima.net/miniapp/uploads/goods_preview_3.jpg" },{ id: '4', url: "https://pcapi-xiaotuxian-front-devtest.itheima.net/miniapp/uploads/goods_preview_4.jpg" },{ id: '5', url: "https://pcapi-xiaotuxian-front-devtest.itheima.net/miniapp/uploads/goods_preview_5.jpg" },]}},onLoad() {},methods: {onPreImage(url) {// 全局幫助預覽wx.previewImage({urls: this.pictures.map(v=>v.url),current: url})}}}
</script><style>.banner,.banner image {height: 750rpx;width: 750rpx;}
</style>

最好把wx換成url

5.命令行創建uni-app項目

在這里插入圖片描述

  1. npx degit xxx 創建項目
  2. manifest.json添加appid
  3. pnpm install
  4. pnpm i
  5. pnpm dev:mp-weixin
  6. 導入微信開發者工具
6.用VS Code開發uni-app項目

在這里插入圖片描述
分別為:

  1. uni-create-view
  2. uni-helper
  3. uniapp小程序擴展

//pages數組中第一項表示應用啟動頁,參考:https://uniapp.dcloud.io/collocation/pages

在這里插入圖片描述

  1. pnpm i -D @types/wechat-miniprogram @uni-helper/uni-app-types

在這里插入圖片描述

7.拉取小兔鮮兒項目模板代碼

注意事項:
在manifest.json中添加微信小程序的appid
克隆命令: git clone http://git.itcast.cn/heimaqianduan/erabbit-uni-app-vue3-ts.git heima-shop

  1. pnpm install
  2. pnpm i
  3. pnpm dev:mp-weixin
  4. 導入微信開發者工具
8.基礎架構-使用uni-app組件庫

在這里插入圖片描述

pnpm i @dcloudio/uni-ui

// pages.json
// 組件自動引入規則"easycom": {// 是否開啟自動掃描"autoscan": true,// 以正則方式自定義組件匹配規則"custom": {// uni-ui 規則如下配置"^uni-(.*)": "@dcloudio/uni-ui/lib/uni-$1/uni-$1.vue",// 以 Xtx 開頭的組件,在 components 文件夾中查找引入(需要重啟服務器)"^Xtx(.*)": "@/components/Xtx$1.vue"}},

easycom通過uniapp配置實現組件,不用我們手動導入

安裝依賴:pnpm i -D @uni-helper/uni-ui-types

9.基礎架構-小程序端Pinia持久化

在這里插入圖片描述

 {// 網頁端配置// persist: true,// 小程序端配置persist: {storage: {// 獲取數據getItem(key) {return uni.getStorageSync(key)},// 設置數據setItem(key, value) {uni.setStorageSync(key, value)},},},},

將網頁端傳統的API調整成小程序的API
在這里插入圖片描述

10.基礎架構-請求和上傳文件攔截器

在這里插入圖片描述

import { useMemberStore } from '@/stores'const baseURL = 'https://pcapi-xiaotuxian-front-devtest.itheima.net'// 添加攔截器
const httpInterceptor = {// 攔截前觸發invoke(options: UniApp.RequestOptions) {// 1. 非 http 開頭需拼接地址if (!options.url.startsWith('http')) {options.url = baseURL + options.url}// 2. 請求超時, 默認 60s,改為10秒 options.timeout = 10000// 3. 添加小程序端請求頭標識options.header = {// 如果有先保留原有標識...options.header,// 再添加特殊標識'source-client': 'miniapp',}// 4. 添加 token 請求頭標識const memberStore = useMemberStore()const token = memberStore.profile?.tokenif (token) {options.header.Authorization = token}},
}
uni.addInterceptor('request', httpInterceptor)
uni.addInterceptor('uploadFile', httpInterceptor)
11.基礎架構-封裝Promise請求函數

在這里插入圖片描述

// http.js
interface Data<T> {code: stringmsg: stringresult: T
}// 添加類型,支持泛型
export const http = <T>(options: UniApp.RequestOptions) => {// 返回Promise對象return new Promise<Data<T>>((reslove, reject) => {uni.request({...options,// 請求成功success(res) {// 提取核心數據// 通過as斷言。指定res.data 為與上面一樣的類型,即 Data<T>reslove(res.data as Data<T>)},})})
}// my.vue
<script setup lang="ts">
import { useMemberStore } from '@/stores'
import { http } from '@/utils/http'const memberStore = useMemberStore()
const getData = async () => {const res = await http<string[ ]>({method: 'GET',url: '/home/banner',header: {},})console.log('請求成功', res.result)
}
</script>
12.請求函數-獲取數據失敗

在這里插入圖片描述

  1. uni.request的success回調函數只是表示服務器響應成功,沒處理響應狀態碼,業務中使用不方便。
  2. axios函數是只有響應狀態碼是2開頭的才能調用resolve函數,表示數據獲取成功,業務中使用更準確
// 添加類型,支持泛型
export const http = <T>(options: UniApp.RequestOptions) => {// 返回Promise對象return new Promise<Data<T>>((reslove, reject) => {uni.request({...options,// 請求成功success(res) {if (res.statusCode >= 200 && res.statusCode < 300) {// 提取核心數據// 通過as斷言。指定res.data 為與上面一樣的類型,即 Data<T>reslove(res.data as Data<T>)} else if (res.statusCode === 401) {// 清空用戶數據const memberStore = useMemberStore()memberStore.clearProfile()uni.navigateTo({ url: '/pages/login/login' })// 調用失敗函數reject(res)} else {// 其他類型,輕提示uni.showToast({icon: 'none',title: (res.data as Data<T>).msg || '請求錯誤',})reject(res)}},// 失敗fail(err) {uni.showToast({icon: 'none',title: '網絡錯誤,換個網絡試試',})reject(err)},})})
}
13.首頁-自定義導航欄
  1. 準備組件
<script setup lang="ts">
import CustomNavbar from './components/CustomNavbar.vue'
</script><template><CustomNavbarom /><view class="index">index</view>
</template><style lang="scss">
//
</style>
  1. 隱藏默認導航欄,修改文字顏色
 {"path": "pages/index/index","style": {// 意思是自定義"navigationStyle": "custom","navigationBarTextStyle": "white","navigationBarTitleText": "首頁"}},
  1. 樣式適配 ->安全區域
const { safeAreaInsets } = uni.getSystemInfoSync()
console.log(safeAreaInsets)<view class="logo" :style="{ paddingTop: safeAreaInsets?.top + 'px' }">

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

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

相關文章

子空間投影,投影矩陣,最小二乘法

一、子空間投影 1.1 投影與誤差向量b 在 向量a 上的投影即 a 上離 b 最近的點&#xff1a; paTbaTaa p \frac{a^T b}{a^Ta}a paTaaTb?a 我們記 誤差 e b - p&#xff0c;顯然誤差e 和 a 是正交的。 1.2 投影矩陣向量b 在子空間S上的投影是S中離b 最近的向量p。 我們做如下推…

基于FPGA的SPI控制FLASH讀寫

基于FPGA的SPI控制FLASH讀寫 文章目錄基于FPGA的SPI控制FLASH讀寫一、SPI簡介二、FLASH_M25P16簡介信號描述功能操作注意時序三、設計思路框圖設計狀態機設計四、上板驗證1、讀ID2、讀數據3、扇區擦除寫數據五、總結六、代碼一、SPI簡介 SPI是Serial Peripheral interface的縮…

Pytest 參數化進階:掌握 parametrize 的多種用法

概述 在自動化測試中,@pytest.mark.parametrize 不僅僅能用來為測試函數提供多組輸入數據,還能配合其他功能實現更復雜的測試邏輯。本文將帶你深入了解 @pytest.mark.parametrize 的多種常見用法,助你在不同場景下寫出更高效、更清晰的測試代碼 基礎用法回顧:單個參數化 …

K8S 九 安全認證 TLS

目錄第九章 安全認證訪問控制概述認證管理授權管理 RBACRBACRolerules中的參數RoleBinding9.4 準入控制其他K8S的TLS是什么&#xff08;DeepSeek&#xff09;1. 加密通信2. 身份認證&#xff08;Authentication&#xff09;3. 數據完整性K8s 中 TLS 的具體應用**1. API Server …

積分兌換小程序Java

某個學校為了激勵學生踴躍參加一些社會實踐活動&#xff0c;會對參與者給予一些校園積分&#xff0c;學生們獲得校園積分后可以使用校園積分在指定的老師那兌換一些學習用具&#xff0c;當前可兌換的物品和對應的積分數量如下&#xff1a;鉛筆1分橡皮2分作業本3分文具盒5分為了…

函數指針示例

使用函數指針來調用 printf。下面是對代碼的詳細解釋&#xff1a;&#x1f4c4; 源代碼解析#include <stdio.h>int main() {int (*myshow)(const char *, ...); // 聲明一個函數指針&#xff0c;指向可變參數函數printf("hello world!\n");myshow printf; /…

不坑盒子突然不見了怎么辦?

如果你安裝后之前一切正常&#xff0c;突然某天在Office的功能區看不到不坑盒子了&#xff0c;這種是插件被禁用了&#xff0c;重裝安裝插件、Office都是不能解決的&#xff0c;必須按下面的方法解決。WPS中1.隨便打開一個文檔&#xff0c;點擊文件-選項-信任中心&#xff0c;最…

Java面試全棧通關:從微服務到AI的技術深度解析

Java面試全棧通關&#xff1a;從微服務到AI的技術深度解析 面試現場&#xff1a;大廠技術終面室 面試官&#xff1a;謝飛機同學&#xff0c;今天我們將從基礎到架構&#xff0c;全面考察你的Java技術棧掌握程度。請真實展示你的技術水平。 謝飛機&#xff1a;&#xff08;挺胸抬…

《Java 程序設計》第 7 章 - 繼承與多態

引言在 Java 面向對象編程中&#xff0c;繼承與多態是兩大核心特性&#xff0c;它們共同支撐了代碼的復用性、擴展性和靈活性。本章將從繼承的基本實現開始&#xff0c;逐步深入到方法覆蓋、訪問控制、抽象類等概念&#xff0c;最終揭示多態的本質與應用。通過大量可運行的代碼…

ksql連接數據庫免輸入密碼交互

ksql連接數據庫免輸入密碼交互1. 使用 .pgpass 文件&#xff08;推薦&#xff09;2. 使用環境變量3. 使用連接字符串4. 修改 ksql 的別名&#xff08;簡化命令&#xff09;5. 注意事項6. 密碼含特殊字符轉義在 Kingbase 中使用 ksql 連接數據庫時&#xff0c;如果希望避免每次手…

UniApp H5 適配 PC 端新姿勢:打造跨設備一致體驗

在移動互聯網蓬勃發展的今天&#xff0c;很多開發者會選擇使用 UniApp 來開發多端應用&#xff0c;尤其是 H5 端&#xff0c;因其無需下載安裝即可訪問的特性&#xff0c;深受用戶喜愛。但 UniApp H5 應用在 PC 端直接打開時&#xff0c;往往會因為屏幕尺寸的巨大差異&#xff…

【MySQL#4】函數 復合查詢 內外連接

&#x1f4c3;個人主頁&#xff1a;island1314 ?? 歡迎關注&#xff1a;&#x1f44d;點贊 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f49e; &#x1f49e; &#x1f49e; 生活總是不會一帆風順&#xff0c;前進的道路也不會永遠一馬平川&#xff0c;如何面…

C++常見面試題之一

一、語言基礎與內存管理const與constexpr的區別&#xff1f;應用場景&#xff1f; const&#xff1a;運行時常量&#xff0c;修飾變量/函數不可修改。constexpr&#xff1a;編譯期常量&#xff08;C11&#xff09;&#xff0c;用于優化計算&#xff08;如數組大小&#xff09;。…

Golang 語言中的指針介紹

介紹&#xff1a;指針式一種數據類型&#xff0c;用來存儲值的內存地址&#xff0c;為了便于理解&#xff0c;我們也可以把指針未內存地址&#xff0c;指針類型只占用內存4個或 8 個字節&#xff0c;在Golang 語言中&#xff0c;類型名稱加 * 表示改類型的指針類型。指針類型變…

Flink 狀態管理設計詳解:StateBackend、State、RocksDB和Namespace

為什么需要 StateBackend&#xff1f;—— 職責分離原則我們可以用一個銀行的例子來類比&#xff1a;State (如 ValueState, ListState) 就像是你的銀行卡。AbstractKeyedStateBackend 就像是銀行的整個后臺系統&#xff08;包括總服務器、數據庫、風控系統、會計系統等&#x…

櫥柜鉸鏈的革命:炬森精密如何以創新科技重塑家居體驗

在現代化家居設計中&#xff0c;櫥柜不僅是存儲空間的核心&#xff0c;更是生活品質的象征。而作為櫥柜的“關節”&#xff0c;櫥柜鉸鏈的性能直接影響著日常使用的便捷性、安全性和耐久性。然而&#xff0c;許多消費者在櫥柜使用中常遭遇噪音干擾、頻繁松動或早期損壞等痛點&a…

醫療系統國產化實錄:SQL Server國產替代,乙方保命指南

醫療行業的SQL Server替代&#xff0c;和普通業務系統完全不是一個量級——醫囑邏輯嵌套幾十層存儲過程、收費結算小數點錯位能引發醫患糾紛、電子病歷查詢慢一秒醫生直接拍桌子。作為被按在手術臺上的乙方PM&#xff0c;實測四款主流國產庫后&#xff0c;掏心窩子說句實話&…

WAIC 2025 盛大啟幕,深思考邀您解鎖端側 AI 新可能?!

2025 世界人工智能大會今日正式啟幕&#xff0c;深思考人工智能&#xff08;iDeepWise&#xff09;攜端側多模態大模型技術成果登陸展會&#xff0c;與行業伙伴共探端側 AI 發展新機遇。作為專注于類端側多模態大模型領域的創新力量&#xff0c;深思考此次重點展示了 iDeepWise…

MySQL相關概念和易錯知識點(2)(表結構的操作、數據類型、約束)

目錄1.表結構的操作&#xff08;1&#xff09;增加表&#xff08;2&#xff09;查看庫中所有的表&#xff08;3&#xff09;查看表每個列的約束&#xff08;4&#xff09;刪除整張表&#xff08;5&#xff09;刪除某個具體的列&#xff08;6&#xff09;增加某個具體的列&#…

1. Qt多線程開發

目錄方法1.繼承QThread使用案例總結方法2.將qobject對象moveToThread&#xff08;官方推薦&#xff09;使用案例總結方法3.QRunnable QThreadPool使用案例總結方法4.快速線程QtConcurrentQFutureWatcher使用案例總結代碼下載方法1.繼承QThread 需要實現QThread的抽象函數run …