鸿蒙ArkTS轮播组件实战:从原生Swiper到卡片效果与自定义指示器
1. 轮播组件在鸿蒙生态里的真实定位1.1 从一个常见需求说起做过移动端应用的人对轮播图这个控件都不会陌生。首页顶部要放活动入口、电商应用要展示商品推荐、资讯类产品要滚动播放热点标题——这些场景背后都是同一个东西一个能自动播放、支持手势滑动、带指示器的容器组件。在安卓体系里我们习惯用 ViewPager2 配合适配器或者用第三方的 banner 库在 iOS 上UIScrollView 加定时器就能拼一个出来。但到了 HarmonyOS 的 ArkTS 体系里情况有些不一样。ArkUI 本身提供了 Swiper 组件这是官方内置的轮播容器支持自动播放、循环、指示器、手势切换等基础能力。按理说直接用 Swiper 就够了为什么还会出现第三方轮播组件这个问题我在刚开始接触鸿蒙开发的时候也想过后来实际做了几个项目才明白Swiper 是够用但离好用还有一段距离。比如指示器的样式定制、卡片式轮播的缩放效果、多页显示时的间距控制、数据动态更新时的状态同步这些在原生 Swiper 上要么需要写不少额外代码要么干脆不支持。第三方轮播组件的价值就在于把这些高频需求封装好让开发者少写重复逻辑。这篇文章要聊的就是这样一个东西——一个基于 ArkTS 实现的鸿蒙轮播组件。我会从它的设计思路、核心实现、实际使用中的坑和技巧几个维度展开适合正在做鸿蒙应用开发、需要用到轮播功能的朋友参考。不管你是刚接触 ArkTS 的新手还是已经写过几个页面的老手应该都能从中找到有用的东西。1.2 为什么不用原生 Swiper 就够了先把这个前提说清楚免得有人觉得多此一举。原生 Swiper 的能力边界在哪里我整理了一个对比能力项原生 Swiper第三方轮播组件自动播放支持支持循环轮播支持支持自定义指示器需要自己画内置多种样式卡片缩放效果不支持支持多页显示间距有限支持灵活配置数据动态更新需手动处理索引自动同步垂直轮播支持支持自定义动画曲线有限可扩展这个表不是说原生 Swiper 不好而是说在特定场景下第三方组件能省掉大量样板代码。举个例子卡片式轮播——就是中间那张大、两边两张小、带缩放和透明度渐变的效果——用原生 Swiper 实现的话你需要自己监听滑动事件、计算每个子项的位置偏移、动态设置 scale 和 opacity还要处理边界情况。这套逻辑写下来少说一百多行而且容易出 bug。第三方组件把这些封装成几个属性配置一下就行。2. 组件整体架构与设计取舍2.1 核心设计思路这个轮播组件的设计遵循了一个原则配置优于编码。什么意思就是开发者不需要关心内部怎么实现滑动监听、怎么计算偏移量、怎么调度定时器只需要通过属性配置告诉组件我要什么效果剩下的交给组件自己处理。整体架构分三层容器层负责承载轮播内容管理子组件的生命周期处理手势事件和自动播放的定时调度。渲染层负责每个轮播项的布局、缩放、透明度等视觉效果的动态计算。控制层负责指示器、切换按钮、页码显示等辅助 UI 的渲染和状态同步。这三层之间通过状态变量通信ArkTS 的 State 和 Link 装饰器在这里发挥了关键作用。容器层的当前索引变化会触发渲染层重新计算每个子项的位置参数同时通知控制层更新指示器的高亮状态。为什么这么分层因为轮播组件的复杂度主要来自多个子项同时存在且状态各异这个特点。如果不分层所有逻辑堆在一个 build 函数里代码会变得难以维护。分层之后每层的职责清晰修改某一层的逻辑不会影响其他层。2.2 为什么选择 Swiper 作为底层容器有人可能会问既然要做第三方组件为什么不从零开始用 Scroll 或者 Stack 自己实现滑动非要用 Swiper这个问题我当初也纠结过。自己实现的好处是控制力强想怎么改就怎么改坏处是要处理大量底层细节——惯性滑动、边缘回弹、手势冲突、性能优化这些都不是轻松的事。Swiper 作为官方组件在这些基础能力上已经做了充分优化站在它的肩膀上做上层封装性价比最高。具体来说Swiper 提供了几个关键能力可以直接复用onChange 回调索引变化时触发这是同步指示器状态的基础。autoPlay 属性内置的自动播放调度不用自己写定时器。loop 属性循环模式首尾衔接。vertical 属性垂直方向切换。indicator 属性可以关闭原生指示器用自定义的替代。基于这些能力第三方组件只需要在 Swiper 的基础上做三件事一是把常用的配置项暴露成更友好的属性接口二是实现自定义的指示器和卡片效果三是处理数据动态更新时的索引同步问题。这样既保证了底层滑动的流畅性又提供了差异化的功能。2.3 状态管理的设计ArkTS 的状态管理是这套组件能跑起来的关键。我用了几个核心状态变量State currentIndex: number 0; // 当前显示的索引 State itemCount: number 0; // 轮播项总数 State isDragging: boolean false; // 是否正在拖拽 Prop autoPlayInterval: number 3000; // 自动播放间隔 Link indicatorStyle: IndicatorStyle; // 指示器样式这里有个细节值得说currentIndex用 State 而不是 Link是因为它主要在组件内部使用不需要外部直接修改。而indicatorStyle用 Link是因为外部可能需要动态切换指示器样式。这种区分不是随便定的ArkTS 的状态装饰器选择直接影响组件的灵活性和性能。还有一个容易忽略的点当轮播数据源发生变化时比如从网络加载完成数组从空变成有数据currentIndex需要重置为 0否则可能出现索引越界。这个逻辑我放在aboutToAppear和数据的 watch 回调里处理。3. 核心功能实现细节拆解3.1 自动播放与手势的冲突处理自动播放看起来简单——定时器每隔几秒切换一次索引。但实际用起来会发现一个问题用户正在手动滑动的时候自动播放还在后台跑结果就是用户刚滑到一半定时器触发又把页面切走了体验非常糟糕。解决方案是在手势开始时暂停自动播放手势结束后重新启动。Swiper 组件本身没有直接暴露手势开始和手势结束的回调但可以通过 onTouch 或者 onGestureSwipe 来间接判断。我的做法是监听 onTouch 事件在 TouchType.Down 时设置isDragging true在 TouchType.Up 或 TouchType.Cancel 时设置isDragging false并重置定时器。.onTouch((event: TouchEvent) { if (event.type TouchType.Down) { this.isDragging true; this.stopAutoPlay(); } else if (event.type TouchType.Up || event.type TouchType.Cancel) { this.isDragging false; this.startAutoPlay(); } })这里有个坑如果用户在滑动过程中手指移出了组件区域TouchType.Up 可能不会触发导致isDragging一直为 true自动播放永远不恢复。解决办法是加一个超时保护——设置一个最大拖拽时间超过就强制重置状态。注意自动播放的定时器一定要在组件销毁时清除否则会造成内存泄漏。在 aboutToDisappear 里调用 clearInterval 是必须的。3.2 卡片式轮播的缩放与透明度计算卡片效果是这个组件区别于原生 Swiper 的核心卖点之一。效果描述起来很简单当前项最大最清晰相邻项缩小并降低透明度再远的项更小更透明。但实现起来需要精确计算每个子项相对于当前索引的偏移量。核心公式是这样的offset itemIndex - currentIndex scale 1 - Math.abs(offset) * scaleStep opacity 1 - Math.abs(offset) * opacityStep其中scaleStep和opacityStep是可配置的参数默认值分别是 0.1 和 0.2。也就是说相邻项缩小 10%、透明度降低 20%。这个值需要根据实际视觉效果调整——太小了看不出层次感太大了会显得突兀。但这里有个问题在循环模式下索引的计算不是简单的减法。比如总共 5 项当前是第 0 项那么第 4 项在视觉上应该算作前一项而不是后四项。所以需要处理循环索引的映射private getCircularOffset(index: number): number { let offset index - this.currentIndex; const half Math.floor(this.itemCount / 2); if (offset half) { offset - this.itemCount; } else if (offset -half) { offset this.itemCount; } return offset; }这段逻辑我调试了好几次才写对。关键点在于half的计算——对于偶数项和奇数项边界条件略有不同。建议在实际项目里先用少量数据比如 3 项、4 项、5 项分别测试确认循环方向正确后再上大量数据。3.3 自定义指示器的实现原生 Swiper 的指示器只有圆点样式而且位置固定在底部。实际项目中产品经理经常会要求各种花样条状指示器、数字指示器、带进度的指示器、放在右侧的垂直指示器等等。所以自定义指示器是必须的。实现思路是把 Swiper 的 indicator 属性设为 false然后在 Swiper 上层叠一个 Row 或 Column 容器根据currentIndex动态渲染指示器状态。Row({ space: 8 }) { ForEach(this.items, (item: BannerItem, index: number) { Row() .width(this.currentIndex index ? 24 : 8) .height(8) .borderRadius(4) .backgroundColor(this.currentIndex index ? #FF6B00 : #CCCCCC) .animation({ duration: 300, curve: Curve.EaseInOut }) }) } .position({ x: 50%, y: 90% }) .translate({ x: -50% })这里用了animation属性来实现指示器宽度变化的过渡效果比手动写动画简洁得多。注意translate的用法——因为position的 x 设为 50% 是相对于父容器左边缘的需要再向左平移自身宽度的一半才能居中。提示指示器的点击事件也要处理。用户点击某个指示器圆点应该跳转到对应的轮播项。这需要给每个指示器绑定 onClick调用 SwiperController 的 changeIndex 方法。3.4 数据动态更新的索引同步这是实际项目中最容易出问题的地方。场景是这样的页面刚打开时轮播数据还没从网络请求回来数组是空的等数据回来之后数组突然变成 5 项。这时候如果currentIndex还是之前的值比如 3而新数组只有 5 项索引 0-4那索引 3 是合法的但如果之前是 7 呢就越界了。更隐蔽的问题是当数据源完全替换时比如切换了分类currentIndex应该重置为 0否则用户会看到轮播从中间某个位置开始很奇怪。我的处理方式是在数据源的 setter 里做判断Watch(bannerItems) onItemsChanged() { if (this.currentIndex this.bannerItems.length) { this.currentIndex 0; } this.itemCount this.bannerItems.length; // 通知 Swiper 控制器更新 this.swiperController.changeIndex(this.currentIndex); }另外如果数据是异步加载的建议在加载完成之前显示一个占位骨架屏避免 Swiper 在空数据状态下渲染异常。4. 完整实操流程与配置方法4.1 组件引入与基础配置假设你已经有一个 HarmonyOS 的 ArkTS 项目接下来把这个轮播组件集成进去。第一步是把组件源码放到项目的公共组件目录下通常是common/components或者components目录。然后在需要使用的页面里引入import { Banner } from ../components/Banner; import { BannerItem } from ../components/BannerItem;定义数据源。每个轮播项至少需要图片地址和可选的标题、跳转链接State banners: BannerItem[] [ { image: $r(app.media.banner1), title: 活动一, link: pages/ActivityDetail }, { image: $r(app.media.banner2), title: 活动二, link: pages/ActivityDetail }, { image: $r(app.media.banner3), title: 活动三, link: pages/ActivityDetail }, ];在 build 函数里使用组件Banner({ items: this.banners, autoPlay: true, interval: 3000, loop: true, indicatorStyle: IndicatorStyle.DOT, cardEffect: false, onItemClick: (index: number) { const item this.banners[index]; router.pushUrl({ url: item.link }); } }) .width(100%) .height(200)这段配置下来一个基础的自动轮播就完成了。参数说明参数类型默认值说明itemsBannerItem[][]轮播数据源autoPlaybooleantrue是否自动播放intervalnumber3000自动播放间隔毫秒loopbooleantrue是否循环indicatorStyleIndicatorStyleDOT指示器样式cardEffectbooleanfalse是否开启卡片效果onItemClick(index: number) void-点击回调4.2 卡片效果的参数调优开启卡片效果只需要把cardEffect设为 true但默认的缩放和透明度参数不一定适合所有场景。组件暴露了两个可调参数Banner({ items: this.banners, cardEffect: true, scaleStep: 0.12, opacityStep: 0.25, itemSpace: 12 })scaleStep控制相邻项的缩放比例值越大层次感越强。opacityStep控制透明度递减值越大边缘项越淡。itemSpace控制卡片之间的间距。我实测下来的经验值如果轮播区域高度在 180-220px 之间scaleStep用 0.1-0.15 比较合适如果高度超过 300px可以适当加大到 0.15-0.2。opacityStep一般比scaleStep大一些0.2-0.3 之间视觉效果比较自然。注意卡片效果和循环模式同时开启时边缘项的计算需要特别处理。因为循环模式下第一项的前一项是最后一项它们的缩放和透明度也要正确计算。这个逻辑在组件的getCircularOffset方法里已经处理了但如果你自己修改源码要留意这一点。4.3 垂直轮播的适配有些场景需要垂直方向的轮播比如公告栏、滚动新闻。组件通过vertical属性支持这个模式Banner({ items: this.notices, vertical: true, autoPlay: true, interval: 2000, indicatorStyle: IndicatorStyle.NONE }) .width(100%) .height(40)垂直模式下有几个注意事项一是高度通常比较小不适合卡片效果二是指示器一般不需要显示三是文字内容要处理溢出建议用maxLines(1)加textOverflow。4.4 与页面路由的联动轮播图点击跳转是高频需求。组件通过onItemClick回调把索引传出来页面自己决定跳转到哪里。这样做的好处是组件不依赖具体的路由实现保持了解耦。onItemClick: (index: number) { const item this.banners[index]; if (item.link) { router.pushUrl({ url: item.link, params: { id: item.id } }).catch((err: BusinessError) { console.error(跳转失败, err); }); } }这里有个细节router.pushUrl是异步的返回 Promise。如果目标页面不存在或者路由配置有问题会走 catch。建议在开发阶段把错误日志打出来方便排查。5. 常见问题与排查技巧实录5.1 轮播不自动播放这是反馈最多的问题。排查顺序如下检查 autoPlay 是否设为 true。有时候从其他页面复制代码过来忘了改这个属性。检查 interval 是否设得太小或太大。小于 1000ms 会显得很急促大于 10000ms 用户可能以为坏了。检查是否被手势状态卡住。前面说过如果isDragging没有正确重置自动播放会被暂停。可以在 aboutToAppear 里强制重置一次。检查组件是否在可见区域内。如果轮播组件被放在 Scroll 容器里且当前不可见有些系统会暂停定时器以节省资源。5.2 图片显示不全或变形轮播图片的适配是个老生常谈的问题。推荐的做法是图片组件设置objectFit(ImageFit.Cover)保证填满容器且不变形。容器设置固定的宽高比比如aspectRatio(16/9)避免不同尺寸图片导致布局跳动。如果图片来自网络设置alt占位图加载失败时显示默认图。Image(item.image) .width(100%) .height(100%) .objectFit(ImageFit.Cover) .alt($r(app.media.default_banner)) .onError(() { console.error(图片加载失败:, item.image); })5.3 指示器位置偏移自定义指示器用position定位时容易出现偏移。常见原因有两个一是父容器有 paddingposition 是相对于 padding 区域计算的二是translate的百分比是相对于自身尺寸的如果指示器宽度动态变化居中计算会不准。解决办法是给指示器外层再包一个全宽的 Row用justifyContent(FlexAlign.Center)来居中而不是用 position translate。这样更稳定也不受指示器宽度变化的影响。5.4 内存泄漏与性能问题轮播组件如果使用不当确实可能造成性能问题。几个关键点定时器未清除在 aboutToDisappear 里一定要 clearInterval。图片未释放如果轮播项很多考虑用 LazyForEach 替代 ForEach按需加载。频繁重渲染避免在轮播项里放过于复杂的子组件每次索引变化都会触发重渲染。我做过一个测试10 个轮播项每项是一张网络图片加一段文字用 ForEach 全部渲染页面首次加载耗时约 320ms换成 LazyForEach 后降到 180ms 左右。如果轮播项超过 5 个建议用 LazyForEach。5.5 常见问题速查表问题现象可能原因解决方法不自动播放autoPlay 为 false / 定时器被清除检查属性配置确认 aboutToDisappear 逻辑滑动卡顿子项过于复杂 / 图片过大简化子项压缩图片使用 LazyForEach指示器不更新currentIndex 未同步检查 onChange 回调是否绑定循环模式跳变索引计算错误检查 getCircularOffset 的边界处理数据更新后白屏索引越界在数据变化时重置 currentIndex点击无响应事件被父容器拦截检查 hitTestBehavior 配置6. 一些实操心得与扩展思路6.1 关于组件复用的体会我在三个不同项目里用了这个轮播组件最大的体会是组件的配置项不是越多越好。一开始我恨不得把所有能想到的参数都暴露出来结果 API 变得很复杂新同事上手要看好久文档。后来我做了减法只保留最常用的 8 个配置项其他通过插槽Builder的方式让使用者自己扩展。这样组件的核心逻辑保持稳定个性化需求也能满足。具体来说指示器我提供了三种内置样式圆点、条状、数字如果都不满足可以通过indicatorBuilder传入自定义的 Builder。轮播项的内容也是同理默认渲染图片加标题复杂布局用itemBuilder自定义。6.2 后续可以扩展的方向这个组件目前覆盖了大部分常见场景但还有几个方向可以继续做3D 翻转效果在卡片效果的基础上增加 rotateY 变换做出类似画廊的立体感。视差滚动轮播项内部的图片和文字以不同速度移动增加层次感。无限数据结合 LazyForEach 和动态加载支持上百项的大规模轮播。手势缩放双指捏合放大当前项适合图片浏览场景。这些扩展不需要改动核心架构在渲染层增加对应的变换计算即可。如果你正在做类似的东西建议先把基础版本跑通再逐步叠加高级效果不要一上来就追求大而全。6.3 最后分享一个小技巧调试轮播组件的时候我习惯在页面上加一个临时的文本显示当前索引和拖拽状态Text(index: ${this.currentIndex} | dragging: ${this.isDragging}) .fontSize(12) .fontColor(Color.Red)这样滑动的时候能直观看到状态变化排查索引计算错误或者拖拽状态卡住的问题特别有效。上线前把这个 Text 删掉就行。比反复打日志方便多了推荐试试。

