当前位置: 首页 > news >正文

UniApp 组件的深度运用

一、引言

在当今的移动应用开发领域,跨平台开发已成为主流趋势,而 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 组件开发出更具竞争力、更贴合用户需求的卓越应用,在跨平台开发的广阔天地中持续领航,开启无限可能的应用开发新征程。

相关文章:

UniApp 组件的深度运用

一、引言 在当今的移动应用开发领域&#xff0c;跨平台开发已成为主流趋势&#xff0c;而 UniApp 作为其中的佼佼者&#xff0c;备受开发者青睐。UniApp 的强大之处很大程度上源于其丰富且功能多样的组件体系&#xff0c;这些组件宛如精巧的积木&#xff0c;能够帮助开发者快速…...

期末算法分析程序填空题

目录 5-1 最小生成树&#xff08;普里姆算法&#xff09; 5-2 快速排序&#xff08;分治法&#xff09; 输入样例&#xff1a; 输出样例&#xff1a; 5-3 归并排序(递归法) 输入样例&#xff1a; 输出样例&#xff1a; 5-4 求解编辑距离问题&#xff08;动态规划法&#xff09;…...

【机器学习】 卷积神经网络 (CNN)

文章目录 1. 为什么需要 CNN2. CNN 的架构3. 卷积层4. 池化层5. CNN 的应用 1. 为什么需要 CNN 前提&#xff1a;利用前置知识&#xff0c;去掉全连接神经网络中的部分参数&#xff0c;提升学习效率。本质&#xff1a;在 DNN 之前加上 CNN&#xff0c;先去除不必要的参数&…...

LeetCode热题100-字母异位词分组【JavaScript讲解】

题目&#xff1a; 根据题目想思路&#xff1a; 模式识别: 一旦需要根据特征进行归类的&#xff0c;就应该利用散列表。【散列表又叫哈希表】 我们遍历数组中的每一项&#xff0c;将每一项字符串拆分成一个一个的字符&#xff0c;并返回成数组的形式&#xff0c;并且进行排序后…...

面试241228

面试可参考 1、cas的概念 2、AQS的概念 3、redis的数据结构 使用场景 不熟 4、redis list 扩容流程 5、dubbo 怎么进行服务注册和调用&#xff0c;6、dubbo 预热 7如何解决cos上传的安全问题kafka的高并发高吞吐的原因ES倒排索引的原理 spring的 bean的 二级缓存和三级缓存 spr…...

AI界的拼多多:DeepSeek

AI界的拼多多:DeepSeek DeepSeek是一家位于中国杭州的人工智能基础技术研究公司,由杭州幻方量化投资管理合伙企业投资成立于2023年5月,专注于研究人工智能基础技术,其官网为deepseek.com.以下是关于DeepSeek的一些具体介绍及举例: 模型发布 DeepSeek Coder:2023年11月…...

备战春招 | 数字IC FPGA笔试题

在数字电路设计的领域&#xff0c;无论是数字IC&#xff08;集成电路&#xff09;还是FPGA&#xff08;现场可编程门阵列&#xff09;的设计&#xff0c;都需要对一系列核心概念有深刻的理解和掌握。随着科技的快速发展&#xff0c;这些领域的面试题目也在不断更新&#xff0c;…...

微服务-Sentinel新手入门指南

微服务为什么要使用流控降级组件 为了提高系统运行期间的稳定性和可用性 在微服务环境下&#xff0c;服务之间存在复杂的调用关系&#xff0c;单个服务的故障或过载可能会迅速影响到整个系统&#xff0c;导致服务雪崩效应。流控组件可以限制进入系统的流量&#xff0c;防止系…...

git clone 超时

git clone 超时 参考 https://blog.csdn.net/qq_45906972/article/details/142214187?utm_mediumdistribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-142214187-blog-137158358.235v43pc_blog_bottom_relevance_base8&spm1001.2101.3001.…...

java的bio、nio、aio 以及操作系统的select、poll、epoll

在 Java 和其他编程语言中&#xff0c;I/O 模型的选择对网络应用的性能和可扩展性有着重要影响。以下是 BIO&#xff08;Blocking I/O&#xff09;、NIO&#xff08;Non-blocking I/O&#xff09;、AIO&#xff08;Asynchronous I/O&#xff09;&#xff0c;以及操作系统级别的…...

