Webpack 总结

Webpack高级优化 本章节主要介绍 Webpack 高级配置。所谓高级配置其实就是进行 Webpack 优化,让我们代码在编译/运行时性能更好~ 阅读详情

Webpack

webpack 是一个前端常用的模块化打包工具,它的作用就是将 JavaScript 代码或者其他静态文件进行分析、压缩,最终合并打包成浏览器可以识别的代码。关于模块化,拿 ES6 module 来说,可以通过 export 导出,import 导入的代码块或者静态资源都可以成为模块。从入口文件开始,webpack 会通过递归的方式将应用程序所依赖的模块进行打包成一个或者多个 bundle。

这里写图片描述

webpack2 基本配置

let option = {
  entry: ‘./index.js’,     // 来指定一个入口起点(或多个入口起点),是打包的开始文件
  output: {                 // 告诉 webpack 在哪里输出它所创建的 bundles,以及如何命名这些文件。
    path: path.resolve('./web'),  // 输出的文件路径
    filename: 'build/js/[name].bundle.js',   // 打包后的文件名称,此时的名称是入口文件的名称
  },
  module: {
    rules: [{
        test: /\.vue$/,       //识别出应该被对应的 loader 进行转换的 vue 文件。
        loader: 'vue-loader',  //转换 vue 文件,从而使其能够被添加到依赖图中(并且最终添加到 bundle 中)
      },
      {
        test: /\.js$/,
        loader: 'babel-loader',
        exclude: /node_modules/,    // 排除 node_modules ,不转译 node_modules 文件夹
        options: {
          presets: ['es2015'],
          cacheDirectory: true  //将 babel-loader 提速至少两倍。 这会将转译的结果缓存到文件系统中。loader 将使用默认的缓存目录 node_modules/.cache/babel-loader
        }
      }, 
      {
        test: /\.css$/,
        loader: 'style-loader!css-loader'  //链式loaders ,可将相关正则匹配到的文件资源数据在几个loader之间进行共享传递
      },
      {
        test: /\.(eot|svg|ttf|woff|woff2)(\?\S*)?$/,
        loader: 'file-loader',
        options: {
          name: '[name].[ext]?[hash]',  
          outputPath: 'build/img/'
        }
      },
      {
        test: /\.(png|jpg|gif|svg|jpeg)$/,
        loader: 'file-loader?name=build/img/[name].[hash:6].[ext]' // 将图片命名为 基本名称 + 哈希值 + 扩展名 格式并指定到 build/img 目录下
      } 
    ]
  },
  resolve: {   //设置模块如何被解析
    extensions: ['.js', '.vue', '.css'],   //自动解析确定的扩展,能够使用户在引入模块时不带扩展名
    alias: {    // 设置模块别名,便于我们更方便通过import 或 require 引用
      'vue': 'vue/dist/vue.js'
    }
  },
   plugins: [   // webpack 插件列表
     new HtmlWebpackPlugin({template: './src/index.html'})
 ]
}
module.exports = option

补充:

css-loader: 能够通过类似 @import 和 url(…)的方式,在 js 文件中实现通过 require 或者 import 引入 css 文件。

style-loader: 将模块的导出作为样式添加到 DOM 中,通常与 css-loader 配合使用。

file-loader: 指示webpack将所需的对象作为文件发送并返回其公用URL

url-loader: url-loader 封装了 file-loader,url-loader 提供了一个 limit 参数,小于 limit 字节的文件会被转为 DataURl,大于 limit 的还会使用 file-loader 将图片复制到指定路径。

常用插件

html-webpack-plugin

在打包的路径下自动生成一个 html 文件,并且自动引入 bundle.js 文件和 css 文件

extract-text-webpack-plugin

抽离 css 到一个指定的 css 文件中,并打包到指定的目录下

常见问题

devServer

使用webpack构建本地服务器,首先需要安装 webpack-dev-server,webpack-dev-server 是一个小型的 NodeJS Express 服务器

    devServer: {
        historyApiFallback: true,  //不跳转
        noInfo: true,    //启用 noInfo 后,诸如「启动时和每次保存之后,那些显示的 webpack 包(bundle)信息」的消息将被隐藏。错误和警告仍然会显示。
        proxy: [{       // 跨越,代理http://127.0.0.1:9000 下的/api路径
          context: ['/api'],
          target: 'http://127.0.0.1:9000',
          changeOrigin: true,  //代理服务器会在请求头中加入相应Host首部,然后目标服务器就可以根据这个首部来区别要访问的站点了
          secure: false. // 可以运行在 HTTPS 上
        }]
      }

