vue实现前端热更新,零基础入门到精通,收藏这篇就够了

在前端开发中,代理配置是解决跨域问题的常见手段。尤其是在使用 Vue CLI 进行开发时,我们经常需要通过 devServer.proxy 来配置代理。

然而,传统的代理配置通常是静态的,修改后需要重启开发服务器,这在频繁调整代理配置的场景下显得非常不便。

本文将介绍一种动态代理配置的解决方案,通过监听配置文件的变化,实现代理配置的热更新,无需重启开发服务器。同时,我们将代理配置从 JSON 文件改为 JavaScript 文件,支持注释和更灵活的配置方式。

1. 背景与痛点

在 Vue CLI 项目中,我们通常会在 vue.config.js 中配置代理,例如:

module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: 'http://your-default-target.com',
        pathRewrite: { '^/api': '' },
      },
    },
  },
};

这种配置方式虽然简单,但存在以下问题:

  1. 静态配置:修改代理配置后,需要重启开发服务器才能生效。
  2. 不支持注释:JSON 文件不支持注释,配置复杂时难以维护。
  3. 灵活性不足:无法在配置文件中编写逻辑(如条件判断、函数等)。

为了解决这些问题,我们可以通过以下方式实现动态代理配置。

2. 解决方案

2.1 使用 JavaScript 文件存储代理配置

我们将代理配置从 proxy-config.json 改为 proxy-config.js,利用 JavaScript 文件的灵活性,支持注释和动态逻辑。

proxy-config.js 示例:
module.exports = {
  // API 代理配置
  '/api': {
    target: 'http://your-default-target.com', // 目标服务器
    pathRewrite: { '^/api': '' }, // 路径重写
    changeOrigin: true, // 支持跨域
  },

  // 其他代理配置
  '/auth': {
    target: 'http://auth-server.com',
    pathRewrite: { '^/auth': '' },
    changeOrigin: true,
  },
};

2.2 动态加载代理配置

通过 chokidar 监听 proxy-config.js 文件的变化,并在文件变化时重新加载代理配置。

setupProxy.js 实现:
const path = require('path');
const { createProxyMiddleware } = require('http-proxy-middleware');
const chokidar = require('chokidar');

// 代理配置文件路径
const proxyConfigPath = path.resolve(__dirname, 'proxy-config.js');

// 初始化代理配置
let proxyConfig = require(proxyConfigPath);
console.log('Initial proxy config:', proxyConfig);

// 导出代理配置函数
module.exports = function setupProxy(app) {
  // 动态设置代理
  let proxyMiddlewares = {};

  const updateProxies = () => {
    // 清空之前的代理
    Object.keys(proxyMiddlewares).forEach((context) => {
      app._router.stack = app._router.stack.filter(
        (layer) => layer.handle !== proxyMiddlewares[context]
      );
    });

    // 重新加载代理配置
    delete require.cache[require.resolve(proxyConfigPath)]; // 清除缓存
    proxyConfig = require(proxyConfigPath); // 重新加载配置

    // 重新设置代理
    Object.keys(proxyConfig).forEach((context) => {
      const options = proxyConfig[context];
      console.log(`Setting up proxy for ${context}:`, options);
      const middleware = createProxyMiddleware(options);
      proxyMiddlewares[context] = middleware;
      app.use(context, middleware);
    });
  };

  // 初始化代理
  updateProxies();

  // 监听文件变化
  chokidar.watch(proxyConfigPath).on('change', () => {
    console.log('Proxy config file changed, reloading...');
    updateProxies(); // 重新设置代理
  });
};

2.3 在 vue.config.js 中集成

vue.config.js 中引入 setupProxy.js,并将代理配置应用到开发服务器。

vue.config.js 示例:
const setupProxy = require('./setupProxy');

module.exports = {
  devServer: {
    host: 'localhost', // 开发服务器主机
    port: 8080, // 开发服务器端口
    clientLogLevel: 'warning', // 日志级别
    before(app) {
      console.log('Setting up proxy...');
      setupProxy(app); // 动态代理配置
    },
  },
};


3. 实现效果

3.1 动态更新代理配置
  1. 启动开发服务器:

    npm run serve
    
    
  2. 修改 proxy-config.js 文件,例如:

    module.exports = {
      '/api': {
        target: 'http://new-target.com', // 修改目标服务器
        pathRewrite: { '^/api': '/new-api' }, // 修改路径重写
        changeOrigin: true,
      },
    };
    
    
  3. 保存文件后,chokidar 会检测到文件变化,并自动重新加载代理配置。你可以在终端中看到日志输出:

    Proxy config file changed, reloading...
    Setting up proxy for /api: {
      target: 'http://new-target.com',
      pathRewrite: { '^/api': '/new-api' },
      changeOrigin: true
    }
    
    
  4. 代理配置会立即生效,无需重启服务。