Redis——数据过期策略

文章目录 1. 引入2. 数据过期策略2.1 策略一&#xff1a;惰性删除2.1.1 原理2.1.2 优点2.1.3 缺点 2.2 策略二&#xff1a;定期删除2.2.1 原理2.2.2 模式2.2.3 优点2.2.4 缺点 2.3 两种策略的比较 3. 总结 1. 引入 Redis 是一个 高性能 的非关系型数据库&#xff0c;由于 Redi…...

kubernetes Gateway API-1-部署和基础配置

文章目录 1 部署2 最简单的 Gateway3 基于主机名和请求头4 重定向 Redirects4.1 HTTP-to-HTTPS 重定向4.2 路径重定向4.2.1 ReplaceFullPath 替换完整路径4.2.2 ReplacePrefixMatch 替换路径前缀5 重写 Rewrites5.1 重写 主机名5.2 重写 路径5.2.1 重新完整路径5.2.1 重新部分路…...

二、SQL语言,《数据库系统概念》,原书第7版

文章目录 一、概览SQL语言1.1 SQL 语言概述1.1.1 SQL语言的提出和发展1.1.2 SQL 语言的功能概述 1.2 利用SQL语言建立数据库1.2.1 示例1.2.2 SQL-DDL1.2.2.1 CREATE DATABASE1.2.2.2 CREATE TABLE 1.2.3 SQL-DML1.2.3.1 INSERT INTO 1.3 用SQL 语言进行简单查询1.3.1 单表查询 …...

【postgresql 物化视图】自动刷新物化视图2种方法

普通视图就是一个虚拟表&#xff0c;不占内存。而物化视图是存在的&#xff0c;占内存。 物化视图&#xff0c;默认是手动刷新。下面是手动刷新的例子。我们来创建一个物化视图。 create MATERIALIZED VIEW dnh_analasis_view as select cjsj,a,b,c,d from table_1; REFRESH …...

1 数据库(下):多表设计 、多表查询 + SQL中的with查询语法(MySQL8.0以后版本才支持这种新语法)+ 数据库优化(索引优化)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、多表设计1 多表设计-概述2 三种多表关系一对多&#xff08;多对一&#xff09;&#xff08;1&#xff09;无外键约束&#xff08;逻辑外键&#xff09;&…...

CPT203 Software Engineering 软件工程 Pt.2 敏捷方法和需求工程(中英双语)

文章目录 3. Aglie methods&#xff08;敏捷方法&#xff09;3.1 Aglie methods&#xff08;敏捷方法&#xff09;3.1.1 特点3.1.2 优点3.1.3 缺点3.1.4 原则3.1.5 计划驱动与敏捷方法的对比 3.2 Scrum3.2.1 Scrum roles3.2.2 Scrum Activities and Artifacts3.2.2.1 Product B…...

【Linux】进度条

本文中&#xff0c;我们来写一个进度条。 本文大纲&#xff1a; 写一个命令行版的进度条。 1.回车换行 2.缓冲区问题&#xff08;本文不深究&#xff09; ​ 2.1测试代码 3.写一个什么样的进度条&#xff1f; ​ version1 ​ version2 回车换行 这俩不是一个概念&…...

期权懂|个股期权的流动性如何?

锦鲤三三每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 个股期权的流动性如何&#xff1f; 个股期权作为场外交易工具&#xff0c;具有较高的灵活性。场外交易意味着交易双方可以直接协商交易条款&#xff0c;这有助于满足不同投资者的…...

U盘格式化工具合集:6个免费的U盘格式化工具

在日常使用中&#xff0c;U盘可能会因为文件系统不兼容、数据损坏或使用需求发生改变而需要进行格式化。一个合适的格式化工具不仅可以清理存储空间&#xff0c;还能解决部分存储问题。本文为大家精选了6款免费的U盘格式化工具&#xff0c;并详细介绍它们的功能、使用方法、优缺…...

Java学习-Redis