webpack 图片的路径与打包

output.publicPath 表示资源的发布地址,当配置过该属性后,打包文件中所有通过相对路径引用的资源都会被配置的路径所替换。

问题: vue + webpack 如果使用固定的 src 可以显示图片 ,但是图片路径使用变量,可以显示标题,无法显示图片?

  <div>
    <div v-for="item in pictures">
      <img :src="item.src" /> 
      <p>{{item.title}}</p>
    </div>
  </div>
</template>

<script>
export default {
  data(){
    return{
      pictures:[
        {
          title:'标题1',
          src: '../assets/bg1.png',
        },
        {
          title:'标题2',
          src: '../assets/bg2.png'
        },
        {
          title:'标题3',
          src: '../assets/bg3.png'
        }
      ]
    }
  }
}
</script>

解决方案:

  1. express 的 static 提供静态资源服务
  2. pictures:[{title:’标题1’,src: require(‘../assets/bg1.png’)}
【前端知识之webpack】webpack的热更新 本系列主要整理前端面试中需要掌握的知识点。本节介绍webpack的热更新。 阅读详情

相关推荐

HX720/HX711 数据采集实战:从硬件配置到姿态解析(附源码详解)

本文详细解析了HX720/HX711数据采集传感器的硬件配置与姿态解析实战技巧,包括选型指南、电路设计避坑、抗干扰方案及源码实现。通过优化驱动代码和数据处理算法,提升采样率与精度,适用于动态称重和工业检测等场景。附源码详解,助力开发者快速掌握高精度数据采集技术。

weixin_30752699的博客 655

webPack解析

webpack打包原理分析

随风浅入画 989

从AP到ADSP:高通8650 AudioReach中GSL-Passthru-GPR的数据通路剖析

本文深入剖析了高通骁龙8650平台AudioReach架构中,音频数据从应用处理器(AP)到音频数字信号处理器(ADSP)的完整传输路径。重点解析了GSL(Graph Service Layer)如何封装命令,并通过Passthru驱动与GPR(Generic Packet Router)协同工作,实现跨处理器的高效、异步数据交换,揭示了现代手机复杂音频系统背后的核心通信机制。

cherry的博客 536

webpack拆包,分开第三库

我report打包的时候,查看webpack-bundle-analyzer图,发现vendor包里的element-ui占比很大,占了500多kb,所以我准备把element-ui从vendor里分离出来,增加一个chunks属性,从vendor包中提取名称有element-ui的包。需要回到配置文件,修改new HtmlWebpackPlugin下面的配置,增加一个chunks的属性,请注意它的顺序,不然发上去还是报错。然后再发上去,测试环境就不报错了,一切正常。

YU_jiangyu的博客 1471

MPU6050 vs BMX055 vs ICM20602:如何为你的项目选择最佳陀螺仪(附实测数据对比)

本文深度对比了MPU6050、BMX055和ICM20602三款主流六轴IMU传感器的核心性能。通过实测数据,分析了它们在精度、噪声、温漂、接口速度及资源占用上的差异,并提供了从项目需求出发的选型指南,帮助开发者根据预算、精度要求和处理器性能选择最合适的陀螺仪与加速度计组合。

h0i1j2k3l的博客 969

VS2019集成AddressSanitizer:C++内存错误检测实战指南

在C++开发中,内存管理是核心挑战之一,涉及堆、栈和全局变量的分配与释放。其原理在于程序运行时对内存地址的访问必须严格遵循分配边界和生命周期规则,否则会导致缓冲区溢出、释放后使用等严重错误。这类问题的技术价值在于直接影响程序的稳定性、安全性和性能,是高质量软件必须攻克的基础难题。应用场景广泛,从嵌入式系统到大型服务器软件,都需要可靠的内存错误检测机制。AddressSanitizer(ASan)作为一种编译时插桩技术,通过影子内存和运行时检查,能精准定位堆缓冲区溢出、释放后使用等隐蔽错误。本文以Visual

weixin_34356310的博客 279

webcrack实战教程:3步快速解包webpack和browserify捆绑包

webcrack是一款强大的JavaScript解包工具,能够轻松处理obfuscator.io混淆代码,对JavaScript进行反混淆、反压缩以及解包webpack和browserify捆绑包。本文将为新手用户提供一份简单易懂的实战指南,帮助你快速掌握使用webcrack解包捆绑包的方法。 ## 📋 准备工作:安装webcrack 在开始解包操作之前,首先需要安装webcrack。你可以

gitblog_00270的博客 692

Paraview:Python Calculator Filter

python calculator过滤器 from paraview.simple import * connection = servermanager.Connect('localhost',11111) er = servermanager.sources.EnSightreader(CaseFileName='/.../data.case') er.PointArrays = ['x_velocity','1','y_velocity','1','z_velocity','1','cp','1']

haimianjie2012的专栏 3495

webpack打包原理解析

3、了解webapck编译文件的编译思路,找到当前方法的对应的原方法,将找到的方法,全部干掉,再引入all.min.js文件,能跑得通,不会有bug就OK了。可能造成的问题,现有文件中,有可能有没有被调用的方法遗留。1、找到二维码生成插件的官方编译库 all.min .js,以这个文件为参考,找到项目中所有的JS中,有二维码的方法,统一放到这个文件中,再进行替换?输入不同资源,比如:html、css、js、img、font文件等,然后将它们输出浏览器可以正常解析的文件。这个方法的问题在于,如何初始化引入?

weixin_43706224的博客 318

(代码可运行)半导体器件和工艺模拟 使用Silvaco设计构建NMOS并提取各项工艺及器件参数

win10。

qq_20388971的博客 109

工业缺陷检测:基于深度学习的表面缺陷分类

工业缺陷检测:基于深度学习的表面缺陷分类 ,人工智能,计算机视觉,大模型,AI,在现代工业生产中,产品质量直接影响企业的竞争力和声誉,工业缺陷检测作为质量把控的重要环节,其技术的发展至关重要。传统的人工检测方式效率低、成本高且易受主观因素影响,难以满足大规模、高精度的生产需求。随着深度学习技术的蓬勃发展,基于深度学习的工业表面缺陷分类方法凭借强大的特征提取和模式识别能力,成为解决工业缺陷检测难题的有效途径。本文将深入探讨基于深度学习的工业表面缺陷分类技术,结合详细的代码示例和概念解析。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 3万+

详解webpack拆包—splitChunks.chunks

今天主要讲解一下webpack的拆包逻辑,现在的webpack实际上有一套默认的拆包逻辑,这个默认配置对绝大多数用户来说非常友好。webpack新的 chunk 可以被共享,或者模块来自于文件夹新的 chunk 体积大于 20kb(在进行 min+gz 之前的体积)当按需加载 chunks 时,并行请求的最大数量小于或等于 30当加载初始化页面时,并发请求的最大数量小于或等于 30也就是说他的默认配置是这样的:今天我们主要来学习一下chunks这个属性.

weixin_47588164的博客 1624

STM32实战开发(110):基于STM32的智能地震监测系统开发

地震监测系统是自然灾害预警体系中至关重要的一部分。随着地震灾害的频发和对自然灾害预测精度要求的提高,智能地震监测系统逐渐成为研究的热点。STM32作为一款高性能的微控制器,凭借其强大的处理能力和丰富的外设接口,在地震监测领域中得到了广泛应用。本篇文章将详细介绍如何使用STM32实现一个智能地震监测系统的开发过程,涵盖硬件设计、软件编程、系统实现及相关代码。通过集成加速度传感器、地震数据采集、实时数据处理和无线数据传输功能,我们可以设计一个高效、稳定的智能地震监测系统。

2201_76125393的博客 710

Webpack5 踩坑之(html-webpack-plugin)

2021 开工第一天就给我个大大的惊喜。 ERROR in Error: The loader "/home/project/vue3-demo/node_modules/html-webpack-plugin/lib/loader.js!/home/project/vue3-demo/public/index.html" didn't return html. - index.js:339 HtmlWebpackPlugin.evaluateCompilationResult [vu

vv_bug 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【webpack】webpack-dev-server的安装

爱爱爱

闫小样丶的博客 3818

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Webpack——Webpack简介

Webpack简介、安装、打包

码说芯语的博客 2258

关于 webpack 总结

关于 webpack 在windows安装总结 目录 关于 webpack 在windows安装总结 1、安装webpack 查看webpack的可用版本号 npm view webpack versions 安装指定版本的webpack npm install webpack@4.10.1 -g 2、安装webpack-cli 查看webp...

csp123258的专栏 1688

[webpack] webpack 从入门到 所有

官网地址 webpack中文 以server.js为接入点: 'use strict'; require('core-js/fn/object/assign'); const webpack = require('webpack'); const WebpackDevServer = require('webpack-dev-server'); const config = requir...

haliofwu的专栏 2348

【Webpack 进阶】Webpack 打包后的代码是怎样的?

webpack是我们现阶段要掌握的重要的打包工具之一,我们知道webpack会递归的构建依赖关系图,其中包含应用程序的每个模块,然后将这些模块打包成一个或者多个bundle。 那么webpack打包后的代码是怎样的呢?是怎么将各个bundle连接在一起的?模块与模块之间的关系是怎么处理的?动态import()的时候又是怎样的呢? 本文让我们一步步来揭开webpack打包后代码的神秘面纱 准备工作 创建一个文件,并初始化 mkdir learn-webpack-out...

wangxi06的专栏 1347

webpack4升级到webpack5经验总结

最近接手了公司内部webpack相关的依赖包,于是打算优化一波。考虑到webpack5已经正式发布近两年,跟webpack相关的依赖包应该适配的差不多了,于是打算先把webpack4升级到webpack5,然后基于webpack5再进行优化。 升级前用的是 "webpack": "^4.42.1" ,升级后用的是 "webpack": "^5.72.1" 。 笔者采用的升级webpack的方法是先一键升级所有的依赖包,然后一个一个地去解决运行过程中的报错。 首先,全局安装npm-check-updates:

m0_37937502的博客 1万+

webpack4 升级至 webpack5 过程总结

本文章记录本次从webpack4框架升级为webpack5之后衍生出来的所有更改 框架主体为 zzy-javascript-frame(地址在文末) 此项目为自行开发构建,包含原 webpack4 版本 和升级后的 webpack5 版本 框架技术栈为 react、react-router、HOOK、react-redux(已安装,未使用)、antd-mobile(UI框架) 插件相关改动 ...

渣渣宇的博客 8892

什么是 Webpack? Webpack详解

Webpack 是一个打包模块化 javascript 的工具,在 Webpack 里一切文件皆模块,通过 loader 转换文件,通过 plugin 注入钩子,最后输出由多个模块组合成的文件,Webpack 专注构建 模块化项目,Webpack 可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript 模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript 等),并将其打包为合适的格式以供浏览器使用

