构建Webpack知识体系 | 青训营

82 阅读2分钟

构建Webpack知识体系

学习原因:

1.     理解前端工程化概念、工具,目标

2.     可以成为核心竞争力

3.     高阶前端必经之路

 

主要内容:

——什么是Webpack

——webpack打包核心流程

       ——实例:

       ——Entry=>Depedencies Lookup=>Transform =>Bundle => Output

       ——关键配置项介绍

——loader组件

——plugin组件

——如何学习Webpack

       ——入门级:学会扩展webpack

       ——进阶:学会扩展webpack

       ——大师:源码级理解webpack打包编译原理

 

目标:

1.     理解Webpack基本用法

2.     通过介绍Webpack功能、Loader与Plugin组件设计,建立一个知识体系

 

 

什么是Webpack?

前端由很多文件组成,文件之间可以手动管理,但有以下缺点:

1.     依赖手工,有多个文件时,过程繁琐

2.     开发与生产环境一致,难以接入新特性,南接入工具

3.     JS、图片、CSS资源管理模型不一致

 

因此出现的工程化工具:

Gul(Golang)\

  • 简单灵活的语法,类似C语言但加入了垃圾回收功能
  • 编译速度快,编译后的可执行文件很小
  • 内置并发支持,通过goroutine和channel实现轻量级线程
  • 开源免费,并且有Google长期维护
  • 良好的文档和社区支持

Golang适用于以下场景:

  • 网络服务/API开发

  • 命令行工具和系统工具开发

  • 并发性能要求较高的场景

  • 需要编译速度和部署效率的服务器端应用 ViteVite的主要特性包括:

  • 超快的热重载速度,平均1-2秒重新构建

  • 无需配置,直接支持ES模块化

  • 轻量快速,不需要预构建步骤

  • 天然支持TypeScript和JSX

  • 支持Vue和React框架

Vite使用了原生ES模块化,并通过模块映射在开发环境下实现热重载。它不会像Webpack那样打包输出整体文件,而是直接使用原生ESM模块化开发。

适用于以下情况使用Vite:

  • 需要快速开发体验的前端项目

  • 重构中小型项目

  • 使用Vue或React开发SPA应用

  • 需要快速上手的脚手架项目
    rollup.jsRollup的主要特性:

  • 打包速度快,体积小。支持Treeshaking去除未引用代码

  • 支持ES6模块化和CommonJS模块

  • 可以打包成多种格式,如IIFE,UMD,ESM,CJS等

  • 丰富的插件生态系统

  • 可以整合到其他构建系统中

Rollup适用于:

  • 开发JavaScript库时打包
  • 构建需要模块化的前端项目
  • 需要优化后的包体积
  • 需要输出不同模块规范的代码

 

Bundle:

多份资源文件打包成一个bundle

只是Babel、Eslint、TS、CoffeScript、Less、Sass

支持模块化处理css、图片等资源文件

支持HMR+开发服务器

支持持续坚挺、持续构建

支持代码分离

支持Tree_shaking

支持Sourcemap