UniApp 组件的深度运用

news2025/1/6 18:17:13

一、引言

在当今的移动应用开发领域,跨平台开发已成为主流趋势,而 UniApp 作为其中的佼佼者,备受开发者青睐。UniApp 的强大之处很大程度上源于其丰富且功能多样的组件体系,这些组件宛如精巧的积木,能够帮助开发者快速搭建出高性能、美观且功能完备的应用程序,无缝运行于多个平台,无论是 iOS、Android 还是 H5 等。然而,仅仅停留在基础组件的使用层面,远远无法发挥 UniApp 的真正潜力。本篇文章将深入探讨 UniApp 组件的深度运用,带你挖掘那些隐藏在常规用法背后的技巧、优化策略以及创新实践,助你在跨平台开发之路上披荆斩棘,打造出令人惊艳的应用作品,无论你是初涉 UniApp 的新手,还是经验丰富的开发者,相信都能从中收获满满干货。

二、UniApp 组件库全景洞察

2.1 组件库概览

UniApp 组件库是基于 Vue.js 框架进行开发的,它就像是一个琳琅满目的百宝箱,涵盖了各式各样的界面元素,从最为基础的文本显示、按钮交互,到复杂的导航栏、表单填写,再到绚丽的图片展示、视频播放等多媒体组件,应有尽有。这些组件遵循简洁易用的设计原则,开发者无需耗费大量精力去从头编写底层代码,只需按照组件的规则进行配置与组合,就能迅速搭建起应用的雏形。例如,一个简单的电商应用,利用组件库中的列表组件展示商品列表、图片组件呈现商品图片、按钮组件实现加入购物车等操作,短短几个组件的搭配,就能让核心购物流程初步跑通,极大地提升了开发效率,让创意能够快速落地为可运行的应用。

2.2 组件类型剖析

  • 基础组件:这是构建页面的基石,像<text>组件用于文本展示,通过设置属性可以灵活调整字体大小、颜色、粗细等样式,让信息以最恰当的形式呈现给用户;<view>组件则充当容器角色,类似 HTML 中的<div>,用于布局划分,把页面划分为不同的逻辑区域,方便后续组件的有序排列。在搭建一个资讯类应用的文章详情页时,<view>组件构建页面框架,<text>组件填充标题、正文内容,二者配合,撑起页面的基本结构。
  • 导航组件:负责管理应用内的页面跳转逻辑,<navigator>组件堪称核心。它支持多种跳转方式,如普通跳转、跳转到 tabBar 页面、返回上一页面等,并且可以携带参数,实现页面间的数据传递。以社交应用为例,从好友列表点击某个好友头像,利用<navigator>携带好友 ID 跳转到好友详情页,详情页接收参数后精准展示对应好友信息,保障用户流畅的交互体验,无缝穿梭于不同页面层级。
  • 表单组件:在需要用户输入信息的场景大放异彩,<input>组件用于接收文本输入,无论是简单的用户名、密码填写,还是复杂的评论内容输入,都能轻松应对,配合<textarea>组件处理多行文本,以及<checkbox>、<radio>组件实现多选、单选操作,满足多样化的表单需求。在注册登录页面,<input>收集账号密码,<checkbox>勾选协议,一系列表单组件协同,确保用户信息准确录入。
  • 媒体组件:为应用增添视觉听觉魅力,<image>组件高效加载并展示图片,支持本地图片资源与网络图片链接,配合懒加载等优化策略,避免图片加载卡顿;<video>组件让视频播放变得简单,可控制播放暂停、进度调节、全屏切换等功能,适用于在线教育类应用播放课程视频、短视频应用展示趣味视频等场景,丰富用户感知。

三、组件深度运用之核心秘籍

3.1 API 精通之道

深入理解并熟练运用组件的 API(应用程序编程接口)是挖掘组件最大潜力的关键。UniApp 组件的 API 文档详细记录了每个组件所拥有的属性、方法以及事件,这是开发者开启深度运用大门的 “密码本”。以常见的按钮组件<button>为例,它具有诸如 size(控制按钮大小)、type(设定按钮样式类型,像默认、危险、警告等风格)、disabled(是否禁用按钮)等属性。通过精准设置这些属性,开发者可以轻松打造出符合应用整体风格且交互友好的按钮。比如在一个任务管理应用中,对于已完成的任务,将对应操作按钮的 disabled 属性设为 true,使其变灰且不可点击,避免用户重复操作;同时,利用按钮的 @click 事件绑定相应的处理函数,当用户点击按钮时,触发函数执行诸如更新任务状态、发送网络请求等逻辑,实现无缝的人机交互,代码示例如下:

 

