Vuetify 3 实战指南:从 Vite 搭建到组件应用与性能优化
Vuetify 3 推出也有一段时间了记得从 Vuetify 2 往上升级那会儿身边不少同事都卡在安装和配置上。其实这套基于 Vue 3 的 Material Design 组件库上手路径已经很清晰了难的是很多教程还停留在旧版 API 的思维里。这篇我把从零搭建、插件注册到常用组件的完整流程梳理一遍顺便把我实际使用中踩过的坑和排查思路一并写出来适合刚接触 Vue 3 或者准备从 Vuetify 2 迁过来的开发者参考。1. 项目搭建与依赖安装1.1 用 Vite 创建 Vue 3 项目如果你还在用 Vue CLI 创建新项目我建议直接切换到 Vite。Vite 的冷启动速度比 Webpack 方案快一个量级而且在开发依赖安装上更简化对 Vuetify 3 这种按需引入的库也更友好。npm create vitelatest my-app -- --template vue这里的my-app替换成你自己的项目名就行。我习惯用 Vue 的 JS 版模板而不是 TS 版倒不是说 TS 不好只是做快速原型或者组件验证时JS 版改起来更顺。如果团队项目有类型要求选 TS 模板同样没问题Vuetify 3 对 TS 的支持很完整后面注册插件时类型提示都能正常生效。创建完成后cd my-app npm install npm install vuetify这里有个细节需要留意Vuetify 3 要求 Vue 版本在 3.3 以上我实测 3.4 和 3.5 都稳定如果项目里锁了旧版 Vue 3.x建议先执行npm update vue把依赖提上来否则组件库内部的一些响应式 API 可能行为不一致。1.2 注册插件与 vite-plugin-vuetify 的作用安装完依赖后Vuetify 3 不是像旧版那样直接Vue.use(Vuetify)就能用。你需要手动创建一个 vuetify 实例然后在入口文件里把它注册进去。建议先建一个src/plugins/vuetify.js文件内容如下import { createVuetify } from vuetify import * as components from vuetify/components import * as directives from vuetify/directives export default createVuetify({ components, directives, })然后在src/main.js里引入import { createApp } from vue import App from ./App.vue import vuetify from ./plugins/vuetify createApp(App).use(vuetify).mount(#app)如果你用的是 Vite更推荐配合vite-plugin-vuetify这个插件做自动导入。它能按需加载组件和样式打包体积比全量引入小不少npm install vite-plugin-vuetify -D然后在vite.config.js里加一段import { defineConfig } from vite import vue from vitejs/plugin-vue import vuetify from vite-plugin-vuetify export default defineConfig({ plugins: [vue(), vuetify({ autoImport: true })], })用这个插件之后模板里写到v-btn这种组件时插件会替你自动解析并注入对应的样式不用手动把 components 全部挂上去。如果你不用这个插件全量引入在小型项目里问题也不大但中大型项目建议还是开启 autoImport首屏性能差别很明显。1.3 图标方案选择与样式引入Vuetify 3 本身不自带图标库它只是提供了一套图标渲染机制。具体图标来源有两种主流方案第一种是用 Google Material Design Icons 的 CDN 链接适合局域网或者个人项目不用装额外 npm 包。但生产环境我不推荐这种一旦外网有波动图标全挂。第二种是安装mdi/font包本地打包进项目npm install mdi/font -D然后在入口文件里引入import mdi/font/css/materialdesignicons.css这样写的时候v-iconmdi-home/v-icon就能直接识别。记得在createVuetify里指定默认图标集否则部分内置图标比如表格排序箭头渲染不出来import { mdi } from vuetify/iconsets/mdi export default createVuetify({ icons: { defaultSet: mdi, sets: { mdi, }, }, })另外还有一个容易踩的坑是样式加载顺序。如果你手动在main.js里同时引入了 Vuetify 样式和我们自己写的全局样式CSS 优先级会严格按照引入顺序来。建议把 Vuetify 的样式放前面自己的业务样式放后面否则有些全局类名会意外覆盖框架样式排查起来特别费时间。2. 核心概念与组件设计逻辑2.1 组件默认样式与简洁性从 v-btn 说起Vuetify 3 的设计思想和很多组件库不太一样。它采用了 Material Design 的高浓度视觉体系组件在不配置的情况下就自带阴影、圆角和过渡动画。这种设计对前端开发来说有好处也有坏处好处是页面天然看起来完整不用额外写太多层样式坏处是如果你需要完全扁平或者极简风格要去覆盖的默认样式会比较多。以最常用的v-btn为例v-btn默认按钮/v-btn v-btn colorprimary主要按钮/v-btn v-btn varianttonal柔和按钮/v-btn v-btn varianttext文字按钮/v-btn v-btn variantoutlined iconmdi-plus图标按钮/v-btn不同的variant属性控制按钮的整体观感。默认是elevated也就是带阴影的实心按钮。tonal在 Material Design 3 里非常流行它的背景色是主色加透明度文字保持深色视觉比默认按钮轻很多适合作为页面里的次级操作。有一点很多人刚开始会忽略Vuetify 3 的组件属性名和原生 HTML 属性会冲突。比如 HTML 里typebutton的type在v-btn里只影响表单提交行为不再控制按钮标签实际渲染出来的 type 类型。说白了 Vuetify 会自己决定底层button的 type所以遇到表单里按钮意外触发表单提交时先检查是不是 tag 和属性协商出了问题。2.2 v-model 机制与受控组件思维Vuetify 3 全面拥抱 Vue 3 的v-model语法很多组件都支持多 v-model。比如日期选择器v-date-picker v-modeldate v-model:display-modemode /以前 Vue 2 时代处理这种额外状态往往要通过事件手动更新现在多模型绑定直接写在模板里代码简洁多了。虽然官网上没有逐个标注每个组件支持哪些模型名但基本规律可以总结出来v-model控制组件的主值比如输入框的值、开关的布尔状态、日期选择的日期。v-model:xxx控制次要状态比如菜单的展开状态、面板的激活索引、分页的当前页。如果组件同时有主值和展示状态那么主值通常不用于控制可见性比如对话框用v-model控制显示值本身不参与业务。这个机制理解透了之后写业务组件时思路会清晰很多。你要操心的是数据从哪里来、状态如何变化而不是把事件名和 value 属性来回拆装。2.3 栅格系统的 12 列规则Vuetify 3 的布局基于 12 列栅格体系对应组件是v-container、v-row和v-colv-container v-row v-col cols12 md6 lg4 内容区块 /v-col v-col cols12 md6 lg4 内容区块 /v-col /v-row /v-containercols12表示在移动端占满整行md6表示中屏及以上占一半lg4表示大屏占三分之一。响应式断点依次是xs、sm、md、lg、xl、xxl默认断点值分别是 0、600、960、1280、1920、2560 像素。这套体系的优点在于你只需要关注内容宽度和断点不用自己写媒体查询。不过要注意v-col内部默认不设置内边距和外边距间距是由v-row传入的gutter属性控制的比如gutter16就会在相邻列之间生成 16px 的间距。如果你发现列和列之间黏在一起先检查有没有配 gutter不要直接给 v-col 加 padding那是无效操作。3. 基础组件实操从按钮到数据表格3.1 卡片组件与内容布局卡片可以说是整个 Vuetify 使用频率最高的基础组件项目里的列表项、详情页、弹窗内容都会用到它。一个标准卡片结构长这样v-card v-card-title设备信息/v-card-title v-card-subtitle最后更新2025-01-15/v-card-subtitle v-card-text 这里放主要描述内容卡片文字的上下左右默认会有一定的留白。 /v-card-text v-card-actions v-btn varianttext取消/v-btn v-btn colorprimary确认/v-btn /v-card-actions /v-cardv-card-subtitle这个组件是 Vuetify 3 新增的旧版里叫v-card-subtitle也支持但新版语义化更明确。v-card-actions会自动在按钮之间加一个弹性间距把按钮组推到右侧或者两端。如果你想要更多自定义布局可以不用v-card-actions直接在v-card底部加普通div灵活性更高。卡片还有一个很实用的状态是varianttonal。当你想突出某条警告信息或者强调一条提示但又不想用醒目的 alert 组件时用 tonal 卡片是非常轻量的方案。比如v-card varianttonal colorwarning v-card-text当前操作会修改生产环境配置请确认后再继续。/v-card-text /v-card这种方式比用v-alert更安静在管理后台的内容区块里不突兀。3.2 表单组件与校验场景表单是后台系统绕不开的环节Vuetify 3 的v-text-field和v-select在设计上几乎覆盖了所有常见需求包括前置图标、清空按钮、密度设置等。一个带校验的文本字段模板v-form refformRef submit.preventhandleSubmit v-text-field v-modelform.name label项目名称 :rules[v !!v || 项目名称不能为空, v (v v.length 3) || 至少输入3个字符] variantoutlined densitycomfortable clearable prepend-inner-iconmdi-folder-outline / v-btn typesubmit colorprimary保存/v-btn /v-form校验规则里我用的是箭头函数加短路写法。每个规则函数接收当前值返回true表示通过返回字符串则作为错误提示信息。注意这里返回的字符串会直接显示在输入框底部不需要额外配置错误状态。如果规则内部逻辑较长建议抽成单独的函数不要全挤在模板里否则模板可读性会变差。density属性控制输入框的紧凑程度comfortable是中等紧凑compact是更小行高default是标准行高。后台表格筛选区我个人更倾向用densitycompact能省不少垂直空间。v-select的用法和v-text-field大同小异但需要传:itemsv-select v-modelform.status label状态 :items[{ title: 启用, value: 1 }, { title: 禁用, value: 0 }] item-titletitle item-valuevalue variantoutlined clearable /新版默认的 items 格式支持字符串数组或对象数组。对象数组里必须标明哪个字段是标题、哪个是值否则组件不知道如何展示。如果 item-title 和 item-value 不写Vuetify 默认取对象里的title与value所以命名保持一致能少写不少配置。表单提交时校验的方法在 Vue 3 组合式 API 下是import { ref } from vue const formRef ref(null) async function handleSubmit() { const { valid } await formRef.value.validate() if (valid) { // 执行后续逻辑 } }这里的validate()返回的是一个 Promise里面的valid是布尔值。需要注意如果表单里有异步校验规则比如远程查重validate()会等所有异步规则执行完才返回结果在处理 loading 状态时务必加防重复点击不然用户连点会触发多次请求。3.3 对话框与响应式布局对话框在 Vuetify 3 中相当灵活。基础用法v-dialog v-modeldialogVisible width600 v-card v-card-title编辑资料/v-card-title v-card-text 这里是对话框内容区域 /v-card-text v-card-actions v-spacer / v-btn varianttext clickdialogVisible false关闭/v-btn v-btn colorprimary clicksaveData保存/v-btn /v-card-actions /v-card /v-dialogwidth属性直接控制对话框宽度传数字单位是像素传字符串会按 CSS 值解析。如果你想要全屏对话框可以设置fullscreen。我实际项目里经常遇到一个问题对话框内容较长时底部按钮会被挤到视口外面需要滚动才能看到。我的经验是给v-card设一个最大高度v-card stylemax-height: 80vh; display: flex; flex-direction: column; v-card-text styleoverflow-y: auto;主要内容区域/v-card-text /v-card这样标题固定正文可滚动操作按钮始终可见体验会舒服很多。对话框还有一个常被忽略的属性persistent。默认情况下点击遮罩层外部会关闭对话框如果内部有未保存的表单数据误点就直接丢了。设置persistent后必须通过按钮或代码关闭能在产品层面减少误操作。3.4 表格组件与分页状态v-data-table在 Vuetify 3 里经历了比较大的重写核心是支持headers数组配置列以及items数组配置数据v-data-table :headersheaders :itemsrows item-valueid :items-per-page10 densitycomfortable template v-slot:item.status{ item } v-chip :colorstatusColor(item.status) sizesmall {{ statusText(item.status) }} /v-chip /template /v-data-table对应的 headers 配置const headers [ { title: ID, key: id, sortable: true }, { title: 名称, key: name, sortable: false }, { title: 状态, key: status, sortable: false }, { title: 操作, key: actions, sortable: false }, ]这里有个重要的坑item-value必须指定一个唯一字段建议用主键 ID。如果不写组件会尝试用整行对象作为 key当数据更新或者排序时可能出现行状态错乱的问题。默认的v-data-table自带分页、排序、单选、多选但要真正用好它还需要理解 slot 命名规则。每一列可以通过item.字段名的命名插槽覆盖默认渲染比如上面代码里用item.status插槽来渲染状态徽章。插槽里的item不是这一行的原始对象而是一个包装对象需要访问item.columns.status拿原始数据。这个设计初看有点绕但好处是列类型和原始数据分离在做列展示控制时非常方便。如果你要自定义操作按钮列可以在 headers 里加一列 key 为actions的列然后用插槽template v-slot:item.actions{ item } v-btn iconmdi-pencil sizesmall varianttext clickeditRow(item.raw) / v-btn iconmdi-delete sizesmall varianttext colorerror clickdeleteRow(item.raw) / /templateitem.raw才是原始数据对象。这个细节能省掉你半小时的调试时间我第一次用时就因为拿item.value取值发现总是 undefined后来看了源码才反应过来是包装对象。4. 主题定制与深色模式切换4.1 自定义主题色主题定制是你在真实项目里几乎一定会碰到的需求。默认的 Vuetify 主题是 Material 风格配色但每个公司的品牌色都不太一样。在createVuetify里可以覆盖颜色令牌export default createVuetify({ theme: { defaultTheme: light, themes: { light: { colors: { primary: #1867C0, secondary: #5CBBF6, accent: #82B1FF, error: #FF5252, info: #2196F3, success: #4CAF50, warning: #FFC107, }, }, }, }, })配置完后模板里凡是colorprimary的组件都会自动用这个颜色。需要注意的是Vuetify 内部对颜色做了深浅对比计算用于决定文字是深色还是浅色。如果你自定义的主色很浅比如明黄色文字会自动变深这一步框架已经做了不需要额外操心。4.2 运行时切换深色模式Vuetify 3 让深浅主题切换变得非常简单v-btn clicktoggleTheme 切换主题 /v-btn对应脚本部分import { useTheme } from vuetify const theme useTheme() function toggleTheme() { theme.global.name.value theme.global.current.value.dark ? light : dark }这套机制基于 Vue 的响应式变量切换时组件样式会自动更新。你可以在深色主题里继续定义一套colorsVuetify 会在渲染时切换对应的颜色变量。需要注意如果你在业务 CSS 里写了硬编码的白色背景或黑字主题切换后这些样式不会跟随所以涉及背景和文字颜色时尽量用框架提供的颜色类名比如bg-surface、text-on-surface这类语义化类而不是white或black。4.3 CSS 变量与覆盖策略Vuetify 3 在根节点上暴露了大量 CSS 变量格式类似--v-theme-primary、--v-theme-background、--v-border-radius等。调试样式时直接在浏览器开发者工具里查看这些变量能快速定位到颜色来源。如果某些组件的默认样式你想全局调整有两条路第一条是修改主题配置中对应的组件变量。第二条是覆盖 CSS 变量。比如你想统一减小所有按钮的圆角.v-btn { border-radius: 6px; }这种写法的优先级低于 Vuetify 自身的样式吗不一定。由于 Vuetify 3 用的是 scoped 样式加高特异性选择器你直接写类选择器可能覆盖不成功。稳妥做法是提高选择器特异性或者在主题变量层面调整。Vuetify 官方最终推荐的方式是使用 SASS 变量并重新编译但实际业务项目引入 SASS 重编译的改造成本不小我一般先尝试用 CSS 变量覆盖解决不了的再考虑更重的方案。5. 常见报错与排查技巧5.1 组件不渲染 / 页面空白如果你在页面上写了v-btn但渲染出来什么都没有最常见的两类原因一是插件没有正确注册。检查入口文件里有没有createApp(App).use(vuetify)以及createVuetify是不是真的执行了。如果用了 vite-plugin-vuetify我建议在创建项目后先执行一遍npm run build确认构建不报错再开始写业务否则容易把配置型问题和业务型问题混在一起排查。二是 CSS 没引入。不使用插件自动引入时Vuetify 的样式需要手动引。如果你发现组件有 HTML 输出但没有样式基本就是样式文件缺失。检查main.js里是否引入import vuetify/styles。vite-plugin 模式下这步经常会被遗漏。5.2 图标全部显示为方块这种情况十有八九是mdi/font没有引入 CSS。注意mdi/font包的默认导出路径是mdi/font/css/materialdesignicons.css路径别写错。另外如果你同时用了多个图标集Vuetify 在渲染时会自动判断图标前缀比如mdi-home是 mdi 图标集fa-solid fa-house是 font-awesome 图标集。如果你没有安装对应的图标集且未指定前缀图标组件就会渲染成空字符串。5.3 状态更新不触发重绘Vue 3 的响应式系统对直接修改对象属性是能做到自动追踪的但如果你把一个响应式对象整体替换成新对象Vuetify 内部如果保存了引用就可能出现视图不更新的情况。典型场景是表格数据const rows ref([...]) // 错误做法 rows.value newArray // 正确做法 rows.value.splice(0, rows.value.length, ...newArray)第二种写法保留了原来的数组引用Vuetify 内部对数组引用的 watch 才能正确感知变化。其实从响应式原理讲替换ref的.value应该触发依赖更新但 Vuetify 内部某些组件使用了对数据引用做缓存或比较的策略替换整个数组会绕过它的判断。遇到数据不刷新时多留意这种引用层面的问题。5.4 打包后样式错乱本地开发没问题一打包就样式乱这种情况多发生在按需加载模式下。排查思路是这样的先在构建配置里关闭 CSS 代码分割看看问题是否还存在如果消失了说明多个组件样式文件被独立加载后CSS 顺序不一致导致覆盖关系变化。这个问题的根治方案是确保 Vuetify 样式在业务样式之前加载具体做法可以在入口文件里把import vuetify/styles放在业务 CSS 第一行。另外一个比较隐蔽的原因是构建工具自身的 CSS 合并顺序和 Webpack 不同。Vite 打包时如果项目里混用了旧版 PostCSS 插件可能改掉 Vuetify 一些嵌套写法。遇到打包样式问题先贴出构建日志别盲目改代码这类问题大多和配置有关。5.5 网络加载慢 / 白屏等待时间长全量引入 Vuetify 时打包体积会明显偏大。我之前一个管理系统项目全量引入后 gzip 前接近 1.2MB开启插件按需加载后降到 450KB 左右体积优化明显。除了按需加载还要注意mdi/font的字体文件体积如果项目里只用了十几个图标可以考虑用mdi-js这类 JS 图标库替代字体文件进一步压缩。如果项目用了 SSR 或预渲染Vuetify 3 的响应式布局在服务端渲染时可能会因为拿不到窗口宽度而渲染默认布局。处理方式是延迟渲染或使用客户端专用的挂载标识不过大部分后台项目不涉及 SSR这里只需要知道有这个限制就好。6. 从一个简单页面看整体组合所有组件单独会用了不代表页面就能组合得自然。我一般在动手写页面之前会先在脑子里过一遍这套流程先用v-container定义最外层宽度和边距。用v-row和v-col划分内容区域。每个内容块用v-card作为容器保持视觉焦点。卡片内部按业务逻辑顺序放置标题、内容、操作按钮。需要用户输入的区块组合v-form和v-text-field统一校验入口。列表页用v-data-table承载明细操作栏用v-menu收起多余动作。拼出来的页面虽然每个组件都不是很花哨但整体结构非常稳定用户操作路径也非常清晰。关键点在于对间距和密度的控制同样是density属性不同组件之间的效果一致页面里所有输入框统一使用同一个 density整体观感就协调。做快速原型时我推荐直接打开 Vuetify 官网的组件示例页复制代码到本地跑。它的示例覆盖了几乎所有组件的完整用法比你自己逐个试属性高效得多。不过记得看完示例后删掉无用代码官网的示例为了演示往往会堆很多属性实际项目里不是每个都需要。7. 性能优化与生产环境建议7.1 按需加载的实际收益前面提过按需加载的体积收益这里补一组实测数据作为参考。同样一个包含 30 多个页面组件的后台项目全量引入时 JavaScript 体积约 920KBgzip 后约 340KB改成 vite-plugin-vuetify 按需加载后 JavaScript 约 520KBgzip 后约 190KB。首屏速度提升不算夸张但后续页面切换时的加载差距能明显感受到。关键是按需加载并没有带来额外维护成本配置一次之后基本不需要管。7.2 组件懒加载与代码分割Vuetify 支持组件和指令的自动按需导入但如果你每个路由页面引用的组件各不相同最好在路由层面做懒加载const routes [ { path: /dashboard, component: () import(/views/Dashboard.vue), }, { path: /reports, component: () import(/views/Reports.vue), }, ]配合 Vite 的构建能力每个路由页面会自动形成独立的 chunk用户访问哪页就加载哪页的代码。Vuetify 组件本身会通过插件分析把所需的样式注入到对应的 chunk 里不需要手动干预。7.3 自定义扩展组件的注意事项实际项目中你会不可避免地封装一些基于 Vuetify 的业务组件比如带查询条件的搜索表单、通用表格工具栏等。封装时要注意一点不要在业务组件内部直接修改传入的非响应式 props 对象。Vuetify 的很多组件支持默认值和透传属性但业务组件往往需要二次加工数据这时候保持数据单向流动非常重要。一个稳妥做法是在封装组件内部用computed对 props 做派生所有修改都通过emit发到父组件。另外开发模式下确认没有任何框架警告再联调。Vuetify 3 在开发环境下会输出不少警告信息常见的有缺少item-title、props 命名错误、图标集缺失等。这些警告不会直接导致白屏但会在特定交互下触发异常。提前处理能减少线上 bug 的排查范围。8. 我的一点实操心得关于 Vuetify 3我最想分享的经验是它是一个设计体系而不只是一套组件集合。第一次接触时很容易陷入“找组件、贴代码”的模式但用了一段时间后你会发现真正提升开发效率的是对间距、密度、颜色体系这些设计令牌的理解。同一个功能用不同 density 和 variant 组合出来的页面观感差别非常大。举个例子同样是保存按钮在工具栏里用默认 elevated 样式在表单底部却经常用 tonal 样式出来的层次感完全不一样。这种判断力只能靠多对比、多实践获得官网的配色工具和主题配置页面值得反复研究。最后提醒一点如果你是从 Vuetify 2 迁到 3千万别把旧代码直接复制过来。两个版本的 API 有大量不兼容的地方最快的迁移路径是先搭建一个干净的新项目骨架按模块逐个迁移组件而不是试图原地升级。这个思路能帮你省下大量排查兼容性的时间。

相关新闻

数字贸易限制指数数据处理与实证建模全流程解析

数字贸易限制指数数据处理与实证建模全流程解析

做贸易政策实证这几年,我越来越确信一件事:数字贸易研究缺的往往不是模型,而是一组干净、可解释、能直接进回归的政策指标。最近我在整理数字贸易限制指数的基础设施与电子交易分项数据(覆盖2014—2024年),…

2026/10/16 12:18:26 阅读更多 →
Agent 别裸奔进生产:先搭架构、可观测、人审三道闸

Agent 别裸奔进生产:先搭架构、可观测、人审三道闸

摘要:Agent 本地跑通,不等于生产可靠。本文给三道闸——架构分层、可观测、人审——把"想"和"做"拆开、给每一步留审计轨迹、把不可逆操作锁在人审之后,并用 ThinkingBox 的静默失败数据说明,为什么不能信 Ag…

2026/10/16 12:17:24 阅读更多 →
员工随手一拍、一拷、一句 AI 提问,公司的核心机密就没了

员工随手一拍、一拷、一句 AI 提问,公司的核心机密就没了

1. 引言 随着企业数字化转型的深入,终端已成为数据泄露、勒索攻击与内部违规操作的高发地带。传统单点防护工具(仅装杀毒、仅做准入)已难以应对日益复杂的混合威胁。迪康软件将 U 盘管控、打印水印、防勒索文档安全、AI 工具审计、敏感信息识…

2026/10/16 12:17:24 阅读更多 →

最新新闻

Claude Code Windows安装报错排查:从npm全局路径到PATH配置

Claude Code Windows安装报错排查:从npm全局路径到PATH配置

最近帮同事排查了一个 Claude Code 在 Windows 下的安装问题,报错信息甩出来的时候我愣了好几秒:无法将“F:\nvm\nodejs/node_modules/anthropic-ai/claude-code/bin/claude.exe”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。这不是我第一次遇到…

2026/10/16 12:53:47 阅读更多 →
PPT合并形状实战指南:五种布尔运算玩转自定义图形

PPT合并形状实战指南:五种布尔运算玩转自定义图形

做PPT做到一半,发现自带形状库里翻来翻去就那几百个,想画个云朵、齿轮、甚至一个简单的太极图,要么没有,要么怎么调都不对味。这时候大多数人的第一反应是去网上找一个素材图片,或者求助于插件。其实PPT自己就藏着一套…

2026/10/16 12:53:47 阅读更多 →
VSCode前端插件实战:从ESLint到Prettier的效率配置指南

VSCode前端插件实战:从ESLint到Prettier的效率配置指南

刚开始用 VSCode 的时候,我也跟不少人一样,见到推荐列表就挨个装,什么热门装什么。装了几十个插件之后,编辑器启动越来越慢,命令面板里全是用不上的入口,有些插件还会互相抢快捷键、抢格式化权限&#xff0…

2026/10/16 12:53:47 阅读更多 →
Unity武器拖尾效果实战:PocketRPG Trails从搭建到优化

Unity武器拖尾效果实战:PocketRPG Trails从搭建到优化

简介:这份资源面向Unity游戏开发者,尤其是希望在武器攻击、角色移动等场景中加入动态视觉特效的初中级程序员。它围绕Unity拖尾效果展开,重点讲解如何借助PocketRPG Trails插件在武器对象上搭建拖尾系统,解决特效表现单一、缺乏冲…

2026/10/16 12:53:47 阅读更多 →
UE5蓝图底层原理:BVM虚拟机与JIT编译机制解析

UE5蓝图底层原理:BVM虚拟机与JIT编译机制解析

简介:本资源是一份面向UE5初学者与游戏开发入门者的蓝图可视化编程系统性学习指南,聚焦Lumen全局光照与Nanite微多边形技术背景下的蓝图编辑器实操能力培养。内容覆盖蓝图编辑器界面构成、变量创建、节点连接逻辑、触发器事件响应等核心操作,…

2026/10/16 12:53:47 阅读更多 →
如何 5 分钟集成 TEAChart:CocoaPods 安装 iOS 图表库的完整教程

如何 5 分钟集成 TEAChart:CocoaPods 安装 iOS 图表库的完整教程

【免费下载链接】TEAChart Simple and intuitive iOS chart library. Contribution graph, clock chart, and bar chart. 项目地址: https://gitcode.com/gh_mirrors/te/TEAChart 点击查看 免费下载 TEAChart 是一款简单直观的 iOS 图表库(iOS chart li…

2026/10/16 12:52:44 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 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/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/15 9:49:14 阅读更多 →