首页 > 其他分享 >webpack笔记

webpack笔记

时间:2024-03-08 20:55:05浏览次数:29  
标签:babel 笔记 loader webpack 引入 JS 打包

babel和webpack的区别 babel JS编译工具,不关心模块化 webpack 打包构建工具(模块话 / 构建工具),配合loader plugin的集合 babel 不处理模块化,需要配合 webpack一起使用   webpack5主要是内部效率的优化,使用没有区别 webpack本身支持模块化 import   babel-polyfill 会污染全局环境 window.Promise = ... 如果是做一个 系统没问题,但是 库的话就有问题  使用babel-runtime (变成一个变量) var _Promise = require("@babel/runtime-corejs2/core-js/promise.js");   如何按需引用 “useBuiltIns”: "usage", "corejs": 3   为什么要打包构建 体积更小(Tree-Shaking、压缩、合并),加载更快 编译高级语言或语法(TS,ES6+,模块化,scss ) 兼容性和错误检查( Polyfill、postcss、eslint )   ES6 module:静态引入,编译时引入,条件中引入 报错 commonJs:动态引入,执行时引用,可以在条件判断中使用 所以只有ES6 才能静态分析,实现tree-shaking   presets(常用plugins的集合)和 plugins polyfill的集合 core-js / regenerator 已经被弃用了,直接使用 core-js @babel/preset-env 只解析 ES6的语法(箭头函数,函数屌调用),但是像 promise / includes 函数 都是没有的,需要 core-js   1.多入口 多个input入口,output 改为【name】 htmlWebapckPlugin 中增加 chunks:[input入口名称] 2.抽离CSS文件 style-loader 直接将CSS打包进JS中了,然后塞到style标签中    生产中 style-loader改为 min-css-extract-plugin

module / chunk / bundle的区别 module - 各个源码文件,webpack中一切皆是模块 chunk - 多个模块合并成的,如 entry / split chunk / import() bundle - 最终的输出文件   为什么proxy 不能被 polyfill class 可以使用 function模拟,promise 可以用callback 模拟 但是 proxy 用 defineProperty 无法模拟   loader和plugin的区别 loader 模块转化器 less => css。 plugin 扩展插件 如 HtmlWebpackPlugin。增加新功能   1.优化打包效率 - 开发体验和效率 cacheDirectory: true缓存让第二次打包构建速度更快 use: ‘babel-loader?cacheDirectory’   2.ignorePlugin 避免引用无用模块,比如处理 moment 默认引入 所有内容

自己去手动引入 中文 语言包

3.noParse: 区别在于 这个是直接打包

 

ignore 直接不引入,代码中需要自己去引入 noParse引入,但是不打包   4.happyPack 多进程打包 JS单线程,开启多进程打包,提高构建速度,特别是多核CPU   5.parallelUglify Plugin 多进程压缩JS, 生产环境即可 webpack内置了 uglify 工具压缩JS,单进程的 如果项目较小,没必要使用,开启多进程可能反而变慢(进程开销)

 

热更新: 状态不会丢失,页面不刷新,而自动刷新,状态会丢失 hot需要自己去检测哪些模块开启热更新     统一、高效的开发环境 统一的构建流程和产出标准 集成公司构建规范(提测、上线等)   常用 loader 和plugin

标签:babel,笔记,loader,webpack,引入,JS,打包
From: https://www.cnblogs.com/escapist/p/18061844

相关文章

  • 3/8 训练笔记
    闲话排查许久后发现:intvis[20000010]->aclonglongvis[20000010]->mle并且开了dill所以查了挺久。一个诡异的bug是:...;debug(f,g)->ac...;->wa最后发现vectorresize小了。并且不知道为什么debug一下就好了。P3702[SDOI2017]序列计数题解考虑......
  • 【前端Vue】社交信息头条项目完整笔记第1篇:一、项目初始化【附代码文档】
    社交媒体-信息头条项目完整开发笔记完整教程(附代码资料)主要内容讲述:一、项目初始化使用VueCLI创建项目,加入Git版本管理,调整初始目录结构,导入图标素材。二、登录注册准备,实现基本登录功能,登录状态提示,表单验证。三、个人中心,四、首页—文章列表TabBar处理,页面布局,处......
  • 笔记(七):事务底层与高可用原理
    日志是mysql数据库的重要组成部分,记录着数据库运行期间各种状态信息。mysql日志主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。尤为重要的是二进制日志(binlog)和事务日志(包括redolog和undolog)。MySQL在事务实现机制上采用的是WAL(Wri......
  • C语言0基础入门游戏辅助开发—学习笔记02
    C语言0基础入门游戏辅助开发—学习笔记02PS:这里仅作为本人学习过程中的随笔。数据类型、sizeof运算符数据类型数据类型是在关键字内的,或者说关键字包含数据类型。数据类型有哪些程序中的代码和数据都是以二进制的形式存储的,对计算机系统和硬件而言,数据类型的概念不存在,这......
  • 笔记(五):MySQL之事务概述
    一、什么是事务事务(Transaction):访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。当在数据库中更改数据成功时,在事务中更改的数据便会提交,不再改变。否则,事务就取消或者回滚,更改无效。二、事务的四大特性1、原子性(Atomicity)原子性是指事务包含的所有操作要么......
  • 24电磁学A笔记
    目前截至3.8第零章数学基础......
  • (笔记)Vivado操作之时序约束介绍
     一、前言      任何一个FPGA工程都需要设置相关的时序约束,下面将介绍Vivado中如何进行时序约束操作以及各种约束的使用方法。 二、时序约束界面        在一个工程运行到IMPLEMENTATION后,进入到左侧的FlowNavigator窗口,点击IMPLEMENTION下的EditConstraint......
  • Java学习笔记——第九天
    综合项目:ATM项目需求拥有登陆界面,在登陆界面有开户、功能和退出系统功能。在开户时,要求输入姓名、性别、密码和每次取款限额,输入密码时要再输入一次以确认密码输入正确,之后自动生成不重复的8位数字卡号。在登陆时,若系统中没有账户,要能提示用户先去开户;若输入的账户不存在或密......
  • Verilog的学习教程与笔记(LZQ自用):
    verilog的学习教程与笔记(LZQ自用):第1章Verilog的历史视频讲解:https://www.bilibili.com/video/BV14K4y1u7kH?p=3&vd_source=da31a9aa66fbe4d6b904e621d9943c75​ 硬件描述语言,英文全称为HardwareDescriptionLanguage,简称HDL,HDL是一种用形式化方法来描述数字电路和数字......
  • Pytorch学习笔记
    PyTorch学习教程1-安装PyTorchPyTorch安装官网选择对应的版本进行下载链接的复制(注意CUDA版本和DriverVersion版本的一致性)注意conda需要换源换源后直接使用下面的指令。condainstallpytorchtorchvisiontorchaudiopytorch-cuda=11.8-cpytorch-cnvidia以下是注......