Vue多页应用单页面打包:webpack配置详解与打包模式切换实战
多页vue应用做单页面打包这个需求听起来有点绕但实际干过前端工程化的人都能秒懂项目结构还是多页那一套不同业务页面各自维护可最后构建出来的东西要能塞进一个HTML里跑起来连带着打包模式还得能灵活切换。这篇就把我自己的实操方案、配置细节和踩过的坑一次讲透适合正在维护老旧多页vue项目、又被迫对接单页壳子或统一登录需求的团队参考也适合想搞懂webpack多入口到底怎么被揉成单页的开发者。1. 内容整体设计与思路拆解1.1 先说清楚多页和单页到底指什么很多同学一上来就被多页vue应用的单页面打包方法绕晕了我先拆一下概念。传统的多页应用MPA是多个HTML页面各自独立每个页面有自己的入口JS和路由体系页面之间跳转走的是location.href或者window.open。比如一个后台管理系统登录页、列表页、详情页是三个HTML各自加载各自的脚本。单页应用SPA则是一个HTML外壳加前端路由所有页面组件都在这个壳子里通过路由切换渲染理论上是无刷新跳转。那多页vue应用的单页面打包到底做什么不是把多页改造成SPA的代码结构而是保持多页的项目形态不变在构建打包这一层动手脚最终产出一个单HTML、单入口JS但内部仍然能访问到各个业务页面模块。这套做法本质上是利用webpack多入口构建能力把多个页面入口统一加工后注入同一个HTML模板再配合前端路由模拟页面切换。还有一层关键点标题里说的内含打包模式的应用指的是这套打包方法不是固定的而是通过模式mode区分不同打包目标。同一套源码可以用多页模式打出传统多HTML版本也可以用单页模式打出合并版本甚至还能挂上自定义模式适配不同部署环境。这个思路比单纯改配置更值钱因为团队不用为了某个临时需求专门维护一套分支。1.2 多页应用单页化打包解决什么问题我见过不少项目卡在这种状态业务代码全是多页结构几十个HTML页面各自为政但部署平台上只开放了一个入口地址或者统一的登录鉴权、顶部导航、埋点SDK只被某一个壳页面引入。这时候你不可能把几十个页面全部重写成SPA成本太高风险也大。单页面打包就能把这种僵局解开。路径上只有一个入口HTML但业务页面模块都通过路由按需加载公共依赖打到共享chunk里。带来的直接收益有三个统一壳子登录态、全局样式、公共脚本只需要在唯一的HTML里加载一次多页时代每个页面重复拉取公共资源的问题直接消失。部署省心只出一个HTML文件整个应用就是一个静态目录不管放到哪个静态服务器上都能跑不需要给每个页面单独配路由规则。改造可控业务页面代码基本不用动页面之间的跳转从window.location改成router.push就行比起从零重构SPA改动面小得多。1.3 为什么不能直接改成SPA很多人会问既然最终运营形态是单页为什么不干脆把项目改成标准SPA原因很简单多页结构往往意味着模块之间耦合度低、责任人分属不同小组、发布计划也不一致。让所有人在一个SPA里协作光是路由表合并、状态共享、发布锁版本就够吵几个星期的。而且有些业务页面是历史遗留的jQuery混编代码或者内部依赖了某个只在独立页面加载才正常的第三方脚本直接塞进SPA会触发各种全局污染问题。在构建层面做单页化等于把架构决策和业务改造解耦先满足部署和体验需求再慢慢优化代码结构这是一种更务实的演进路线。2. 核心原理webpack多入口打包的两种形态2.1 默认多页打包长什么样要理解单页面打包得先清楚webpack默认的多页构建产物结构。在Vue CLI项目里配置多页一般是在vue.config.js里写pages字段const pages { index: { entry: src/pages/index/main.js, template: public/index.html, filename: index.html, title: 首页 }, detail: { entry: src/pages/detail/main.js, template: public/detail.html, filename: detail.html, title: 详情页 } } module.exports { pages, productionSourceMap: false }这种配置出来的产物dist目录下会是多个HTML文件每个HTML分别引入各自的JS和CSS。每个页面都包含完整的Vue运行时、公共依赖副本除非单独做了splitChunks页面之间切换就是浏览器重新加载一个HTML。它的优点是好理解、好发布、每个页面独立加载互不干扰缺点是公共代码重复、页面切换白屏闪烁、对部署平台要求高。2.2 单页面化打包的关键点单页面化打包的思路是仍然给每个业务页面配置独立的entry但在HTML生成阶段只保留一个HTML模板把所有入口chunk统一注入到这个唯一的HTML里。然后通过前端路由hash模式最省事让用户在同一个HTML里访问到不同的业务页面。核心有四个关键点入口保留多份每个业务页面仍然是webpack的entry保证它的依赖树和按需加载逻辑还在。HTML只生成一个不实例化多个HtmlWebpackPlugin只用一个配置里手动指定要注入的chunks。路由接管跳转多页改单页后原来的页面间跳转要替换成前端路由跳转不然一刷新就404。代码分割兜底单HTML意味着初始包体积变大所以必须配合动态import或者手动splitChunks把非首屏页面拆成异步chunk。简单说多页结构决定代码怎么组织单页打包决定产物怎么呈现两者通过webpack配置对接。2.3 为什么需要打包模式如果你只改一套死配置打出来的东西永远是单HTML那其他需要传统多页部署的场景就废了。于是打包模式派上用场用环境变量和webpack的mode机制让同一个工程按不同模式产出不同形态的包。mode本身是webpack内置的概念分为production、development、none但Vue CLI在此基础上还支持通过.env.[mode]文件注入自定义模式。我在实际项目里习惯定义三套模式build传统多页模式产出多个HTML用于常规独立部署。build:single单页面模式产出单HTML用于对接壳子或统一入口平台。build:pre预发布模式在production基础上开启sourcemap和特定接口地址。打包模式解决的不只是配置切换问题还能让不同模式的产物带不同的环境变量、不同的压缩策略、不同的publicPath。这对大型项目尤其重要因为发布平台对静态资源路径的要求经常不一样。3. 实操从零配置一个单页面化打包3.1 项目结构准备先看一个典型的多页vue项目结构基于Vue CLI 5和webpack 5src/ pages/ index/ main.js App.vue router/ detail/ main.js App.vue list/ main.js App.vue common/ utils/ components/ assets/ public/ index.html vue.config.js package.json每个业务页面是一个独立目录有独立的main.jsApp.vue和各自的路由。页面之间通常通过window.location.href跳转例如从列表页跳到详情页会带上查询参数。做单页面化前先决定是用hash路由还是history路由。我强烈推荐hash路由因为单HTML打包后如果用了history路由刷新页面时服务器需要把未知路径全部回退到index.html很多内部部署平台根本不给你配置rewrite规则的机会。hash路由天然规避这个问题代价是URL里多个#对后台类系统来说可以接受。3.2 改造vue.config.js核心配置下面是我在实际项目中验证过的配置重点看chainWebpack部分// vue.config.js const path require(path) module.exports { productionSourceMap: false, // 关闭多页HTML生成改用手动控制chunks pages: undefined, chainWebpack: (config) { // 1. 保留多个业务入口但不生成多个HTML const pageEntries { index: path.resolve(__dirname, src/pages/index/main.js), list: path.resolve(__dirname, src/pages/list/main.js), detail: path.resolve(__dirname, src/pages/detail/main.js) } Object.keys(pageEntries).forEach((name) { config.entry(name).add(pageEntries[name]) }) // 2. 删除Vue CLI默认生成的HTML插件配置 config.plugins.delete(html-index) config.plugins.delete(html-detail) // 如果用的是pages配置这里要清掉所有html-xxx // 3. 重新添加一个HtmlWebpackPlugin const HtmlWebpackPlugin require(html-webpack-plugin) config.plugin(html).use(HtmlWebpackPlugin, [{ template: path.resolve(__dirname, public/index.html), filename: index.html, // 关键只注入入口chunk异步chunk由webpack自动加载 chunks: [index, list, detail], minify: true }]) }, configureWebpack: { optimization: { splitChunks: { chunks: all, cacheGroups: { vueVendor: { test: /[\\/]node_modules[\\/](vue|vue-router)[\\/]/, name: vue-vendor, priority: 10 } } } } } }这段配置做了三件事。第一用config.entry(name)重新声明了三个业务入口让webpack知道源码里有哪些依赖树要打包。第二删掉Vue CLI自动按pages生成的HTML插件避免产出多个HTML。第三手动添加唯一的HtmlWebpackPlugin并把三个入口chunk都注入到同一个HTML里。有人会担心三个入口chunk全注入初始加载压力是不是太大了答案是会挺大所以后面必须依赖splitChunks和异步组件把页面拆开。上面配置里用了chunks: all和cacheGroups把vue全家桶单独拆出一个vendor chunk三个页面共享它浏览器缓存命中率更高。3.3 路由层面的配合构建配置改完之后业务代码层面要做两处调整。第一处是每个页面保留自己的路由配置但在入口处不再直接挂载而是注册成一个模块让总的单页壳子去动态挂载。第二处是页面间跳转从location.href改成router.push。我习惯在每个页面目录下导出路由配置而不是直接在main.js里new Vue()// src/pages/detail/router.js import Vue from vue import VueRouter from vue-router import DetailPage from ./App.vue Vue.use(VueRouter) export default { path: /detail/:id, name: detail, component: DetailPage }然后在总入口里可以放在src/entry-single.js统一注册所有页面路由并配置懒加载感// src/entry-single.js import Vue from vue import VueRouter from vue-router import App from ./common/AppShell.vue const routes [ { path: /, redirect: /index }, // 页面路由异步加载 { path: /index, component: () import(./pages/index/router).then(m m.default) }, { path: /list, component: () import(./pages/list/router).then(m m.default) }, { path: /detail/:id, component: () import(./pages/detail/router).then(m m.default) } ] const router new VueRouter({ mode: hash, routes }) new Vue({ router, render: h h(App) }).$mount(#app)这里路由配置用了动态import让每个页面在访问时才加载对应JS从而破掉单HTML首屏全量加载的死局。第一次进入只加载壳子当前页面代码其他页面代码拆成异步chunk用户点击跳转时webpack再拉取对应chunk。3.4 打包模式的实现区分构建命令现在进入标题里打包模式的应用最核心的部分。我希望一个工程能同时支持多页打包和单页打包而且构建命令要直观。做法是用Vue CLI的自定义模式。在项目根目录新建三个环境文件.env.build .env.build-single .env.build-pre.env.build里写NODE_ENVproduction VUE_APP_BUILD_MODEmulti.env.build-single里写NODE_ENVproduction VUE_APP_BUILD_MODEsingle.env.build-pre里写NODE_ENVproduction VUE_APP_BUILD_MODEmulti VUE_APP_PUBLIC_PATHhttps://cdn.example.com/然后在vue.config.js里根据process.env.VUE_APP_BUILD_MODE动态决定HTML插件和入口的配置方式// vue.config.js const isSingle process.env.VUE_APP_BUILD_MODE single module.exports { publicPath: process.env.VUE_APP_PUBLIC_PATH || /, productionSourceMap: false, chainWebpack: (config) { // 页面入口始终注册 const pageEntries { index: path.resolve(__dirname, src/pages/index/main.js), list: path.resolve(__dirname, src/pages/list/main.js), detail: path.resolve(__dirname, src/pages/detail/main.js) } Object.keys(pageEntries).forEach((name) { config.entry(name).add(pageEntries[name]) }) if (isSingle) { // 单页面模式只保留一个HTML config.plugins.delete(html-index) config.plugins.delete(html-list) config.plugins.delete(html-detail) config.plugin(html).use(HtmlWebpackPlugin, [{ template: path.resolve(__dirname, public/index.html), filename: index.html, chunks: [index, list, detail], minify: true }]) } else { // 多页模式按pages配置正常生成多个HTML config.plugin(html-index).use(HtmlWebpackPlugin, [{ template: path.resolve(__dirname, public/index.html), filename: index.html, chunks: [index] }]) config.plugin(html-list).use(HtmlWebpackPlugin, [{ template: path.resolve(__dirname, public/index.html), filename: list.html, chunks: [list] }]) config.plugin(html-detail).use(HtmlWebpackPlugin, [{ template: path.resolve(__dirname, public/index.html), filename: detail.html, chunks: [detail] }]) } } }package.json里的脚本这么配{ scripts: { build: vue-cli-service build --mode build, build:single: vue-cli-service build --mode build-single, build:pre: vue-cli-service build --mode build-pre } }到这里同一个项目、两种打包形态的场景就落地了。多页模式交付给传统部署平台单页模式交付给统一入口平台两边不打架。而且后续任何一方出问题就单独修那一方的配置不用动业务代码。4. 参数选择与细节调优4.1 关键参数说明配置能跑通只是第一步真正让打包结果好用关键是几个参数选择。publicPath单页面模式建议用相对路径./或者干脆不设让资源跟HTML同目录。因为最终的HTML可能被部署到任意子路径硬编码绝对路径容易全站404。多页模式如果走CDN再单独配VUE_APP_PUBLIC_PATH覆盖。splitChunks缓存组我前面把vue和vue-router单独拆成vue-vendor是因为这类框架库更新频率低非常适合长缓存。简单计算一下假设三个页面共享的vue体积是300KB不拆分的话每个页面都各带一份三份就是900KB拆分后只下载一次300KB后两次直接命中强缓存首屏加载少了一大截。异步chunk的命名动态import默认生成的chunk名是数字编号不利于排查。建议在路由里手动指定webpackChunkName{ path: /list, component: () import(/* webpackChunkName: page-list */ ./pages/list/router).then(m m.default) }这样dist里会出现page-list.[hash].js线上报错时能一眼看出是哪个页面崩了。4.2 体积与加载速度的取舍单页面化之后最大的争议点就是首屏体积。HTML只有一个初始JS理论上包含壳子全部入口chunk如果不加异步拆分三个业务页面的代码全量打进首个文件哪怕有缓存第一次访问也够呛。我用过一个真实后台项目举例三个页面总计约1.2MB未压缩全部同步注入后首屏JS接近2MBgzip后仍有600KB以上在弱网环境打开要好几秒。加了动态import和splitChunks后首屏只加载壳子和当前页大约300KBgzip后约100KB体验好了很多。具体取舍标准我建议这样把握首屏只放壳子、公共组件、工具函数。业务页面一律走异步加载。第三方库按更新频率分级更新少的拆长缓存chunk更新多的跟着业务走。图片资源全部走CDN或转base64小图标用雪碧图避免单HTML场景下图片请求过多。4.3 兼容性与部署注意事项单页面模式在部署时有个隐蔽问题虽然用的是hash路由但HTML里的资源路径如果写了绝对路径部署到二级目录会失效。我建议在单页面模式下强制publicPath: ./这样资源相对HTML文件解析随便挪目录都能跑。多页模式则反过来因为每个页面可能挂在不同路径下建议保留绝对路径方便nginx或对象存储直接引用。还有一点单页面模式的HTML模板里最好加一个简单的加载动画或Loading背景因为首屏shell渲染前有一小段白屏时间给用户一个东西在加载的反馈体验会好很多。5. 常见问题与排查技巧实录这部分全是实操中踩过的坑整理成速查表遇到类似问题可以直接对照。问题现象常见原因解决方案单页面模式跑起来子页面刷新404用了history路由且服务器没配rewrite方案一改用hash路由方案二服务器把未知路径全部rewrite到index.html二选一页面样式错乱或者多个页面样式互相干扰多个入口chunk的CSS没有按页面隔离全都注入到一个HTML在业务页面组件里使用scoped样式实在要用全局样式统一放到壳子避免页面内直接写非scoped样式首屏加载巨大异步chunk没有生成路由配置用了静态import或者被webpack的splitChunks合并了检查是否所有业务页面路由都用了动态import给splitChunks.cacheGroups设置合适的minSize不要把小chunk全并进主包VUE_APP_BUILD_MODE取不到值.env文件名写错或者模式名没对上检查是.env.build还是.env.build-single运行命令时--mode build-single必须完全匹配文件名后缀多页模式正常单页模式构建报错 Conflict: Multiple chunks emit assets to the same filename多个入口的异步chunk生成规则冲突比如不同页面错误地声明了相同的webpackChunkName检查动态import注释里的webpackChunkName是否重复给每个页面用独立前缀HTML里重复注入同一个chunkchunks配置里手动加了异步chunk同时webpack又自动注入chunks只配置入口chunk异步chunk不要手动加webpack会自动处理5.1 刷新404问题单页面模式最常见的问题是刷新404。有次某团队用history路由部署单HTML首页正常一刷新详情页就白屏排查下来是服务器nginx只把/指向了index.html其他路径没有rewrite。最省事的解法是改成hash路由一劳永逸。如果产品坚持要history模式服务器层至少加一条规则location / { try_files $uri $uri/ /index.html; }但要注意这种配置会吞掉真实存在的静态文件目录所以静态资源最好单独走/assets/别跟路由路径混在一起。5.2 样式串扰问题多页模式每个页面独立HTML样式互不干扰改成单页后所有CSS都汇聚到一个文档流里容易出现A页面的全局样式污染B页面。我踩过一次很深的坑某页面为了兼容老浏览器写了一堆全局reset样式直接把另外一个页面的表格间距全改了。排查思路打开DevTools看Elements面板找到被误伤的DOM节点追踪是哪个CSS文件注入的规则再看规则是否带scope属性。最终方案是把所有业务页面的非scoped样式清出来统一放公共样式目录里按功能命名避免随意覆盖。5.3 Chunk共享与重复打包单页面模式下splitChunks配置稍微不对就会导致两个页面各打一份相同的代码。特别是多个入口都引用了同一个工具函数如果这个工具函数没有被打进公共chunkwebpack会认为它是私有模块各包一份。解决方法是给缓存组加名称和优先级把高频业务模块单独拆出来cacheGroups: { common: { name: common, minChunks: 2, priority: 5, reuseExistingChunk: true } }minChunks: 2的意思是同一个模块被两个入口引用时自动打进commonchunk。这样就不会出现两个页面各有一份lodash或axios的情况了。5.4 打包模式环境变量不生效用自定义模式时环境变量不生效多半是因为文件名和--mode参数对不上。Vue CLI加载环境文件的规则是.env、.env.local、.env.[mode]。例如执行--mode build-single会加载.env和.env.build-single但如果你把内容写进了.env.build那就完全不会生效。我还见过一种低级错误在.env.build-single里写了VUE_APP_BUILD_MODEsingle但vue.config.js里却读的是process.env.VUE_APP_BUILD_MODE正常来说没问题可如果哪天清理了node_modules重新装依赖需要重新执行一次构建千万别在旧进程里看环境变量每次构建都是新进程环境变量不会残留。5.5 动态路由和keep-alive的问题单页面模式下如果你在壳子里用keep-alive缓存页面组件多页时代跳过去再跳回来重新加载的逻辑就变了组件会保留状态反而可能导致详情页数据不刷新。我习惯的做法是列表页用keep-alive详情页不用再配合路由meta控制{ path: /detail/:id, component: () import(...), meta: { keepAlive: false } }壳子模板里keep-alive router-view v-if$route.meta.keepAlive / /keep-alive router-view v-if!$route.meta.keepAlive /这样既保留了多页时代详情页每次进入都重新拉数据的行为又享受了单页切换不刷新的顺滑。6. 实操经验与避坑心得6.1 什么时候不该用这套方案单页面打包不是银弹它适合多页存量代码、单页交付诉求的场景。但如果项目刚起步页面数量不超过10个而且没有强壳子需求建议直接上标准SPA没必要绕这么一圈。另外如果每个业务页面独立部署、独立发布的需求特别强比如每个页面属于不同团队、各自有发布窗口那强行合并成单HTML会破坏发布隔离性。这时候保持多页模式反而是正确的。6.2 我习惯的构建脚本组织方式到项目后期构建脚本会越来越多我习惯在package.json里维护一套清晰的命令并统一加--report用于分析包体{ scripts: { dev: vue-cli-service serve, build: vue-cli-service build --mode build, build:single: vue-cli-service build --mode build-single, build:multi: vue-cli-service build --mode build, analyze: vue-cli-service build --mode build-single --report } }--report会在dist目录生成report.html配合浏览器里的可视化分析能快速定位哪些chunk体积异常哪些模块被重复打包。这个习惯帮我解决过不少莫名其妙包越打越大的问题。6.3 双模式切换的稳定性保障最后说一个保命技巧不要只依赖vue.config.js里的一个isSingle变量切换逻辑最好把两种模式的构建差异抽成独立函数并用环境变量显式区分。我见过有同事直接在配置里写了大量if分支结果某次重构时改漏了一个条件多页模式构建出来的HTML也只剩一个线上直接崩了。我自己的做法是在vue.config.js顶部先声明两个独立函数区域buildMultiPage()和buildSinglePage()每个函数内部职责单一最后统一根据process.env.VUE_APP_BUILD_MODE分派。这样即使后续加再多的逻辑也不会互相污染。你在自己项目里也可以按这个思路整理宁可多写一点函数封装也别在配置里埋雷。这套方法我实际维护了大半年期间既有传统多页部署的版本也有对接统一登录壳子的单页版本两边迭代并行。每次发版前跑两条构建命令对比产物基本没出过岔子。如果你也正卡在多页架构和单页需求之间不妨照着这套思路落地先跑通构建再慢慢优化体积比推倒重来靠谱得多。