鲨鱼不喝水的博客 2616

webpack webpack-cli

ebpack 是一个静态的模块化打包工具,为现代的JavaScript应用程序服务打包 bundler:webpack可以帮助我们进行打包,所以它是一个打包工具静态的static:将代码打包成最终的静态资源(部署到静态服务器)模块化module:webpack默认支持各种模块化开发,ES Module、CommonJS、AMD等现代modern:前端开发的各种问题,催生了webpack的出现webpack 从 4.0 版本开始,在安装时,就必须要安装这两个东西。

qq_30436011的博客 4030

webpack

webpack

无名小小卒的博客 5980

史上最全webpack带你深入了解webpack

史上最全webpack带你深入了解webpack

m0_62371650的博客 2470

【webpack浅析】webpack之深入浅出

本文主要讲解两个方面。分别是 深入了解webpack 和 从0开始配置vue项目。 一:深入了解webpack 1、webpack干什么的 总的来说,webpack是一个资源综合处理中心。这名字起的是不是前无古人,是不是高端大气?!这里我要利用高深的比喻修辞手法和配图(见配图 1.1)大概齐的解释一下webpack。webpack其实可以看做是一个半自动(之所以是半自动,是需要我们自己进行很多的配置)工厂流水线。所有的前端资源,比如 图片,样式,js文件等等,一个接一个排好队伍,整齐划一的进入流...

jmszl1991的博客 4487
上一篇: 关于 setTimeout 和 setInterval 的理解
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值