用webpack-serve一份配置同时搞定SPA路由回退与API代理
【免费下载链接】webpack-serveRepository has moved:项目地址https://gitcode.com/gh_mirrors/we/webpack-serve点击查看免费下载webpack-serve是一个轻量、现代的 webpack 开发服务器。对于单页应用SPA来说开发时最常踩的两个坑是前端路由刷新返回 404以及接口跨域无法调用。好消息是你不需要在webpack-serve之外再搭一层代理——只需一份serve配置就能同时完成 SPA 路由回退history fallback和 API 代理proxy让本地开发一步到位。一、先认识 add 扩展选项webpack-serve的核心理念是保持精简把扩展能力交给使用者。它的serve配置中有一个add选项接收一个函数参数是 Koa 应用实例app、中间件访问器middleware和内部options。在 lib/app.js 中可以看到服务器启动时会在绑定端口前执行options.add这就是你往开发服务器里塞自定义中间件的官方入口serve: { add: (app, middleware, options) { // 这里添加路由回退、API 代理等中间件 } };serve配置可以直接写在webpack.config.js的serve属性里也可以放在.serverc、serve.config.js等文件中详见 README.md。二、SPA路由回退一行接入 connect-history-api-fallback当你用history模式的前端路由如react-router的BrowserRouter时直接访问localhost:8080/user/42或刷新页面服务器找不到这个路径就会返回 404。connect-history-api-fallback中间件的作用就是把这类本该 404 的请求改写回index.html交给前端路由自行处理。官方示例见 docs/addons/history-fallback.config.js核心只有两行app.use(convert(history()));其中koa-connectconvert负责把 connect 风格的中间件适配到 Koa。完整配方里还设置了content: [__dirname]来提供静态文件。三、API代理http-proxy-middleware 转发请求前端调用/api/*接口时跨域最简单的办法是让开发服务器把/api前缀的请求转发到真正的后端服务http-proxy-middleware就能做到app.use(convert(proxy(/api, { target: http://localhost:8081 })));这条规则会把所有localhost:8080/api/*的请求转发到localhost:8081/api/*如果后端接口不带/api前缀只需加上pathRewrite: { ^/api: }即可去掉前缀。四、终极配方一份 serve 配置同时搞定两者把上面两部分合并就是官方推荐的组合方案完整示例在 docs/addons/proxy-history-fallback.config.jsmodule.exports.serve { content: [__dirname], add: (app, middleware, options) { // ① 先代理 /api 请求到后端 app.use(convert(proxy(/api, { target: http://localhost:8081 }))); // ② 再兜底做路由回退 app.use(convert(history())); } };顺序很关键代理规则必须放在路由回退之前。这样/api开头的请求先被拦截转发其余非静态文件请求才落进 fallback 返回index.html两者互不干扰。运行方式保持简洁$ webpack-serve ./webpack.config.js启动后访问http://localhost:8080前端路由可随意跳转刷新/api接口也直接走通不再需要浏览器插件开跨域。五、进阶玩法与常见坑代理需要排在内置中间件之后默认webpack-serve会在最后追加 webpack 与静态内容中间件。如果你的自定义路由如koa-router必须最后执行可在add中主动调用middleware.webpack()和middleware.content()接管顺序参考 docs/addons/proxy-router.config.js。静态文件优先级默认 webpack 产物优先于静态文件想让静态文件优先调用middleware.content()时注意顺序即可。--no-reload与--openCLI 支持--open自动打开浏览器、--port指定端口默认 8080完整参数用webpack-serve --help查看。更多扩展思路docs/addons/ 目录还收录了 gzip 压缩express-compress.config.js、局域网 IP 绑定local-ip.config.js、监听静态内容变化watch-content.config.js等配方可举一反三。⚠️ 注意webpack-serve官方已宣布弃用并推荐使用webpack-dev-server。但如果你维护的老项目正基于它本文的add中间件组合模式依然清晰可用且这套proxy history fallback的思路迁移到webpack-dev-server的devServer配置中几乎一比一成立。小结需求中间件效果SPA 刷新/深链 404connect-history-api-fallback非接口请求回退到 index.html/api接口跨域http-proxy-middleware请求透明转发到后端服务掌握add选项后webpack-serve的开发服务器就从只能跑页面升级成页面 路由 接口一站就绪。照着 docs/addons/proxy-history-fallback.config.js 抄一份今天就能省掉跨域调试的时间。赞分享【免费下载链接】webpack-serveRepository has moved:项目地址https://gitcode.com/gh_mirrors/we/webpack-serve点击查看免费下载相关推荐Snowpack 路由配置实战指南SPA 回退、API 代理与 WebSocket 转发Snowpack 路由配置实战指南SPA 回退、API 代理与 WebSocket 转发 Snowpack 作为 ESM 驱动的开发服务器本身不关心你的应用前端开发工具前端构建Puter 网站托管站点配置指南用 .puter_site_config 实现 SPA 路由回退与自定义 404 页面Puter 网站托管站点配置指南用 .puter_site_config 实现 SPA 路由回退与自定义 404 页面 Puter 为用户托管的静态网站免费后端前端AI 应用Triton Ascend Layout-transform / Permutation 代码生成要点Triton Ascend Layout transform / Permutation 代码生成要点 当算子为 permute 、 transpose 、 rAI 技能人工智能AI 评测CANNAscend创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