相关新闻

提示词库的工程化:product-manager-prompts 校验与目录生成脚本解析

提示词库的工程化:product-manager-prompts 校验与目录生成脚本解析

【免费下载链接】product-manager-prompts A repository of Generative AI prompts for product managers using agents such as ChatGPT, Claude, & Gemini 项目地址: https://gitcode.com/gh_mirrors/pr/product-manager-prompts 点击查看 免费下载 product-…

2026/10/14 17:58:20 阅读更多 →
Qt鼠标事件与paintEvent绘图实战:手写迷你画板

Qt鼠标事件与paintEvent绘图实战:手写迷你画板

你有没有遇到过这种情况:在Qt里写了个自定义控件,鼠标怎么点都没反应,界面上该画的图形也不刷新,网上搜了一堆资料,结果发现是事件处理器根本没重写对地方。我当年自学Qt时,就被鼠标事件和绘图事件这套组合…

2026/10/14 17:58:20 阅读更多 →
网易算法岗笔试复盘:题型、考点与代码实战解析

网易算法岗笔试复盘:题型、考点与代码实战解析

2020年8月8日,周六,下午两点半,我参加了网易算法岗的在线笔试。印象很深,因为那天很热,房间里空调嗡嗡响,我在等待笔试平台加载的时候,手心全是汗。现在回头看,这次笔试暴露了不少我…