<button size="mini" type="primary" @click="handleSubmit">提交任务</button>

在上述代码中,按钮设置为小尺寸(size="mini")、主要风格(type="primary"),点击时触发 handleSubmit 函数,该函数在 Vue 实例的 methods 选项中定义,用于处理提交任务的相关业务逻辑。

3.2 组件的巧妙组合

依据应用的功能需求以及设计美学,巧妙地将不同组件组合使用,能够创造出远超单个组件功能之和的效果。当开发一个资讯类应用时,列表组件<list>结合图片组件<image>、文本组件<text>,便能构建出富有吸引力的资讯列表页面。<list>负责整体布局排列,<image>展示资讯配图,吸引用户目光,<text>呈现标题、简介等文本信息,为用户提供关键内容预览。示例代码如下:

 

<list>

<list-item v-for="(item, index) in newsList" :key="index">

<image :src="item.imageUrl" mode="aspectFill"></image>

<text class="news-title">{{ item.title }}</text>

<text class="news-desc">{{ item.desc }}</text>

</list-item>

</list>

这里,通过 v-for 指令遍历 newsList 数据数组,为每个资讯项动态生成包含图片、标题、简介的列表项,其中图片设置了填充模式(mode="aspectFill")以保证展示效果美观,不同组件各司其职又紧密配合,让资讯列表一目了然,提升用户浏览效率。

3.3 样式的个性定制

虽然组件自带默认样式,但为了契合应用独特的品牌形象与用户体验目标,个性化的样式定制不可或缺。UniApp 允许开发者利用内联样式以及外部样式表,借助组件提供的样式属性对其外观进行深度调整。例如对于列表组件<list>,可通过设置 padding 属性调整列表项间距,创造出疏密得当的视觉感受;又如,在一些场景下,利用插槽(slot)技术,能够在组件内部嵌入自定义内容,像在按钮组件旁插入一个信息图标,增强表意性。代码如下:

 

<button class="custom-btn">

<text>操作按钮</text>

<slot name="icon"></slot>

</button>

<style>

.custom-btn {

display: flex;

align-items: center;

}

</style>

在 Vue 实例中使用时:

 

<custom-btn>

<image slot="icon" src="info-icon.png" class="icon"></image>

</custom-btn>

通过这种方式,既保持了按钮的基本功能,又通过嵌入图标丰富了其信息提示,同时外部样式表调整按钮布局为弹性盒子(display: flex),让图标与文字完美排列,彰显个性化设计巧思。

3.4 Vue.js 生态融合

UniApp 与 Vue.js 生态紧密融合,借助 Vue Router、Vuex 等周边技术,能够进一步拓展组件的功能边界。Vue Router 可实现前端路由管理,让组件驱动的页面间导航更加顺滑。例如在一个多页面的电商应用中,通过配置 Vue Router,将商品列表组件所在页面与商品详情组件所在页面建立路由连接,当用户点击列表中的商品时,利用编程式导航(this.$router.push)携带商品 ID 跳转到详情页,精准加载对应商品信息,示例配置如下:

 

// 在路由模块

const routes = [

{

path: '/productList',

name: 'ProductList',

component: () => import('@/pages/ProductList.vue')

},

{

path: '/productDetail/:id',

name: 'ProductDetail',

component: () => import('@/pages/ProductDetail.vue')

}

]

const router = new VueRouter({

routes

})

// 在组件中使用

methods: {

goToDetail(productId) {

this.$router.push({ name: 'ProductDetail', params: { id: productId } })

}

}

而 Vuex 作为状态管理库,能让多个组件共享应用状态,如购物车组件、商品列表组件、结算组件等共享购物车商品数量、总价等状态,一处修改,多处响应,避免数据混乱,保障复杂交互场景下组件协同的一致性与高效性。

四、实战案例:组件铸就精彩应用

4.1 案例项目总览

为了让大家更直观地感受 UniApp 组件深度运用的魅力,我们选取一个仿知乎日报的项目作为实战案例。在这个项目中,需要实现资讯的分类展示、分页加载、文章详情跳转以及用户交互等一系列复杂功能,而 UniApp 组件将在其中扮演关键角色,助力我们打造出媲美原生应用的流畅体验。通过合理选用列表组件、导航组件、富文本组件等,构建起从资讯概览到深度阅读的一站式平台,涵盖首页信息流、文章详情页、导航栏切换、评论输入等多个核心场景,充分展现组件组合运用的强大力量。