SPEA2多目标优化算法详解:强度、密度与档案截断机制的实战指南

SPEA2多目标优化算法详解:强度、密度与档案截断机制的实战指南

多目标优化(MOP)这个方向如果只让我挑一个“真正经典”的遗传算法,我会选SPEA2。全称Strength Pareto Evolutionary Algorithm 2,2001年提出,至今仍然被当作多目标进化算法的标杆之一。很多人在做对比实验、工程选型、…

2026/10/17 0:26:56 阅读更多 →
倚天财经期货指标公式期货指标源码编写

倚天财经期货指标公式期货指标源码编写

HH:HHV(HIGH,11); LL:LLV(LOW,11); 育龙:BARSLAST((HH>REF(HH,1))); 指标:BARSLAST((LL < REF(LL,1))); DRAWTEXT(CROSS(育龙,指标),90,话),COLORWHITE; DRAWTEXT(CROSS(指标,育龙),90,糸),COLORYELLOW; DRAWTEXT(CROSS(育龙,指标),60,1),COLORWHITE; DRAWTEXT(CROSS(指标…

2026/10/17 0:26:56 阅读更多 →
亮度变换与空间滤波:数字图像处理中的图像增强实践指南

亮度变换与空间滤波:数字图像处理中的图像增强实践指南

1. 为什么每一张“欠曝/过暗”的照片&#xff0c;都要从亮度变换说起我最早真正理解亮度变换这个知识点&#xff0c;不是在课本例题里&#xff0c;而是在一次图像预处理翻车现场。当时手里是一批夜间抓拍的监控截图&#xff0c;光线条件差到离谱&#xff0c;画面里像素值大多集…

2026/10/17 0:26:56 阅读更多 →

最新新闻

ROS Melodic 离线安装方案:Ubuntu 18.04 下 rosdep 本地化与依赖处理

ROS Melodic 离线安装方案:Ubuntu 18.04 下 rosdep 本地化与依赖处理

/* 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 1:04:15 阅读更多 →
多段图最短路径:动态规划状态设计与Python实现

多段图最短路径:动态规划状态设计与Python实现

/* 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 1:04:15 阅读更多 →
双串锂电池主动均衡方案:MP2642GR-Z与STM32G070RB实战

双串锂电池主动均衡方案:MP2642GR-Z与STM32G070RB实战

/* 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 1:04:15 阅读更多 →
RabbitMQ分布式事务实战:本地消息表实现最终一致性

RabbitMQ分布式事务实战:本地消息表实现最终一致性

/* 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 1:04:15 阅读更多 →
基于MP2642GR-Z与STM32F410RB的两串电池主动均衡方案设计与实现

基于MP2642GR-Z与STM32F410RB的两串电池主动均衡方案设计与实现

/* 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 1:04:15 阅读更多 →
基于MP2642GR-Z与MSP432的两串电芯被动均衡方案设计与实现

基于MP2642GR-Z与MSP432的两串电芯被动均衡方案设计与实现

/* 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 1:03:14 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

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

周新闻

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

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

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

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

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

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

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

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

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#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/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/16 14:23:36 阅读更多 →