关于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日

相关文章

  • Vue3中的setup语法糖、computed函数、watch函数详解

    当然,下面是详细讲解”Vue3中的setup语法糖、computed函数、watch函数详解”的完整攻略。 Vue3中的setup语法糖 Vue 3中,通过setup函数,我们能够更加灵活地组合组件逻辑,并且避免在组件外部缩小组件范围。同时,setup函数也为我们提供了更多的代码执行选项,使得我们能够在更多的场景下使用Vue。 下面是一个HelloWorld…

    Vue 2023年5月28日
    00
  • vue+element表格实现多层数据的嵌套方式

    实现多层数据的嵌套方式,可以通过使用Element UI table组件来实现。具体步骤如下: 步骤1:定义表格结构 首先要定义表格的结构,包括表头的内容和渲染每行数据的方式。Vue的template语法可以很方便地组织表格结构,示例代码如下: <template> <el-table :data="tableData"…

    Vue 2023年5月27日
    00
  • Vue axios 中提交表单数据(含上传文件)

    当我们使用Vue.js和axios时,我们通常需要将表单数据提交到后端交给服务器处理。这包括一些简单的表单数据提交和上传文件. 这里提供一个完整攻略如何使用Vue.js和axios提交表单数据(包含上传文件)。 设置后端服务器接受表单数据和文件 首先,我们需要设置后端服务器接受表单数据和文件,并且返回响应结果。通常情况下,我们会使用一些服务器端框架例如Dja…

    Vue 2023年5月28日
    00
  • Vue图片裁剪功能实现代码

    下面是详细讲解 Vue 图片裁剪功能实现代码的完整攻略。 1. 安装组件库 首先,我们需要使用第三方组件库来实现图片裁剪的功能。比较常用的有 Vue-Cropper 和 vue-clip。这里以 Vue-Cropper 为例,在命令行中输入以下代码进行安装: npm install vue-cropper 2. 导入依赖 安装完 Vue-Cropper 后,…

    Vue 2023年5月28日
    00
  • 在vue自定义组件中使用 v-model指令详情

    下面是详细讲解“在vue自定义组件中使用 v-model指令”的攻略。 什么是v-model v-model 指令在表单元素上创建了双向数据绑定。当表单元素的值发生变化时,其绑定的数据也会跟着变化;反之,当数据发生变化时,表单元素的值也会跟着变化。v-model在vue中非常常用。 在Vue自定义组件中使用v-model 在 Vue 自定义组件中使用 v-m…

    Vue 2023年5月28日
    00
  • Vue3中使用pnpm搭建monorepo开发环境

    首先,需要明确的是,Monorepo是指在一个版本控制仓库中管理多个模块(Packages)的开发方式。而pnpm是一种Node.js的包管理工具,与npm和yarn类似,但是相比之下,pnpm具有更快的速度和更节省的磁盘空间。 在Vue3中使用pnpm搭建Monorepo开发环境,主要分为以下几个步骤: 步骤一:安装pnpm 要使用pnpm,首先需要在本地…

    Vue 2023年5月28日
    00
  • vue 项目优雅的对url参数加密详解

    下面我将详细讲解“vue 项目优雅的对url参数加密详解”的完整攻略。 1. 为什么需要对URL参数加密? 在前端开发中,我们经常会需要将一些敏感信息或者重要参数放在URL中传递,例如用户ID、订单编号等等。而如果这些参数没有加密,在传输过程中就很容易被黑客或者攻击者窃取和篡改。因此,对URL参数加密是非常有必要的。 2. 实现方案 Vue项目优雅的对URL…

    Vue 2023年5月27日
    00
  • Vue-Router的routes配置详解

    Vue-Router是Vue.js官方推荐的路由管理器,它能够帮助我们轻松地完成页面之间的路由跳转、参数传递、路由拦截等功能。在使用Vue-Router时,最关键的一步就是进行路由配置。本文将详细介绍Vue-Router的routes配置详解。 routes配置基础 在使用Vue-Router时,我们首先需要通过创建VueRouter实例来进行路由配置。在V…

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