2026/10/15 18:36:22 阅读更多 →

最新新闻

NDIS小端口驱动开发实战:从Miniport注册到NBL收发路径详解

NDIS小端口驱动开发实战:从Miniport注册到NBL收发路径详解

简介:这是一份面向Windows内核网络驱动开发者的NDIS 6.0小端口驱动实例源码,针对Realtek 8111/8168/8169/8110等PCI千兆以太网控制器编写。由于DDK中可参考的miniport示例仅有E100BEX,学习NDIS 6.0网卡驱动的资料相当稀缺,本资源正…

2026/10/15 20:55:56 阅读更多 →
档案管理信息系统核心设计:PostgreSQL+Django构建可审计闭环

档案管理信息系统核心设计:PostgreSQL+Django构建可审计闭环

简介:本资源是一套基于Delphi 6与SQL Server的档案管理信息系统(AMIS)完整开发源码包,面向高校计算机专业学生、桌面应用初学者及中小型单位信息化建设人员,解决传统档案手工管理效率低、检索难、权限模糊、版本混乱等…

2026/10/15 20:55:56 阅读更多 →
openai模型性能对比:用TaoToken统一Key跑通多模型基准测试

openai模型性能对比:用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/15 20:55:56 阅读更多 →
C++算法实现工程手册:从数据结构选型到性能验证的避坑指南

C++算法实现工程手册:从数据结构选型到性能验证的避坑指南

简介:《Implementing Useful Algorithms in C》由Dmytro Kedyk撰写,面向具备一定C基础、希望深入掌握算法设计与工程实现的开发者与计算机专业学生。全书从算法正确性证明、渐进记法、机器模型等基础出发,延伸至随机化算法、数据类型选择、内…

2026/10/15 20:55:56 阅读更多 →
GPT、Kimi、DeepSeek 多模态能力实测:open design 设计任务中的公平对比与 TaoToken 统一接入

GPT、Kimi、DeepSeek 多模态能力实测:open design 设计任务中的公平对比与 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/15 20:55:56 阅读更多 →
具身智能中的协同机理研究(107):双引擎并行实现毫秒级精确控制

具身智能中的协同机理研究(107):双引擎并行实现毫秒级精确控制

前沿技术探索:TVA智能体(简称TVA) TVA智能体(亦称“AI智能体视觉”)是依托Transformer架构与“因式智能体”理论构建的新型工业视觉系统,也是当前最具代表性的具身视觉技术之一。它有机融合深度强化学习(DRL)、卷积神经网络(CNN)与因式分解算法(FRA),构成了具身智…

2026/10/15 20:54:55 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战: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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →