关于vue src路径动态拼接的小知识

首先我们需要了解一下Vue中app的文件结构。在默认情况下,我们会在src目录下创建一个main.js的文件作为vue应用的入口文件。

在Vue中,我们可以使用相对路径引入我们的组件等资源,如:

import App from "./components/App.vue";

但是,由于在不同的环境下,我们的文件路径可能会发生变化,所以我们需要一种动态拼接路径的方式来解决这个问题。

一种常见的解决方案是,在项目的根目录中创建一个config.js文件,用来配置不同环境中的文件路径,如:

// config.js
const isProduction = process.env.NODE_ENV === "production";

export default {
  // 公共路径(实际上是资源路径)
  publicPath: isProduction ? "/production/path/" : "/dev/path/",
  // 图片路径
  imgPath: isProduction ? "/production/path/img/" : "/dev/path/img/",
};

在main.js中引入config.js,并根据需要进行路径拼接,如:

// main.js
import Vue from "vue";
import App from "./components/App.vue";
import config from "../config";

Vue.config.productionTip = false;

// 创建Vue实例
new Vue({
  // 根据配置动态拼接组件路径
  render: (h) => h(App),
  // 根据配置指定资源路径
  // 在template中使用路径: <img :src="`${imgPath}/logo.png`" />
  data: {
    imgPath: config.imgPath,
  },
}).$mount("#app");

在Vue组件中使用动态路径的方式与在main.js中类似。例如:

<template>
  <div>
    <img :src="`${imgPath}/logo.png`" />
  </div>
</template>

<script>
import config from "../../config";

export default {
  data() {
    return {
      // 根据配置指定资源路径
      imgPath: config.imgPath,
    };
  },
};
</script>

这样,我们就可以在不同的环境中正确地使用资源路径。

再举一个示例,假设我们在Vue项目中使用了axios库来发送HTTP请求。axios默认情况下会将请求的url以相对路径的方式解析,同样会受到环境路径的影响。我们可以将axios的默认baseURL设置为动态的根路径,如:

// main.js
import Vue from "vue";
import App from "./components/App.vue";
import axios from "axios";
import config from "../config";

Vue.config.productionTip = false;

// 设置axios的默认baseURL
axios.defaults.baseURL = config.publicPath;

// 创建Vue实例
new Vue({
  // 根据配置动态拼接组件路径
  render: (h) => h(App),      
}).$mount("#app");

这样,在我们的组件中使用axios发送请求时,就不需要手动拼接根路径了,类似这样:

axios.get("/api/data").then((res) => {
  console.log(res.data);
});

而axios会自动将url拼接为根路径+请求的相对路径。

希望这些示例可以帮助你理解如何在Vue项目中动态拼接路径。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:关于vue src路径动态拼接的小知识 - Python技术站

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

相关文章

  • 浅谈vue.js中v-for循环渲染

    浅谈vue.js中v-for循环渲染的完整攻略如下: 概述 Vue.js是一款流行的JavaScript框架,提供了许多方便的功能以帮助开发人员构建交互式Web应用程序。其中一个很有用的功能是v-for指令,可以在Vue.js中循环渲染列表数据。 利用v-for渲染列表 在Vue.js中,使用v-for指令可以循环渲染数据,语法如下: <ul> …

    Vue 2023年5月27日
    00
  • Vue-CLI3.x 自动部署项目至服务器的方法步骤

    Vue-CLI3.x 自动部署项目至服务器的方法步骤 Vue-CLI3.x 是一个官方发布的 Vue.js 项目脚手架工具,它能够快速创建一个基于 Vue.js 的项目,并提供了非常方便的开发工具。在使用 Vue-CLI3.x 进行开发过程中,为了能够让我们的项目能够在服务器上运行,需要对项目进行自动部署。本文将为大家介绍基于 Git、NodeJS、PM2 …

    Vue 2023年5月28日
    00
  • Vue3 diff算法的简单解刨

    Vue3 diff算法的简单解剖 什么是diff算法 Vue框架是一个基于MVVM模式的前端框架,其中最重要的就是数据驱动视图更新。而Vue3框架中采用的更新算法就是diff算法。 diff算法是比较前一次虚拟DOM(Virtual DOM)树和当前的虚拟DOM树的变化,通过计算出最小的变化来更新页面视图。其核心原理为比较新旧虚拟DOM树的差异。 Vue3 …

    Vue 2023年5月27日
    00
  • vue实现将一个数组内的相同数据进行合并

    要将一个数组内的相同数据进行合并,可以使用Vue.js提供的计算属性来完成。首先,需要对原始数据进行处理,将相同的数据进行合并,然后在模板中使用计算属性来渲染数据。 下面是一些示例说明: 示例一:将相邻重复的数字合并成一个,输出 [1,2,3,4,5] <template> <div> <p v-for="num in…

    Vue 2023年5月28日
    00
  • 解决vue.js not detected的问题

    当使用Vue.js框架开发web应用时,有时会出现Vue.js框架未被检测到的情况。这通常表现为网页空白,或者浏览器控制台输出“[Vue warn] You are using the runtime-only build of Vue where the template compiler is not available.” 这样的警告信息。本文将为大家…

    Vue 2023年5月27日
    00
  • Vue路由钩子之afterEach beforeEach的区别详解

    Vue路由钩子之afterEach beforeEach的区别详解 在Vue中,路由钩子是非常重要的一部分,他们可以在路由发生变化的时候执行一些动作。Vue提供了两种不同的路由钩子:beforeEach和afterEach。他们两个之间有什么区别呢?下面就详细进行讲解。 beforeEach beforeEach是你可以使用的一种路由钩子。在路由跳转之前,b…

    Vue 2023年5月27日
    00
  • 基于Vue-cli的一套代码支持多个项目

    使用Vue-cli可以快速搭建Vue项目,但默认情况下每个项目都有单独的配置文件和依赖项,不利于维护和迭代。为了解决这个问题,我们可以使用一套代码来支持多个项目,具体步骤如下: 创建一个公共Vue项目 首先,我们需要创建一个公共的Vue项目,用于存放所有项目都需要共享的组件、样式和功能。可以使用Vue-cli创建一个通用的项目: # 全局安装Vue-cli …

    Vue 2023年5月28日
    00
  • 详解vue中axios请求的封装

    下面我会详细讲解vue中axios请求的封装。 前言 在vue项目开发中,我们经常需要使用到axios进行数据请求。但是,每次使用axios都需要重复的书写请求代码,一方面增加了代码量,另一方面也容易造成代码的维护成本变高。 所以,我们需要将axios请求进行封装,以便于复用和维护代码。 封装步骤 1. 安装axios 在vue项目中,使用axios请求前,…

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