vue3动态修改打包后的请求路径的操作代码

要动态修改打包后的请求路径,需要通过修改Vue CLI中的webpack配置实现。下面是具体的步骤:

  1. 打开Vue项目所在目录,找到vue.config.js文件。如果该文件不存在则需要手动创建。

  2. 使用process.env.BASE_URL获取当前项目的基础路径,然后将该路径保存到变量中,这个变量可以在需要的地方被引用。

javascript
const baseUrl = process.env.BASE_URL;

  1. 找到webpack生成的HTML文件所需要的代码的位置,对代码进行修改。在修改之前先要获取该位置的loader,对于vue-cli生成的项目来说,这个位置的代码位于index.html模板中,并且使用了html-webpack-plugin插件以及内置的raw-loader

javascript
config.plugin('html').tap(args => {
args[0].template = require('raw-loader!./public/index.html');
return args;
});

  1. 修改该位置的代码,将其中的请求路径替换为打包后的路径。如下面的示例所示,将原本的url(../image/logo.png)修改为url(${baseUrl}/image/logo.png)

javascript
config.plugin('html').tap(args => {
args[0].template = require('raw-loader!./public/index.html').replace(
/url\(\.\.\/image/g,
`url(${baseUrl}/image`
);
return args;
});

  1. 使用变量引用需要动态修改的路径。在组件中使用变量引用路径时需要提前对变量进行定义,定义语句可以放在Vue实例之前。

```javascript
const baseUrl = process.env.BASE_URL;

new Vue({
router,
render: h => h(App)
}).$mount("#app");
```

下面是另外一个示例,在vue.config.js中将图片路径替换成CDN地址:

const baseUrl = process.env.BASE_URL;

module.exports = {
  chainWebpack: config => {
    const svgRule = config.module.rule("svg");
    svgRule.uses.clear();
    svgRule
      .use("vue-svg-loader")
      .loader("vue-svg-loader")
      .options({
        svgo: {
          plugins: [{ removeViewBox: false }, { removeXMLNS: true }]
        }
      })
      .end();
  },
  configureWebpack: {
    module: {
      rules: [
        {
          test: /\.(png|jpe?g|gif|webp)(\?.*)?$/,
          use: [
            {
              loader: "url-loader",
              options: {
                limit: 4096,
                fallback: {
                  loader: "file-loader",
                  options: {
                    name: "img/[name].[hash:8].[ext]"
                  }
                }
              }
            }
          ]
        }
      ]
    }
  },
  pluginOptions: {
    "style-resources-loader": {
      preProcessor: "scss",
      patterns: []
    }
  },
  chainWebpack: config => {
    config.module
      .rule("vue")
      .use("vue-loader")
      .tap(options => {
        options.compilerOptions.preserveWhitespace = true;
        return options;
      });
  },
  css: {
    loaderOptions: {
      sass: {
        additionalData: `@import "~@/assets/main.scss";`
      }
    }
  },
  pwa: {
    name: "vue-cli4-pwa-template",
    themeColor: "#4DBA87",
    msTileColor: "#000000",
    appleMobileWebAppCapable: "yes",
    appleMobileWebAppStatusBarStyle: "black",
    manifestOptions: {
      icons: [
        {
          src: "./img/icons/android-chrome-192x192.png",
          sizes: "192x192",
          type: "image/png"
        },
        {
          src: "./img/icons/android-chrome-512x512.png",
          sizes: "512x512",
          type: "image/png"
        },
        {
          src: "./img/icons/android-chrome-maskable-192x192.png",
          sizes: "192x192",
          type: "image/png",
          purpose: "maskable"
        },
        {
          src: "./img/icons/android-chrome-maskable-512x512.png",
          sizes: "512x512",
          type: "image/png",
          purpose: "maskable"
        }
      ]
    },
    workboxOptions: {
      // offline page
      offlineGoogleAnalytics: true,
      runtimeCaching: [
        {
          urlPattern: new RegExp(baseUrl),
          handler: "CacheFirst",
          options: {
            cacheName: "my-cache",
            expiration: {
              maxEntries: 10,
              maxAgeSeconds: 300
            }
          }
        }
      ]
    }
  },

  // 修改打包后的资源路径
  publicPath: baseUrl,

  // 开启gzip压缩
  productionSourceMap: false,
  configureWebpack: config => {
    if (process.env.NODE_ENV === "production") {
      config.plugins.push(new CompressionPlugin());
    }
  }
};

以上就是Vue 3中动态修改打包后的请求路径的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue3动态修改打包后的请求路径的操作代码 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 新手vue构建单页面应用实例代码

    下面是详细讲解“新手vue构建单页面应用实例代码”的完整攻略。 1. 创建基于Vue的项目 首先,我们需要安装Vue的脚手架工具vue-cli。安装命令如下: npm install -g vue-cli 安装完成之后,我们可以使用vue init命令来生成一个基于Vue的项目。具体命令如下: vue init webpack my-app 其中,“my-a…

    Vue 2023年5月27日
    00
  • vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件

    使用vue-cli 3来集成vue-bootstrap-datetimepicker日期插件,需要使用以下步骤: 步骤一:安装依赖 在命令行中进入项目根目录,然后运行以下命令来安装需要的依赖: npm install vue-bootstrap-datetimepicker –save 步骤二:引入CSS和JS文件 在你的Vue组件之前,需要引入CSS和J…

    Vue 2023年5月29日
    00
  • vue使用websocket的方法实例分析

    Vue使用WebSocket的方法实例分析 WebSocket是一种在单个TCP连接上进行全双工通信的协议。Vue.js是一个流行的JavaScript框架,常用于前端开发。在Vue中使用WebSocket可以实现实时更新数据等功能。本文将详细讲解在Vue中使用WebSocket的方法实例分析。 前置要求 在使用WebSocket之前,需要确保以下内容: 安…

    Vue 2023年5月28日
    00
  • Vue实现数据表格合并列rowspan效果

    下面是Vue实现数据表格合并列rowspan的攻略: 一、准备工作 安装Vue.js和引入外部表格插件element-ui。 准备好需要展示的表格数据。 二、实现合并功能 实现合并的核心是在表格渲染之后,对表格单元格进行合并操作。可以通过计算表格中相邻单元格的值是否相同来实现合并,如果相同,则将当前单元格上下跨度设置为0,否则就将上一次开始合并的单元格的跨度…

    Vue 2023年5月27日
    00
  • Vue指令的钩子函数使用方法

    Vue.js 是一种流行的前端框架,它带有大量的指令。指令允许 Vue 开发人员通过 HTML 绑定操作来扩展 HTML,使开发人员可以自定义指令,然后在 HTML 元素上应用它们。 Vue 中的每个指令都具有一组固定的生命周期钩子。 什么是 Vue 指令钩子函数 Vue 指令钩子函数是一组函数,它们在用户自定义指令的生命周期中被调用。它们提供了一个方法来控…

    Vue 2023年5月28日
    00
  • Vue.js 时间转换代码及时间戳转时间字符串

    对于Vue.js的时间转换,可以通过使用其提供的filters(过滤器)来实现,同时我们也可以使用moment.js这个工具库来方便地进行时间转换。 使用 Vue.js Filter 进行时间转换 在 Vue.js 中,我们可以通过定义 Filter 来实现字符串到特定格式的日期的转换,该功能类似于 AngularJS 中的 Filter。下面是一个简单的例…

    Vue 2023年5月27日
    00
  • vue面包屑组件的封装方法

    下面是关于“Vue面包屑组件的封装方法”的完整攻略: 一、Vue面包屑组件的功能 Vue面包屑组件是一种展示“面包屑导航”的组件,可以使用户快速了解当前自己所在的路径,便于用户在网站中进行页面跳转。 这种组件的基本功能包括: 显示当前页面所在的路径(由多个层级组成) 根据路径提供页面跳转的链接 二、Vue面包屑组件的封装 在Vue中封装一个面包屑组件,可以采…

    Vue 2023年5月27日
    00
  • vue中对象的赋值Object.assign({}, row)方式

    在Vue中,我们经常需要对对象进行赋值。而Object.assign()是一个常用的对象赋值操作,尤其常用于实现浅拷贝。在Vue中,我们可以使用Object.assign({}, row)来实现浅拷贝,将row对象的所有属性和方法赋值给一个空对象。 以下是Object.assign()的基本语法: Object.assign(target, source1,…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部