4.2 关键组件实战运用

4.2.1 列表组件的极致发挥

在仿知乎日报的首页,新闻列表是吸引用户的关键区域,此时 uni-list 组件大显身手。它能够有序排列一条条新闻资讯,为提升视觉吸引力,为每个列表项配置缩略图,让用户一眼捕捉关键信息。利用组件的插槽机制,在标题旁嵌入新闻来源图标,增强信息可信度。代码实现如下:

 

<uni-list>

<uni-list-item v-for="(item, index) in newsData" :key="index">

<image :src="item.thumbnail" class="news-thumbnail"></image>

<view class="news-content">

<text class="news-title">{{ item.title }}</text>

<view class="news-source">

<image :src="item.sourceIcon" class="source-icon"></image>

<text class="source-text">{{ item.source }}</text>

</view>

</view>

</uni-list-item>

</uni-list>

在上述代码中,v-for 遍历 newsData 数组生成列表项,通过合理布局图片与文本组件,呈现美观且信息丰富的新闻列表。同时,为列表项绑定点击事件,实现跳转到对应文章详情页:

 

<uni-list-item v-for="(item, index) in newsData" :key="index" @click="goToDetail(item.id)">

<!-- 内部结构同上 -->

</uni-list-item>

<script>

export default {

methods: {

goToDetail(id) {

uni.navigateTo({

url: `/pages/detail/detail?id=${id}`

});

}

}

}

</script>

当用户点击列表项时,触发 goToDetail 方法,利用 uni.navigateTo API 携带新闻 ID 跳转到详情页,实现流畅交互。

4.2.2 导航栏组件的深度定制

导航栏作为应用的 “门头”,在仿知乎日报项目中同样有深度定制需求。借助 UniApp 的导航栏组件,不仅能设置常规的标题,还能按需添加左右按钮。例如,在首页导航栏右侧添加搜索按钮,方便用户查找特定资讯;当用户登录后,根据登录状态动态更新导航栏左侧显示用户头像或登录按钮,增强用户归属感与操作便捷性。代码逻辑如下:

 

<template>

<view>

<uni-nav-bar :title="pageTitle" left-text="返回" right-text="搜索" @leftclick="goBack" @rightclick="goSearch">

<view v-if="isLoggedIn" slot="left">

<image :src="userAvatar" class="avatar"></image>

</view>

<view v-else slot="left">

<text @click="goLogin">登录</text>

</view>

</uni-nav-bar>

<!-- 页面主体内容 -->

</view>

</template>

<script>

export default {

data() {

return {

pageTitle: '知乎日报',

isLoggedIn: false,

userAvatar: ''

};

},

methods: {

goBack() {

uni.navigateBack();

},

goSearch() {

// 跳转到搜索页面逻辑

},

goLogin() {

// 跳转到登录页面逻辑

}

}

};

</script>

<style>

.avatar {

width: 30px;

height: 30px;

border-radius: 50%;

margin-left: 10px;

}

</style>

在上述代码中,通过 Vue 的条件渲染(v-if、v-else)结合插槽,依据用户登录状态灵活展示导航栏左侧内容,点击事件绑定相应操作函数,无论是返回、搜索还是登录跳转,都精准满足用户在不同场景下的需求,提升应用易用性。后续我们还将在这个项目中继续深挖更多组件的深度用法,逐步完善整个应用的功能与体验,见证 UniApp 组件如何从零搭建起一个功能完备、交互友好的资讯平台。

五、性能优化与兼容性攻坚

5.1 性能优化策略

随着应用功能的丰富与数据量的增长,性能优化成为 UniApp 开发中不可忽视的环节。在组件运用层面,首先要尽量减少组件的嵌套层级。过多过深的组件嵌套会增加浏览器渲染负担,拖慢页面加载速度。例如在构建一个复杂的表单页面时,原本层层嵌套的<view>组件用于布局不同表单区域,优化后可依据实际样式需求,合理合并一些<view>,减少不必要的层级,让 DOM 结构更加扁平,代码如下:

 

<!-- 优化前 -->

<view class="form-container">

<view class="section">

<view class="item-label">用户名:</view>

<input class="input-field" placeholder="请输入用户名">

</view>

<view class="section">

<view class="item-label">密码:</view>

<input class="input-field" placeholder="请输入密码" type="password">

</view>

</view>

<!-- 优化后 -->

<view class="form-container">

