vue-cli与webpack处理静态资源的方法及webpack打包的坑

下面我将详细介绍vue-cli与webpack处理静态资源的方法及webpack打包的坑。

1. vue-cli与webpack处理静态资源的方法

1.1 图片资源处理

在vue-cli项目中,图片资源可以使用require()直接导入,在vue文件中使用即可,例如:

<template>
  <div>
    <img :src="imgUrl" alt="">
  </div>
</template>

<script>
export default {
  name: 'Example',
  data() {
    return {
      imgUrl: require('@/assets/images/example.png')
    }
  }
}
</script>

1.2 CSS资源处理

可以在vue文件中使用import导入css文件,在style标签中使用即可,例如:

<template>
  <div class="example">
    Example
  </div>
</template>

<script>
export default {
  name: 'Example'
}
</script>

<style lang="scss">
@import '@/assets/styles/example.scss';

.example {
  // example.scss中定义的样式
  @include exampleMixin();
}
</style>

2. webpack打包的坑

2.1 文件名hash

使用vue-cli脚手架以及webpack构建项目时,打包时需要对文件名进行hash处理,防止浏览器缓存,具体设置如下:

// vue.config.js
module.exports = {
  filenameHashing: true,
  // ...其他配置
}

2.2 静态资源路径

在vue-cli项目中使用vue-router时,打包后的index.html引用静态资源的路径不对,需要手动设置publicPath,具体设置如下:

// vue.config.js
module.exports = {
  publicPath: './',
  // ...其他配置
}

2.3 打包后文件名不一致

在使用vue-cli构建项目并打包时,很可能会遇到一个问题,即打包后文件名经常不是你期望的名字。这是因为vue-cli在打包时会根据入口文件的名称生成output内的filename标识符。但是当webpack遇到第三方包时,它不会根据包名打包生成对应的文件名,而是根据module.exports,相关处理如下:

// vue.config.js
module.exports = {
  // 修改 webpack 的配置
  configureWebpack: {
    entry: {
      app: './src/main.js'
    },
    output: {
      filename: 'js/[name].[hash].js',
      chunkFilename: 'js/[name].[hash].js'
    },
    optimization: {
      runtimeChunk: 'single', // 将 webpack 的 runtime 和模板文件合并
      splitChunks: {
        cacheGroups: {
          vendor: {
            test: /[\\/]node_modules[\\/]/,
            name(module) {
              const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1] // 由于名称不统一,这里的处理方式是取包名作为最终生成的文件名
              return `vendor.${packageName.replace('@', '')}`
            },
            chunks: 'all'
          }
        }
      }
    }
  },
  // ...其他配置
}

以上就是关于vue-cli与webpack处理静态资源的方法及webpack打包的坑的详细攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue-cli与webpack处理静态资源的方法及webpack打包的坑 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 老生常谈position定位——让人又爱又恨的属性

    对于“老生常谈position定位——让人又爱又恨的属性”,我可以给你一个完整的攻略。 什么是position定位? position是CSS中非常重要的一个属性,它用于设置元素的定位方式。常见的取值有static(静态定位)、relative(相对定位)、absolute(绝对定位)和fixed(固定定位)。 元素的位置可以由CSS的left、right、…

    css 2023年6月10日
    00
  • Css浮动元素外层容器高度为0(无高度)的解决方法

    当浮动元素是其外层容器的第一个或最后一个子元素时,且外层容器未设置高度时,可能会出现浮动元素外层容器高度为0的情况。为解决这一问题,我们可以采用以下几种方法: 1. 使用 clear 在浮动元素的外层容器的末尾添加一个空元素,并设置 clear:both;,以清除浮动影响,使得外层容器可以自适应子元素高度。 <div class="conta…

    css 2023年6月10日
    00
  • JavaScript实现表格表单的随机选择和简单的随机点名

    接下来我将为大家详细讲解“JavaScript实现表格表单的随机选择和简单的随机点名”的攻略。 一、JavaScript实现表格表单的随机选择 首先,在HTML文件中创建表格及表格中的选项,并为选项设置相同的class。 “`html 选项一 选项二 选项三 选项四 “` 在JavaScript中获取所有选项并存储。 javascript let opt…

    css 2023年6月10日
    00
  • CSS 容器背景 10 种颜色渐变Demo(linear-gradient())

    当我们使用 CSS 容器元素时,我们可以设置一种渐变背景色来改变样式。这种技术使用 linear-gradient() 函数来创建颜色渐变。接下来,我将为你提供一个完整的攻略来使用这个函数。 一、基本语法 linear-gradient() 函数的基本语法如下: background: linear-gradient(direction, color-sto…

    css 2023年6月9日
    00
  • 10分钟入门CSS3 Animation

    下面是针对“10分钟入门CSS3 Animation”的完整攻略: CSS3 Animation是什么 CSS3 Animation是CSS3中的一个模块,其主要作用是创建动态效果,使网页更加生动、活泼。通过CSS3 Animation,可以实现各种复杂的动画效果,如旋转、放大、缩小、褪色等。 CSS3 Animation的语法 CSS3 Animation…

    css 2023年6月9日
    00
  • 详解CSS(层叠样式表)渐进增强

    CSS(层叠样式表)是一种用于描述网页样式的语言,可以用于控制网页的布局、颜色、字体等方面。渐进增强是一种设计理念,即在设计网页时,应该先考虑基本功能的实现,然后再逐步增加高级功能。以下是关于详解CSS(层叠样式表)渐进增强的完整攻略。 步骤一:基本样式 首先,需要定义网页的基本样式,包括布局、颜色、字体等方面。以下是一个示例: body { font-fa…

    css 2023年5月18日
    00
  • 遗迹灰烬重生武器有哪些 武器、套装与特性收集攻略

    遗迹灰烬重生武器攻略 一、遗迹灰烬重生武器介绍 遗迹灰烬重生是《原神》中的一个重要活动,其中最重要的奖励之一就是遗迹灰烬重生武器。在这个活动中,你可以通过完成任务、挑战宝箱和购买商品等方式获得遗迹灰烬重生装备和材料。 二、遗迹灰烬重生武器种类 在遗迹灰烬重生活动中,一共有7种不同的武器可以获得,分别是: 狼的末路 天空之刃 邪神之死 龙脊长弓 狂沙裂斩 冰风…

    css 2023年6月10日
    00
  • VS Code代码六边形颜色长度怎么设置未错误?

    VS Code代码六边形颜色长度设置攻略 在 VS Code 中,六边形颜色长度通常指的是 CSS 颜色值的长度。设置正确的颜色长度可以让你的代码更具可读性,并且避免出现一些错误。接下来,我们将详细讲解如何设置 VS Code 中的六边形颜色长度。 步骤一:打开设置 首先,我们需要打开 VS Code 设置。方法是在菜单栏中选择 File -> Pre…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部