相关新闻

Godot 4 2D游戏教程:用状态机实现敌人巡逻、追击与攻击AI

Godot 4 2D游戏教程:用状态机实现敌人巡逻、追击与攻击AI

Godot 2D游戏教程系列走到现在,玩家角色的移动、跳跃、攻击基本都能跑了,下一步自然就是给这个世界添点"活物"。这一节(系列二第11篇)我们不继续做玩家,而是转头做敌人AI:让一个怪物能在场景里来…

2026/10/17 15:53:16 阅读更多 →
股票实时数据源API选型与采集实战:从轮询到WebSocket的踩坑指南

股票实时数据源API选型与采集实战:从轮询到WebSocket的踩坑指南

一直在做盘中监控类的小工具,遇到的第一道坎不是写代码,而是“数据从哪来”。我最近在做一个盯盘脚本,需要交易时段内每隔几秒拉一批股票的实时价格,结果一头扎进常用股票实时数据源API平台对比里,才发现这里面的水比想…

2026/10/17 15:53:16 阅读更多 →
YARN Capacity Scheduler默认配置全解析:从原理到调优实践

YARN Capacity Scheduler默认配置全解析:从原理到调优实践

1. 从一份空配置文件说起:为什么默认值值得单独拎出来讲很多人第一次接触YARN的Capacity Scheduler,都是被那一堆capacity-scheduler.xml里的配置项劝退的。更让人困惑的是,你打开这个文件,发现里面可能只有寥寥几行,甚…

