标签: Webpack

13 个内容

笔记(12)

JavaScript模块化从CommonJS到ES Modules演进,核心价值在于隔离、依赖管理、复用和优化。CommonJS同步加载,AMD异步,UMD兼容。ES Modules静态分析,支持Tree Shaking。现代实践如Bundleless架构、模块联邦等。性能优化策略包括代码分割、预加载和持久化缓存。未来趋势包括Import Maps和Web Bundles。

Elliot Yang·
102 浏览

Web Worker是浏览器提供的轻量级线程机制,解决JavaScript单线程阻塞问题。通过结构化克隆算法通信,支持模块化和Webpack集成。应用于图像处理、机器学习等,需注意内存管理和线程安全。WebAssembly和新兴API如WebGPU增强了Worker能力。架构设计需考虑任务拆分和容错机制。

Elliot Yang·
164 浏览

Webpack 5仍是主流构建工具,支持模块化、生态成熟、可扩展。优化包括:`output.clean`替代插件清理资源、TS类型声明优化、xxHash64算法提升哈希速度、魔法注释增强模块加载。还讨论了Loader/Plugin开发、浏览器环境处理、资源模块化、未来趋势(Rspack/Turbopack)、争议解决及企业级实践案例。

Elliot Yang·
183 浏览

本文深入解析了在 Webpack 中实现类似 Vite 的 `module?url` 机制,通过 Asset Modules 和自定义 Loader 两种方案,解决资源 URL 精确控制的需求。探讨了工程化实践中的路径解析、缓存破坏、多环境适配,并针对 Web Worker 和 WASM 模块提出优化策略。同时,对性能、安全进行考量,并展望了未来 Webpack 生态和浏览器原生能力的发展方向。

Elliot Yang·
101 浏览

升级 Next.js 14.0.4 报错Edge Function体积超限,源于Webpack配置变更导致SSR:false组件分割失败。解决方案包括配置`esm: true`强制ESM、升级Next.js至14.1.0+。工程优化需关注代码分割、资源压缩、第三方库管理和构建配置。

Elliot Yang·
101 浏览

本文深入解析Webpack Loader开发,涵盖基础架构、高级功能(emitFile, callback)、Pitching Loader及工业级实践。强调测试、性能优化(缓存、并行、AST)、WASM加速及风险控制。案例包括国际化和CSS模块化。Loader正向智能编译中间件演进。

Elliot Yang·
84 浏览

本文讨论了 Tree-Shaking 与模块导入方式的影响。使用 `import * as api from 'api'` 整体导入模块时,若直接调用 `api.get1()` 不影响 Tree-Shaking;但若使用属性名表达式如 `api[get + '1']()`,则会导致 Tree-Shaking 失效。文章还提供了相关知识点和学习资料链接。

Elliot Yang·
107 浏览

`code-inspector-plugin` 是一款提升开发效率的工具,支持多种构建工具。它能通过点击页面DOM,自动打开IDE并定位到相应的源代码位置。

Elliot Yang·
120 浏览

本文介绍了 webpack 中自定义 loader 的方法。loader 本质是导出函数的 JavaScript 模块,用于转换资源文件。文章讲解了`this.emitFile`、`this.callback` 的使用,以及Pitching Loader 的概念,并说明如何在 loaders 之间共享 Data,最后提到了 loader 的测试方法。

Elliot Yang·
95 浏览

Next.js 14.0.4+ Edge Function 打包体积超限问题,源于pages目录SSR禁用组件未分离。解决方案:1) 使用next/dynamic引入大体积组件并禁用SSR;2) 修改next.config.js中webpack配置,确保next-swc-loader的esm选项为true (14.1.0后配置方式变更)。

Elliot Yang·
145 浏览

Webpack 默认不支持 Vite 的 `module?url` 语法,该语法用于获取模块的 URL。文章提出了两种解决方案:一是使用 `file-loader` 或 `asset/resource`;二是编写自定义 Webpack loader 处理特定请求,返回模块 URL。并提供了一个自定义 loader 的示例代码。

Elliot Yang·
92 浏览

Web Worker解决JS单线程阻塞UI问题,通过后台线程执行代码实现并行。Comlink库简化主线程与Worker通信,实现函数代理、异步处理和类型安全。worker-loader集成Webpack管理Worker代码,ESM worker支持模块化,提升代码组织和维护性。

Elliot Yang·
126 浏览

动态(1)