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

yizhihongxing

要动态修改打包后的请求路径,需要通过修改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日

相关文章

  • cdn模式下vue的基本用法详解

    CDN模式下Vue的基本用法详解 本文将会详细介绍如何在CDN模式下使用Vue.js,并且通过两个示例说明其基本用法。 什么是CDN模式 CDN即Content Delivery Network,翻译为内容分发网络。在Web开发中,我们往往需要引用第三方库,例如jQuery、Vue等。CDN模式是指我们将这些库放在一个分布式的服务器群集中,用户在访问我们的网…

    Vue 2023年5月27日
    00
  • Vue3.2 setup语法糖及Hook函数基本使用

    Vue3.2 为了更方便地使用组合式 API,推出了 setup 语法糖及一系列 hook 函数。 setup语法糖 setup 语法糖是 Vue3.2 中引入的一种新的组件函数语法,它代替了 Vue2.x 中的 beforeCreate、created 等生命周期函数,使得我们能够更加方便有效地使用组合式 API,进一步提高了 Vue3.2 在开发体验和性…

    Vue 2023年5月28日
    00
  • 17个vue常用的数组方法总结与实例演示

    我们来详细讲解一下“17个vue常用的数组方法总结与实例演示”的完整攻略。 一、前言 在Vue中,我们经常需要操作数组。而对于数组的操作,Vue提供了许多方便快捷的方法。本文将对Vue中17个常用的数组方法进行总结和实例演示,方便大家学习和使用。 二、数组方法 1. push 向数组添加一个或多个元素,并返回新的长度。 let arr = [1,2,3]; …

    Vue 2023年5月27日
    00
  • 简单学习5种处理Vue.js异常的方法

    下面我将详细讲解“简单学习5种处理Vue.js异常的方法”的完整攻略。 异常处理 在Vue.js应用中,异常处理是一个必不可少的部分。因为在应用的运行过程中,难免会出现一些错误或者异常情况,需要进行合理的处理。 常见的异常 TypeError:类型不匹配,通常发生在访问null或undefined值或者使用对象上不存在的方法或属性时。 ReferenceEr…

    Vue 2023年5月27日
    00
  • TypeScript 引用资源文件后提示找不到的异常处理技巧

    TypeScript 是一种强类型的 JavaScript 超集语言。在使用 TypeSript 进行开发时,我们有时会遇到引用资源文件后提示找不到的异常,这通常是因为在 TypeScript 中默认只会编译 .ts 文件,并不会编译其他类型的资源文件(比如 .json 或者 .png 文件)导致的。针对这种问题,我们可以使用以下技巧进行处理。 技巧一:使用…

    Vue 2023年5月28日
    00
  • vue-element-admin下载到登录的一些坑

    要讲解“vue-element-admin下载到登录的一些坑”的完整攻略,需要详细说明以下几个步骤: 下载 vue-element-admin Vue-element-admin 是一个基于 Vue.js 和 Element UI 的管理系统,提供了丰富的组件和功能,非常适合开发复杂的 Web 应用。可以通过 Git 下载,也可以直接下载 zip 文件。 安…

    Vue 2023年5月28日
    00
  • ant design vue中日期选择框混合时间选择器的用法说明

    Sure!下面是详细的攻略说明: 标题 ant design vue中日期选择框混合时间选择器的用法说明 简介 ant design vue是一个基于Vue的UI框架,其中日期选择框(DatePicker)是常见的一个组件。除了日期选择之外,DatePicker还可以选择时间。本文将详细介绍如何在DatePicker中使用时间选择器。 步骤 在DatePic…

    Vue 2023年5月29日
    00
  • vue全家桶-vuex深入讲解

    Vue全家桶-Vuex深入讲解 简介 在Vue项目中,我们经常用到状态管理库Vuex来管理应用状态。Vuex通过一个集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 安装 使用npm安装: npm install vuex –save 基本概念 State Vuex使用一个单一状态树,用一个对象包含了全部应用层级状态。…

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