We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
rollup 使用 esm 作为构建基础
webpack 使用 cjs 作为构建基础(需要注入大量的辅助性代码,冗余的多)
因此 webpack 需要引入大量的代码来实现 require,modules.exports,export,让浏览器可以兼容cjs和esm语法,所以 webpack 打包时间会更长,包的大小会更大
webpack 的 output.module 还处于实验阶段
因为 webpack 比 rollup 早出 2 年,诞生在 esm 标准出来前,commonjs出来后,当时的浏览器只能通过 script 标签加载模块
script标签加载代码是没有作用域的,只能在代码内 用iife的方式 实现作用域效果
这就是webpack打包出来的代码 大结构都是iife的原因
并且每个模块都要装到function里面,才能保证互相之间作用域不干扰 这就是为什么 webpack打包的代码为什么乍看会感觉乱,找不到自己写的代码的真正原因
关于webpack的代码注入问题,是因为浏览器不支持cjs,所以webpack要去自己实现require和module.exports方法(才有很多注入)(webpack自己实现polyfill)
rollup诞生于esm标准出来后,就是针对esm设计的,也没有历史包袱,所以可以做到真正的“打包”(精简,无额外注入)
chrome 63 支持 esm (2017.5)
rollup 的 plugin 相当于 webpack 的 loader + plugin
webpack 有 HMR 模块热替换,rollup 没有,这也是 webpack 更适合开发应用的原因之一,能够更好的开发调试
为什么 Rollup 没有 Hot Module Replacement
如上文总结:
The text was updated successfully, but these errors were encountered:
No branches or pull requests
各维度对比
构建基础
rollup 使用 esm 作为构建基础
webpack 使用 cjs 作为构建基础(需要注入大量的辅助性代码,冗余的多)
因此 webpack 需要引入大量的代码来实现 require,modules.exports,export,让浏览器可以兼容cjs和esm语法,所以 webpack 打包时间会更长,包的大小会更大
webpack 的 output.module 还处于实验阶段
因为 webpack 比 rollup 早出 2 年,诞生在 esm 标准出来前,commonjs出来后,当时的浏览器只能通过 script 标签加载模块
script标签加载代码是没有作用域的,只能在代码内 用iife的方式 实现作用域效果
这就是webpack打包出来的代码 大结构都是iife的原因
并且每个模块都要装到function里面,才能保证互相之间作用域不干扰
这就是为什么 webpack打包的代码为什么乍看会感觉乱,找不到自己写的代码的真正原因
关于webpack的代码注入问题,是因为浏览器不支持cjs,所以webpack要去自己实现require和module.exports方法(才有很多注入)(webpack自己实现polyfill)
rollup诞生于esm标准出来后,就是针对esm设计的,也没有历史包袱,所以可以做到真正的“打包”(精简,无额外注入)
chrome 63 支持 esm (2017.5)
插件
rollup 的 plugin 相当于 webpack 的 loader + plugin
tree-shaking
开发
webpack 有 HMR 模块热替换,rollup 没有,这也是 webpack 更适合开发应用的原因之一,能够更好的开发调试
为什么 Rollup 没有 Hot Module Replacement
为什么说 webpack 更适合应用开发,rollup 更适合库开发
如上文总结:
参考
The text was updated successfully, but these errors were encountered: