vue-cli webpack模板项目搭建及打包时路径问题的解决方法

Vue-cli webpack模板项目搭建及打包时路径问题的解决方法

Vue-cli提供了Webpack的模板项目,使用这个模板项目可以快速地搭建一个Vue项目,并且提供了大量的开发工具和插件,方便我们进行开发、调试和打包等操作。但是当我们要在打包时把项目部署到服务器上时,会遇到一些路径问题。

1. 安装Vue-cli

首先,我们需要安装Vue-cli,打开终端(命令行),输入以下命令:

npm install -g vue-cli

2. 创建Vue项目

创建Vue项目,输入以下命令:

vue init webpack my-project

其中,my-project是你要创建的项目名称。

在创建时,可以选择默认设置,也可以根据自己的需求进行选择,例如选择ESLint、Vuex等。

? Generate project in current directory? Yes
? Project name my-project
? Project description A Vue.js project
? Author your name
? Vue build standalone
? Install vue-router? Yes
? Use ESLint to lint your code? Yes
? Pick an ESLint preset Standard
? Set up unit tests No
? Setup e2e tests with Nightwatch? No
? Should we run `npm install` for you after the project has been created? (recom
mended) npm

3. 安装依赖

进入项目目录,安装依赖:

cd my-project
npm install

4. 配置路径

4.1 修改config/index.js

config/index.js文件中,找到如下代码:

build: {
  // Paths
  assetsRoot: path.resolve(__dirname, '../dist'),
  assetsSubDirectory: 'static',
  assetsPublicPath: '/',
}

assetsPublicPath的值改为./,如下所示:

build: {
  // Paths
  assetsRoot: path.resolve(__dirname, '../dist'),
  assetsSubDirectory: 'static',
  assetsPublicPath: './',
}

4.2 配置一些需要引用的资源路径

我们可以在我们的Vue项目中,通过像下面这样的方式去引用我们的资源:

<img src="/static/logo.png">

这里的/static/logo.png的前面的斜杠代表根目录,会在构建时替换为assetsPublicPath中的内容。

那么如果我们有一些需要引用的资源路径,需要在assetsPublicPath后面添加一些内容时,可以先在config/index.js中进行配置,如:

build: {
  // Paths
  assetsRoot: path.resolve(__dirname, '../dist'),
  assetsSubDirectory: 'static',
  assetsPublicPath: './',
  // 添加一些需要引用的资源路径
  staticPath: 'http://www.example.com/static/',
}

然后就可以在我们的Vue项目中,通过像下面这样的方式去引用我们的资源:

<img src="${assets.staticPath}/logo.png">

5. 打包项目

打包项目,输入以下命令:

npm run build

打包成功后,会生成一个dist目录,里面包含了我们打包好的文件。

6. 示例说明

6.1 图片路径问题的解决

当我们在Vue项目中引用图片时,如果不加任何路径信息,那么Webpack将会根据模块规则自动配置图片路径,将其缩进到dist目录下。

<img src="./assets/logo.png">

在打包后生成的文件中,会自动修改路径:

<img src="/static/img/logo.0031d14.png">

这样就可以正确地引用了。

6.2 CSS文件中引用图片问题的解决

在CSS文件中引用图片时,同样会自动缩进到dist目录下,但是需注意,需要在路径前加上~符号,如:

.my-style {
  background-image: url(~assets/images/my-background.png);
}

在打包后生成的文件中,会自动修改路径:

.my-style {
  background-image: url(/static/img/my-background.87c6ca7.png);
}

以上两个示例说明了在Vue-cli webpack模板项目搭建及打包时路径问题的解决方法,希望对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue-cli webpack模板项目搭建及打包时路径问题的解决方法 - Python技术站

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