<view class="section">

<text class="item-label">用户名:</text>

<input class="input-field" placeholder="请输入用户名">

</view>

<text class="item-label">密码:</text>

<input class="input-field" placeholder="请输入密码" type="password">

</view>

其次,合理运用懒加载技术,对于图片组件<image>、长列表组件<uni-list>等,采用懒加载能极大提升初始加载性能。如电商应用中的商品图片列表,当页面滚动到对应位置时,图片才开始加载,避免一次性加载大量图片导致卡顿,代码如下:

 

<image v-lazy="imageUrl" alt="商品图片"></image>

同时,优化数据更新机制也至关重要。在 UniApp 中,数据变化会触发视图更新,若频繁更新大量数据,会造成性能损耗。比如在实时更新商品库存数量的场景,避免直接在循环中频繁修改数据,而是通过精准定位修改对应数据项,并利用 Vue 的异步更新队列机制(如 this.$nextTick)确保更新高效进行,示例如下:

 

// 错误示例:频繁更新导致性能问题

methods: {

updateStock(productId, newStock) {

this.products.forEach(product => {

if (product.id === productId) {

product.stock = newStock; // 直接修改,引发多次不必要渲染

}

});

}

}

// 正确示例:精准高效更新

methods: {

updateStock(productId, newStock) {

const productIndex = this.products.findIndex(product => product.id === productId);

if (productIndex!== -1) {

// 使用 Vue.set 确保响应式更新

this.$set(this.products, productIndex, {...this.products[productIndex], stock: newStock });

this.$nextTick(() => {

// 数据更新后的操作,如更新相关统计信息等

});

}

}

}

5.2 跨平台兼容性适配

UniApp 虽主打一套代码多端运行,但不同平台(iOS、Android、H5 等)仍存在细微差异,组件的兼容性适配不可或缺。利用条件编译指令,开发者能针对特定平台编写差异化代码。在样式方面,如导航栏样式,iOS 倾向简洁透明风格,安卓则多为纯色带阴影风格,通过条件编译设置不同样式类:

 

<!-- #ifdef APP-PLUS-IOS -->

<uni-nav-bar class="ios-nav-bar" :title="pageTitle"></uni-nav-bar>

<!-- #endif -->

<!-- #ifdef APP-PLUS-ANDROID -->

<uni-nav-bar class="android-nav-bar" :title="pageTitle"></uni-nav-bar>

<!-- #endif -->

在组件使用上,某些平台特有的交互组件,如 iOS 的原生分享组件,安卓的系统弹窗组件,也可借助条件编译在对应平台引入并使用,确保功能与原生体验接轨:

 

<!-- #ifdef APP-PLUS-IOS -->

<view @click="openIOSShare">分享(iOS 专用)</view>

<template>

<div>

<!-- 引入 iOS 分享组件 -->

<ios-share ref="iosShare"></ios-share>

</div>

</template>

<script>

import iosShare from '@/components/ios-share.vue';

export default {

components: {

iosShare

},

methods: {

openIOSShare() {

this.$refs.iosShare.show(); // 调用 iOS 分享组件方法

}

}

};

</script>

<!-- #endif -->

<!-- #ifdef APP-PLUS-ANDROID -->

<view @click="openAndroidDialog">提示(安卓专用)</view>

<template>

<div>

<!-- 引入安卓系统弹窗组件 -->

<android-dialog ref="androidDialog"></android-dialog>

</div>

</template>

<script>

import androidDialog from '@/components/android-dialog.vue';

export default {

components: {

androidDialog

},

methods: {

openAndroidDialog() {

this.$refs.androidDialog.show(); // 调用安卓弹窗组件方法

}

}

};

</script>

<!-- #endif -->

此外,对于一些 CSS 特性的兼容性问题,如 flex 布局在不同平台的细微差异、单位换算(px、rpx、rem 等),都需要在样式编写时谨慎处理,借助预处理器(如 Less、Sass)的函数与变量,灵活适配不同平台的显示要求,保障组件在各平台都呈现完美效果。

六、总结与展望

