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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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 …