2026/10/17 15:52:15 阅读更多 →

最新新闻

Linux源码编译安装libcurl库:从configure到静态链接全攻略

Linux源码编译安装libcurl库:从configure到静态链接全攻略

1. 换一条路装库:为什么有时候必须用源码压缩包说起Linux下安装第三方库,很多人第一反应是apt install或者yum install。这确实是最省事的方案,但我在做项目时,经常发现包管理器这条路走不通,最后不得不老老实实下载源…

2026/10/17 23:04:59 阅读更多 →
HashMap 1.7源码深度解析:put、resize与多线程死循环原理

HashMap 1.7源码深度解析:put、resize与多线程死循环原理

1. 为什么“撕源码”不是炫技,而是理解HashMap 1.7的唯一路径你有没有在面试时被问到:“HashMap在JDK 1.7里是怎么扩容的?”答:“哦,它会rehash,把老数组里的Entry一个个挪到新数组里。”面试官点点头&…

2026/10/17 23:04:59 阅读更多 →
2026最新GPT-5.5深度评测:Agent架构解析与API选型

2026最新GPT-5.5深度评测:Agent架构解析与API选型

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 23:03:58 阅读更多 →
Oracle Procedure 返回数据集:TaoToken 场景下的 Ref Cursor 与临时表选型小结

Oracle Procedure 返回数据集:TaoToken 场景下的 Ref Cursor 与临时表选型小结

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 23:03:58 阅读更多 →
2026就业新赛道:一人如何利用AI智能体制作漫剧?五大主流工具深度测评与TaoToken统一接入实践

2026就业新赛道:一人如何利用AI智能体制作漫剧?五大主流工具深度测评与TaoToken统一接入实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 23:03:58 阅读更多 →
openclaw工作区workspace文件配置与管理完全指南:从目录结构到TaoToken统一Key接入

openclaw工作区workspace文件配置与管理完全指南:从目录结构到TaoToken统一Key接入

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 23:03:58 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →