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日

相关文章

  • 使用CSS样式position:fixed水平滚动的方法

    要实现水平滚动,我们可以使用CSS样式中的position与overflow属性。 position: fixed 使用position: fixed可以将元素定位到浏览器窗口的固定位置,不随用户的滚动而变化,达到水平滚动的效果。 需要注意的是,我们需要设置left或right属性的值来确定元素的位置。比如,将一个导航栏固定在网页的左侧,可以写出如下代码: …

    css 2023年6月10日
    00
  • css 常用样式(分享)

    CSS 常用样式(分享) 简介 CSS (Cascading Style Sheets) 层叠样式表,用于美化网页的外观,是前端开发的必备技术。本文将会分享一些常用的 CSS 样式和用法,帮助读者更好地掌握 CSS 技能。 文本样式 文本颜色 color: red; /* 文本颜色为红色 */ 文本大小 font-size: 16px; /* 文本大小为 1…

    css 2023年6月9日
    00
  • Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)

    下面是详细讲解: Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验) 在日常爬虫过程中,有很多情况下需要模拟登录实现数据或者页面的获取,这时就需要使用到selenium了。Selenium是一款自动化测试工具,但是同样能够用来模拟登录,其内部其实是通过去操作浏览器依靠JS控制实现各种自动化的。 需求 通过实例来演示Selenium…

    css 2023年6月10日
    00
  • 在固定大小DIV层插入N个图片使其一行排列

    对于在固定大小的div层插入N个图片使其一行排列,可以采取以下攻略: 首先,需要确定所需的图片数量N以及固定大小width和height。 接着,在div层中添加N个img标签,并将img标签的src属性设置为对应的图片路径。例如,若有3张图片,可以如下代码: <div style="width:600px;height:100px;&quo…

    css 2023年6月10日
    00
  • Bootstrap插件全集

    Bootstrap插件全集攻略 Bootstrap是一款流行的前端框架,它提供了众多的组件和工具,其中包含了一系列的插件。Bootstrap插件全集主要是指将Bootstrap的所有插件进行了整合,方便开发者进行使用和管理。下面将详细介绍如何使用Bootstrap插件全集来提高开发效率。 安装Bootstrap插件全集 要使用Bootstrap插件全集,首先…

    css 2023年6月9日
    00
  • css之Display、Visibility、Opacity、rgba和z-index: -1的区别

    下面是关于CSS中Display、Visibility、Opacity、rgba和z-index: -1的详细讲解。 Display display属性用于控制元素的显示方式,常用的分别是block、inline和none。其中: block:块级元素,按照默认宽度自动换行; inline:内联元素,不会换行,会随父级的宽度变化而变化; none:不显示元素…

    css 2023年6月10日
    00
  • 浅谈css3新单位vw、vh、vmin、vmax的使用详解

    浅谈CSS3新单位vw、vh、vmin、vmax的使用详解 CSS3新增了四个相对于窗口尺寸的单位:vw、vh、vmin、vmax。这些单位可以帮助我们更好地控制和布局我们的网页元素。下面就详细介绍一下每种单位的用法和示例。 vw vw表示相对于视口宽度的百分比,1vw等于视口宽度的1%。使用vw可以让元素的尺寸随着视口的变化而变化。例如,想将一个元素的宽度…

    css 2023年6月10日
    00
  • 使用HTML5捕捉音频与视频信息概述及实例

    下面就是使用HTML5捕捉音频与视频信息的完整攻略: 概述 在HTML5中,我们可以使用<audio>和<video>标签来嵌入音频和视频文件到网页中,同时也可以使用JavaScript通过这些标签来获取和修改音频和视频的相关信息。在本攻略中,我们主要介绍如何使用HTML5来捕捉音频和视频的信息,包括如何获取音频和视频的持续时间、当前…

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