通过本文对 UniApp 组件深度运用的全面剖析,我们清晰地认识到组件在跨平台应用开发中的核心地位。从了解组件库的全貌,到掌握组件运用的核心秘籍,再到实战项目中见证组件铸就精彩,以及攻克性能与兼容性难题,每一个环节都为打造优质应用奠定基石。UniApp 组件深度运用不仅是技术的堆叠,更是创意与工程实践的精妙融合,它让开发者能以高效的方式将构想落地,跨越不同平台界限,触达广泛用户群体。然而,技术发展永不止步,随着移动开发领域持续演进,新的交互模式、设计理念不断涌现,UniApp 组件也必然随之进化。开发者需保持敏锐学习触角,持续探索组件新特性、新组合,勇于在项目中创新实践,方能紧跟潮流,利用 UniApp 组件开发出更具竞争力、更贴合用户需求的卓越应用,在跨平台开发的广阔天地中持续领航,开启无限可能的应用开发新征程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2270999.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL字符串截取函数——Left()、Right()、Substring()用法详解

SQL字符串截取函数——Left&#xff08;&#xff09;、Right&#xff08;&#xff09;、Substring&#xff08;&#xff09;用法详解 1. LEFT() 函数&#xff1a;从字符串的左侧提取指定长度的子字符串。 LEFT(string, length)string&#xff1a;要操作的字符串。length&#x…

数字PWM直流调速系统设计(论文+源码)

2.1 系统方案设计 2.2.1开环控制方案 采用开环方案的系统架构如图2.1所示&#xff0c;这种方式不需要对直流电机的转速进行检测&#xff0c;在速度控制时单片机只需要直接发出PWM就可以实现直流电机速度的控制。这种方式整体设计难度较低&#xff0c;但是无法准确得知当前的…

Python | 学习type()方法动态创建类

getattr方法的使用场景是在访问不存在的属性时&#xff0c;会触发该方法中的处理逻辑。尤其是在动态属性获取中结合 type()动态创建类有着良好的使用关系。 type()方法常用来判断属性的类别&#xff0c;而动态创建类不常使用&#xff0c;通过如下的几个实例来学习使用&#xff…

CDP集群安全指南-静态数据加密

[一]静态数据加密的架构 CDP 支持两种加密组件&#xff0c;这些组件可以组合成独特的解决方案。在选择密钥管理系统&#xff08;KMS&#xff09;时&#xff0c;您需要决定哪些组件能够满足企业的密钥管理和加密需求。 CDP 加密组件 以下是 Cloudera 用于静态数据加密的组件描…

无线AP安装注意事项

现在的办公楼、酒店等项目中都设计含有网络无线覆盖这一项&#xff0c;在项目实施中&#xff0c;往往采用的是便捷并且后期便于网络无线设备管理的无线ap设备&#xff0c;作为前端无线信号的覆盖。在具体安装无线AP过程中&#xff0c;我们必须要注意以下几点才能保证项目实施完…

【动手学电机驱动】STM32-MBD(2)将 Simulink 模型部署到 STM32G431 开发板

STM32-MBD&#xff08;1&#xff09;安装 STM32 硬件支持包 STM32-MBD&#xff08;2&#xff09;Simulink 模型部署 【动手学电机驱动】STM32-MBD&#xff08;2&#xff09;Simulink 模型部署 1. 软硬件条件和环境测试1.1 软硬件条件1.2 开发环境测试 2. 创建基于 STM32 处理器…

adb 不是内部或外部命令,也不是可运行的程序或批处理文件。

1、问题概述&#xff1f; 本文讲述的是在window系统中安装了Android SDK之后&#xff0c;adb无法使用的情况。 在cmd中执行adb devices提示如下问题&#xff1a; adb 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 问题&#xff1a;没有配置android sdk环…

Win11+WLS Ubuntu 鸿蒙开发环境搭建(二)

参考文章 penHarmony南向开发笔记&#xff08;一&#xff09;开发环境搭建 OpenHarmony&#xff08;鸿蒙南向开发&#xff09;——标准系统移植指南&#xff08;一&#xff09; OpenHarmony&#xff08;鸿蒙南向开发&#xff09;——小型系统芯片移植指南&#xff08;二&…

拟声 0.60.0 | 拟态风格音乐播放器,支持B站音乐免费播放

「拟声」是一款音乐播放器&#xff0c;不仅支持音视频的本地播放&#xff0c;还提供了账号注册功能&#xff0c;登录后可享受自动同步歌单、歌词等。它支持播放绝大多数音频格式&#xff0c;具备固定输出采样率、独占输出、内置均衡器和音调调整等功能。同时&#xff0c;它也支…

word文档中的文档网格——解决相同行间距当显示出不同行间距的情况

1 问题 被一个行间距调疯了&#xff0c;就是样式改了没用&#xff0c;格式刷刷了没用。就是肉眼可以看出行间距完全不一样。 2 解决方法 1&#xff09;修改论文正文(即出现问题文本的样式)样式&#xff1a;样式>修改>格式>段落>缩进和间距>取消"如果定义了…