简介 Redis诞生于2009年全称是Remote Dictionary Server&#xff0c;远程词典服务器&#xff0c;是一个基于内存的键值型NoSQL数据库。 特征 特征&#xff1a; 键值&#xff08;key-value&#xff09;型&#xff0c;value支持多种不同数据结构&#xff0c;功能丰富 单线程&a…...

Java处理视频思路

1.首先实现断点续传功能。 断点续传实现思路&#xff1a; 前端对文件分块。前端使用多线程一块一块上传&#xff0c;上传前给服务端发一个消息校验该分块是否上传&#xff0c;如果已上传则不再上传。如果从该断点处断网了&#xff0c;下次上传时&#xff0c;前面的分块已经存在…...

Python入门:8.Python中的函数

引言 在编写程序时&#xff0c;函数是一种强大的工具。它们可以将代码逻辑模块化&#xff0c;减少重复代码的编写&#xff0c;并提高程序的可读性和可维护性。无论是初学者还是资深开发者&#xff0c;深入理解函数的使用和设计都是编写高质量代码的基础。本文将从基础概念开始…...

计算机网络 (8)物理层的传输方式

一、串行传输与并行传输 串行传输 定义&#xff1a;串行传输是一种数据传输方式&#xff0c;指的是逐位地按照顺序传输数据。在串行传输中&#xff0c;数据位逐个按照一定的顺序进行传输&#xff0c;可以通过单条线路或信道进行。特点&#xff1a; 逐位传输&#xff1a;串行传输…...

3.微服务灰度发布落地实践(组件灰度增强)

文章目录 前言调用链示图dubbo服务之间的的调链cloud 服务之间的调用链 网关servlet容器: 标签续传1.定义插件2.实现灰度增强拦截 线程池: 标签续传1.拦截Runnable或Callable,接口增强实现标签续传;Callable 插件定义Runnable 插件定义拦载Callabl或Runnable构造(可共用)拦载ru…...

每天40分玩转Django:Django Email

Django Email 一、知识要点总览表 类别知识点基础配置SMTP设置、Email配置项发送方式同步发送、异步发送邮件类型纯文本、HTML邮件、带附件邮件异步任务Celery集成、任务队列高级特性邮件模板、批量发送 二、Email基础配置 1. 配置settings.py # settings.py EMAIL_BACKEN…...

ipad如何直连主机(Moonlight Sunshine)

Windows 被连接主机&#xff08;Windows&#xff09; 要使用的话需要固定ip&#xff0c;不然ip会换来换去&#xff0c;固定ip方法本人博客有记载Github下载Sunshine Sunshine下载地址除了安装路径需要改一下&#xff0c;其他一路点安装完成后会打开Sunshine的Web UI&#xff…...

linux 网络安全不完全笔记

一、安装Centos 二、Linux网络网络环境设置 a.配置linux与客户机相连通 b.配置linux上网 三、Yum详解 yum 的基本操作 a.使用 yum 安装新软件 yum install –y Software b.使用 yum 更新软件 yum update –y Software c.使用 yum 移除软件 yum remove –y Software d.使用 yum …...

一、Hadoop概述

文章目录 一、Hadoop是什么二、Hadoop发展历史三、Hadoop三大发行版本1. Apache Hadoop2. Cloudera Hadoop3. Hortonworks Hadoop 四、Hadoop优势1. 高可靠性2. 高扩展性3. 高效性4. 高容错性 五、Hadoop 组成1. Hadoop1.x、2.x、3.x区别2. HDFS 架构概述3. YARN 架构概述4. Ma…...

Android 转场动画合集

项目背景&#xff1a;mvvm组件化&#xff0c;然后由于领导要求&#xff0c;使用MainActivity为主界面&#xff0c;各种业务使用Fragment处理。所以~ 由于单独ActivityN Fragment 的方式&#xff0c;经过十多天的试错&#xff0c;我确认一件事情。再确认过架构方式后一定要了解下…...

STM32 软件I2C读写

单片机学习&#xff01; 目录 前言 一、软件I2C读写代码框架 二、I2C初始化 三、六个时序基本单元 3.1 引脚操作的封装和改名 3.2 起始条件执行逻辑 3.3 终止条件执行逻辑 3.4 发送一个字节 3.5 接收一个字节 3.5 发送应答&接收应答 3.5.1 发送应答 3.5.2 接…...