相关文章

  • 老生常谈vue的生命周期

    下面我就来详细讲解一下“老生常谈Vue的生命周期”的完整攻略。 什么是Vue的生命周期? Vue的生命周期简单来说,是指Vue实例从创建、更新到销毁的整个过程中,会发生一系列的钩子函数。这些钩子函数被称为“生命周期钩子”,它们可以在特定的时刻进行特定的操作。 Vue的生命周期包含哪些钩子函数? Vue的生命周期包含以下钩子函数: beforeCreate:在…

    Vue 2023年5月28日
    00
  • vue页面使用多个定时器的方法

    下面是关于Vue页面使用多个定时器的方法的详细攻略: 一、前置知识 在使用Vue页面多个定时器之前,需要掌握以下知识: Vue.js的生命周期钩子函数:created、mounted、updated、destroyed setInterval和clearInterval的用法 二、方法一:使用Vue.js的watch属性 如果在Vue组件中同时使用多个定时器…

    Vue 2023年5月29日
    00
  • vue中多个倒计时实现代码实例

    下面是“vue中多个倒计时实现代码实例”的完整攻略: 1. 基本思路 在Vue中实现多个倒计时,常用的方式是创建一个计时器组件,然后在需要倒计时的组件中引用并传递参数。具体实现步骤如下: 创建一个组件,例如Countdown组件,用于显示倒计时; 在Countdown中设置一个计时器,控制倒计时的时间; 在需要倒计时的组件中引用Countdown组件,并传递…

    Vue 2023年5月28日
    00
  • 带你理解vue中的v-bind

    当使用 Vue.js 开发页面时,我们常常需要给 HTML 元素动态绑定属性或者是事件,这个时候就需要使用到 v-bind 指令。v-bind 可以用来动态绑定 HTML 属性,甚至是自定义属性。 使用方法 v-bind 指令可以缩写成简洁的冒号绑定形式。使用方法如下: <template> <div> <!– 完整语法 –…

    Vue 2023年5月28日
    00
  • 一文带你从零开始搭建vue3项目

    一文带你从零开始搭建vue3项目 前言 Vue 3 是一款快速、小巧、易上手的前端框架,是Vue.js框架的最新版本。它具有较高的性能,提供更好的开发者体验,可帮助我们更快速地构建出一个高性能的web应用。 本文将为大家详细讲解如何从零开始搭建Vue3项目以及如何创建组件、路由和状态管理等方面。 准备工作 要开始构建 Vue3 项目,需要安装 Node.js…

    Vue 2023年5月28日
    00
  • vue数组双向绑定问题及$set用法说明

    Vue数组双向绑定问题及$set用法说明: 在Vue框架的开发中,经常需要使用数组来存储数据,并将其展示在页面上。但是,Vue对数组的双向绑定存在一些问题,例如添加或删除数组中的元素时,Vue无法自动更新视图。本攻略将详细讲解Vue数组双向绑定问题及$set用法说明。 Vue数组双向绑定问题: 当我们使用Vue来双向绑定数组时,会遇到以下问题: 添加元素不会…

    Vue 2023年5月27日
    00
  • Vue3.0利用vue-grid-layout插件实现拖拽布局

    下面我将详细讲解“Vue3.0利用vue-grid-layout插件实现拖拽布局”的完整攻略。 什么是vue-grid-layout插件? vue-grid-layout插件是一个基于Vue.js的实现可拖拽和可调整大小的网格布局的插件。它提供了一个理想的网格系统,具有最小的劳动力和最小的障碍。在Vue3.0版本中使用vue-grid-layout插件可以快…

    Vue 2023年5月29日
    00
  • vue项目打包后,由于html被缓存导致出现白屏的处理方案

    当 Vue 项目部署到线上服务器时,我们可能会遇到“白屏”问题,此现象通常是由于浏览器缓存的 HTML 文件。为了解决这种问题,我们可以尝试以下几种处理方案: 1. 在 index.html 中设置 meta 标签 在 index.html 文件的 head 标签里添加如下代码,告诉浏览器不要缓存: <meta http-equiv="Pra…

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