3.2 支持注释与灵活配置

由于 proxy-config.js 是 JavaScript 文件,你可以轻松添加注释,甚至编写逻辑:

module.exports = {
  // API 代理配置
  '/api': {
    target: process.env.API_TARGET || 'http://default-target.com', // 支持环境变量
    pathRewrite: { '^/api': '' },
    changeOrigin: true,
  },

  // 根据条件动态配置
  ...(process.env.NODE_ENV === 'development' ? {
    '/dev': {
      target: 'http://dev-server.com',
      pathRewrite: { '^/dev': '' },
    },
  } : {}),
};


4. 总结

通过将代理配置从 JSON 文件改为 JavaScript 文件,并结合 chokidar 实现文件监听,我们成功实现了动态代理配置。这种方法具有以下优点:

  1. 无需重启服务:修改代理配置后,立即生效。
  2. 支持注释:提高代码可读性和可维护性。
  3. 灵活配置:可以在配置文件中编写逻辑,适应复杂场景。

如果你在 Vue CLI 项目中频繁调整代理配置,不妨试试这种动态代理配置方案,提升开发效率!

2025开年,AI技术打得火热,正在改变前端人的职业命运:

阿里云核心业务全部接入Agent体系;

字节跳动30%前端岗位要求大模型开发能力;

腾讯、京东、百度开放招聘技术岗,80%与AI相关……

大模型正在重构技术开发范式,传统CRUD开发模式正在被AI原生应用取代!

最残忍的是,业务面临转型,领导要求用RAG优化知识库检索,你不会;带AI团队,微调大模型要准备多少数据,你不懂;想转型大模型应用开发工程师等相关岗,没项目实操经验……这不是技术焦虑,而是职业生存危机!

曾经React、Vue等热门的开发框架,已不再是就业的金钥匙。如果认为会调用API就是懂大模型、能进行二次开发,那就大错特错了。制造、医疗、金融等各行业都在加速AI应用落地,未来企业更看重能用AI大模型技术重构业务流的技术人。

如今技术圈降薪裁员频频爆发,传统岗位大批缩水,相反AI相关技术岗疯狂扩招,薪资逆势上涨150%,大厂老板们甚至开出70-100W年薪,挖掘AI大模型人才!

在这里插入图片描述

不出1年 “有AI项目开发经验”或将成为前端人投递简历的门槛。

风口之下,与其像“温水煮青蛙”一样坐等被行业淘汰,不如先人一步,掌握AI大模型原理+应用技术+项目实操经验,“顺风”翻盘!

大模型目前在人工智能领域可以说正处于一种“炙手可热”的状态,吸引了很多人的关注和兴趣,也有很多新人小白想要学习入门大模型,那么,如何入门大模型呢?

下面给大家分享一份2025最新版的大模型学习路线,帮助新人小白更系统、更快速的学习大模型!

2025最新版CSDN大礼包:《AGI大模型学习资源包》免费分享**

一、2025最新大模型学习路线

一个明确的学习路线可以帮助新人了解从哪里开始,按照什么顺序学习,以及需要掌握哪些知识点。大模型领域涉及的知识点非常广泛,没有明确的学习路线可能会导致新人感到迷茫,不知道应该专注于哪些内容。

我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。

L1级别:AI大模型时代的华丽登场

L1阶段:我们会去了解大模型的基础知识,以及大模型在各个行业的应用和分析;学习理解大模型的核心原理,关键技术,以及大模型应用场景;通过理论原理结合多个项目实战,从提示工程基础到提示工程进阶,掌握Prompt提示工程。

L2级别:AI大模型RAG应用开发工程

L2阶段是我们的AI大模型RAG应用开发工程,我们会去学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

L3级别:大模型Agent应用架构进阶实践

L3阶段:大模型Agent应用架构进阶实现,我们会去学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造我们自己的Agent智能体;同时还可以学习到包括Coze、Dify在内的可视化工具的使用。

L4级别:大模型微调与私有化部署

L4阶段:大模型的微调和私有化部署,我们会更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调;并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

整个大模型学习路线L1主要是对大模型的理论基础、生态以及提示词他的一个学习掌握;而L3 L4更多的是通过项目实战来掌握大模型的应用开发,针对以上大模型的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。

二、大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础(书籍含电子版PDF)

三、大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

四、大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

五、大模型面试题

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。


因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

2025最新版CSDN大礼包:《AGI大模型学习资源包》免费分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值