MySQL数据导出导出的三种办法(1316)

数据导入导出 基本概述 目前常用的有3中数据导入与导出方法&#xff1a; 使用mysqldump工具&#xff1a; 优点&#xff1a; 简单易用&#xff0c;只需一条命令即可完成数据导出。可以导出表结构和数据&#xff0c;方便完整备份。支持过滤条件&#xff0c;可以选择导出部分数据…...

三层交换机配置

✍作者&#xff1a;柒烨带你飞 &#x1f4aa;格言&#xff1a;生活的情况越艰难&#xff0c;我越感到自己更坚强&#xff1b;我这个人走得很慢&#xff0c;但我从不后退。 &#x1f4dc;系列专栏&#xff1a;网路安全入门系列 目录 一&#xff0c;三层交换二&#xff0c;实验案…...

odoo中@api.model, @api.depends和@api.onchange 装饰器的区别

文章目录 1. api.model用途特点示例 2. api.depends用途特点示例 3. api.onchange用途特点示例 总结 在 Odoo 中&#xff0c;装饰器&#xff08;decorators&#xff09;用于修饰方法&#xff0c;以指定它们的行为和触发条件。api.model、api.depends 和 api.onchange 是三个常用…...

Mysql的事务隔离机制

文章目录 事务基础概念隔离性与隔离机制的重要性四种隔离级别读未提交读已提交可重复读串行化 隔离级别设置与查看 事务基础概念 事务是一组数据库操作&#xff0c;这些操作要么全部成功执行&#xff0c;要么全部不执行。在 MySQL 中&#xff0c;事务通常以START TRANSACTION开…...

鸿蒙项目云捐助第二十八讲云捐助项目首页组件云数据库加载轮播图

鸿蒙项目云捐助第二十八讲云捐助项目首页组件云数据库加载轮播图 在前面的章节中实现了云捐赠项目的底部导航和分类导航&#xff0c;本讲继续使用云技术丰富首页组件中的功能。这里使用云数据库进行首页组件轮播图的加载。 一、云数据库进行首页组件轮播图的加载 在云捐助项…...

vue项目搭建规范

项目搭建规范 一. 代码规范1.1. 集成editorconfig配置1.2. 使用prettier工具1.3. 使用ESLint检测1.4. git Husky和eslint1.5. git commit规范1.5.1. 代码提交风格1.5.2. 代码提交验证 二. 第三方库集成2.1. vue.config.js配置2.2. vue-router集成2.3. vuex集成2.4. element-plu…...

Spring Boot的开发工具(DevTools)模块中的热更新特性导致的问题

问题&#xff1a; java.lang.ClassCastException: class cn.best.scholarflow.framework.system.domain.entity.SysUser cannot be cast to class cn.best.scholarflow.framework.system.domain.entity.SysUser (cn.best.scholarflow.framework.system.domain.…...

Unity Shader TexelSize的意义

TexelSize在制作玻璃折射效果时会用到。 // Get the normal in tangent space fixed3 bump UnpackNormal(tex2D(_BumpMap, i.uv.zw)); // Compute the offset in tangent space float2 offset bump.xy * _Distortion * _RefractionTex_TexelSize.xy; i.scrPos.xy offset * i…...

一个C#开发的APP

开发方式 C#Web、AndroidWebView 系统设计 系统主要分两个部分。一个是内容&#xff08;文章&#xff09;发布系统&#xff0c;另一个是预约和支付系统。 内容发布系统 和普通的文章发布系统不一样的地方在于&#xff0c;我们把每篇文章和大师关联起来。在文章的下方会显示…...

C++ 设计模式:原型模式(Prototype Pattern)

链接&#xff1a;C 设计模式 链接&#xff1a;C 设计模式 - 工厂方法 链接&#xff1a;C 设计模式 - 抽象工厂 链接&#xff1a;C 设计模式 - 建造者模式 原型模式&#xff08;Prototype Pattern&#xff09;是一种创建型设计模式&#xff0c;它允许一个对象通过复制现有对象来…...