linux nginx maccms管理后台无法进入页面不存在和验证码不显示的问题

windows中运行maccms非常顺利&#xff0c;轻松搭建了。并一切正常。而我在linux中搭建缺遇到了一个非常奇怪的问题。进入管理后台&#xff0c;明明"admin.php"(比如重命名成a.php)的页面是存在的&#xff0c;访问时缺提示页面不存在&#xff01;稍后就自动跳到首页了…

简单使用linux

1.1 Linux的组成 Linux 内核&#xff1a;内核是系统的核心&#xff0c;是运行程序和管理 像磁盘和打印机等硬件设备的核心程序。 文件系统 : 文件存放在磁盘等存储设备上的组织方法。 Linux 能支持多种目前浒的文件系统&#xff0c;如 ext4 、 FAT 、 VFAT 、 ISO9660 、 NF…

pikachu靶场--目录遍历和敏感信息泄露

pikachu靶场—目录遍历和敏感信息泄露 目录遍历 概述 在web功能设计中,很多时候我们会要将需要访问的文件定义成变量&#xff0c;从而让前端的功能便的更加灵活。 当用户发起一个前端的请求时&#xff0c;便会将请求的这个文件的值(比如文件名称)传递到后台&#xff0c;后台再…

MyBatis-plus sql拦截器

因为业务需求&#xff0c;重新写了一套数据权限。项目中用的是mybtis-plus&#xff0c;正好MyBatis-Plus提供了插件数据权限插件 | MyBatis-Plus&#xff0c;那就根据文档来实现这个需求。 实现&#xff1a; 实现MultiDataPermissionHandler 首先创建MultiDataPermissionHan…

硬件-射频-PCB-常见天线分类-ESP32实例

文章目录 一&#xff1a;常见天线1.1 PCB天线①蓝牙模块的蛇形走线-天线②倒F天线-IFA&#xff1a;③蛇形倒F天线-MIFA④立体的倒F天线-PIFA 1.2 实例示意图1.21 对数周期天线(LPDA):1.22 2.4GHZ的八木天线&#xff1a;1.23 陶瓷天线&#xff1a;1.24 外接天线&#xff1a; 二&…

Gitlab-runner 修改默认的builds_dir并使用custom_build_dir配置

gitlab-runner 修改默认的builds_dir并使用custom_build_dir配置 1. 说明2. 实操&#xff08;以docker执行器为例&#xff09;2.1 修改默认的builds_dir2.1.1 调整gitlab-runner的配置文件2.1.2 CI文件 2.2 启用custom_build_dir2.2.1 调整gitlab-runner的配置文件2.2.2 CI文件…

WPF+Prism View与ViewModel绑定

1、开发环境&#xff0c;Win10VS2022.NET8Prism.DryIoc&#xff08;9.0.537&#xff09;或Prism.Unity。 2、通过NuGet安装Prism.DryIoc&#xff08;9.0.537&#xff09;或Prism.Unity。 2.1、创建ViewModels文件夹用于存放ViewModel文件、创建Views文件夹存放View文件。 将…

av1学习笔记(一):码流的整体框架

av1学习笔记&#xff08;一&#xff09;&#xff1a;码流的整体框架 目录 av1学习笔记&#xff08;一&#xff09;&#xff1a;码流的整体框架1. 码流结构分析&#xff1a;2. OBU信息分析2.1 obu_header2.2 obu_size2.3 drop_obu2.4 sequence_header_obu2.5 temporal_delimiter…

I2C(一):存储器模式:stm32作为主机对AT24C02写读数据

存储器模式&#xff1a;在HAL库中&#xff0c;I2C有专门对存储器外设设置的库函数 I2C&#xff08;一&#xff09;&#xff1a;存储器模式的使用 1、I2C轮询式写读AT24C02一页数据2、I2C轮询式写读AT24C02多页数据3、I2C中断式写读AT24C02一页数据4、I2C使用DMA式写读AT24C02一…

Ansys Discovery 中的网格划分方法:探索模式

本篇博客文章将介绍 Ansys Discovery 中可用于在探索模式下进行分析的网格划分方法。我们将在下一篇博客中介绍 Refine 模式下的网格划分技术。 了解 Discovery Explore 模式下的网格划分 网格划分是将几何模型划分为小单元以模拟系统在不同条件下的行为的过程。这是通过创建…