前端工程化 · 中级 03
两个入口都同步引入同一大型工具模块,希望 webpack 5 只打包一份共享代码,首要应配置什么?
不要求把该模块外置为 CDN 资源,也不希望依赖运行时全局变量。
前端工程化中级题库第 3 组,共 12 张卡片。
前端工程化 · 中级 03
不要求把该模块外置为 CDN 资源,也不希望依赖运行时全局变量。
splitChunks 根据模块复用情况、体积阈值和缓存组等条件,把重复依赖提取为可由多个入口引用的共享 chunk,从而避免相同模块代码进入多个入口产物。
Tree Shaking 依赖静态模块关系来标记导出的使用情况,并结合副作用信息与压缩阶段删除不可达代码。
Babel 可以把 class 语法与实例字段转换为旧语法形式,但必须保持源程序的可观察语义。
是一个基于浏览器原生ES模块导入的开发服务器,在开发环境下,利用浏览器去解析import,在服务器端按需编译返回,完全跳过了打包这个概念,服务器随启随用。
babel-loader 的 cacheDirectory 会缓存转换结果,后续构建遇到输入和相关配置均未变化的文件时可复用缓存,从而降低重复解析与代码…
Polyfill 通常依靠旧环境已有能力实现较新的 API,但 Proxy 改变了属性访问、赋值、枚举等底层对象操作的拦截语义。
在独立运行时代码和稳定模块标识的前提下,共享模块会进入公共 chunk,修改其实现首先改变该 chunk 的内容及 contenthash。
Webpack 5 的 output.publicPath 为 auto 时,运行时会尝试根据当前脚本地址等环境信息自动推导资源基础路径。
webpack 5 插件通过 apply 方法接入 Compiler 或 Compilation 的钩子。
Vite 开发服务器利用浏览器原生 ES module,以请求驱动的方式转换和提供源码,因此启动时通常无需先把整个应用打成单一 bundle。
- 体积更小(Tree Shaking、压缩、合并)加载更快 - 编译高级语言语法(TS、ES6+、模块化、SCSS) - 兼容性和错误检查(polyf…
对tree-shaking的了解