window如何将powershell以管理员身份添加到右键菜单?(按住Shift键显示)

window如何将powershell以管理员身份添加到右键菜单&#xff1f; 在 Windows 中&#xff0c;将 PowerShell 以管理员身份添加到右键菜单&#xff0c;可以让你在需要提升权限的情况下快速打开 PowerShell 窗口。以下是详细的步骤&#xff0c;包括手动编辑注册表和使用注册表脚本…...

python爬虫——爬取全年天气数据并做可视化分析

一、主题页面的结构与特征分析 1&#xff0e;主题页面的结构与特征分析 目标内容界面&#xff1a; 2. Htmls 页面解析 3&#xff0e;节点查找方法与遍历方法 查找方法&#xff1a;find(): 查找第一个匹配到的节点。find_all(): 查找所有匹配到的节点&#xff0c;并返回一个…...

【Unity3D】ECS入门学习(十二)IJob、IJobFor、IJobParallelFor

IJob&#xff1a;开启单个线程进行计算&#xff0c;线程内不允许对同一个数据进行操作&#xff0c;也就是如果你想用多个IJob分别计算&#xff0c;将其结果存储到同一个NativeArray<int>数组是不允许的&#xff0c;所以不要这样做&#xff0c;如下例子就是反面教材&#…...

存储进阶笔记(二):Linux 存储栈:从 Device Mapper、LVM 到文件系统(2024)

记录一些平时接触到的存储知识。由于是笔记而非教程&#xff0c;因此内容不求连贯&#xff0c;有基础的同学可作查漏补缺之用。 存储进阶笔记&#xff08;一&#xff09;&#xff1a;硬件基础&#xff1a;HDD/SDD、JBOD、RAID 等&#xff08;2024&#xff09; 存储进阶笔记&am…...

MySQL——操作

一.库的操作 1.基本操作 创建数据库 create database 数据库名称; 查看数据库 show databases; 删除数据库 drop database 数据库名称; 执行删除之后的结果: 数据库内部看不到对应的数据库对应的数据库文件夹被删除&#xff0c;级联删除&#xff0c;里面的数据表全部被删 所…...

c++表达范围勿用数学符号

目的 遇上了一个C基础问题&#xff0c;一下子陷到里面&#xff0c;不知怎么回事了&#xff0c;知道后&#xff0c;又感觉太可笑。 这也许就是成长的代价。 下面就是细说说所遇上的问题。 关于C逻辑的一些知识点&#xff1a; 定义: 用逻辑运算符将两个表达式链接起来的式子称为…...

SAP PP bom历史导出 ALV 及XLSX 带ECN号

bom总数 104W PS超过XLSX上限 &#xff0c;那就分文件 *&---------------------------------------------------------------------* *& Report ZRPT_PP_BOM_HIS_ECN *&---------------------------------------------------------------------* *& tcode:zpp0…...

【AIGC-ChatGPT职业提示词指令】智能职业规划助手:基于SVG可视化的职业发展指南系统

引言 在当今快速变化的职场环境中,职业发展规划变得越来越复杂和充满挑战。无论是想要转行的技术人员,还是希望突破瓶颈的职场人士,都需要一个清晰的指导方向和可执行的行动计划。基于这种需求,我们设计了一个智能职业规划助手系统,它能够通过数据可视化的方式,为用户提…...

node.js之---单线程异步非阻塞 I/O

单线程模型 1、Node.js 使用 单线程 来处理客户端请求和执行任务 2、如果遇到异步任务&#xff0c;node.js使用事件循环和异步 I/O 模型&#xff0c;使得它能够高效地处理大量并发请求 异步操作有哪些 1、读取文件 2、网络请求 3、数据库操作等等 异步非阻塞 I/O Node.…...

DotnetSpider实现网络爬虫

1. 使用DotnetSpider框架 DotnetSpider是一个开源的、轻量、灵活、高性能、跨平台的分布式网络爬虫框架,适用于.NET平台。它可以帮助开发者快速实现网页数据的抓取功能。 1.1 安装DotnetSpider NuGet包 首先,你需要在你的.NET项目中安装DotnetSpider NuGet包。你可以通过…...