Skip to content
New issue

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

库开发需要考虑 polyfill 吗? #5

Open
Jarweb opened this issue May 1, 2020 · 0 comments
Open

库开发需要考虑 polyfill 吗? #5

Jarweb opened this issue May 1, 2020 · 0 comments

Comments

@Jarweb
Copy link
Owner

Jarweb commented May 1, 2020

库开发需要考虑 polyfill 吗?

  • 为什么会有这样的疑问?
    • 因为现在大部分的应用默认是不对 node_modules 进行 babel 转换的。所以当库没有进行 polyfill,而应用又没有对 node_modules 进行 babel 转换,这就有可能出现浏览器兼容性错误。
    • 库的开发者一般都会为了保持库的性能和减小体积,一般不会做 polyfill。
    • 假设每个库都做了 polyfill,这可能会导致有 polyfill 重复。同时还可能存在 polyfill 命名冲突问题。而且库的 polyfill 也不一定满足应用的需求。
    • 但如果应用对 node_modules 进行 babel 转换,可能会出现因重复转换而出现错误。同时也会造成打包构建时间变长。
  • 所以我认为的结论是?
    • 现代前端应用应该进行构建转换编译
      • 代码合并、混淆、压缩、tree shaking 都需要经过构建工具,所以这个步骤不应该少
      • 前端构建还能促进前端往着工程化、标准化、专业化发展
      • 如果还像以前一样在html script 里编写代码,这不利于前端发展,会出现以前前端模块混乱、命名冲突、难维护等问题
    • 应用程序应该转换 node_modules 的代码,这可能会是的构建时间变长。但长期来看,能促进构建工具的发展。同时能整体控制应用的 polyfill,使得 polyfill 是精简的、符合应用需求的。
    • 库应该以聚焦在精简、高性能的程序开发。库方法导出时还需要考虑是否能 tree shaking。
    • 构建工具需要聚焦提升构建速度、去除库的 polyfill、针对已转换的代码能有好的处理。
  • 详情可以看这里的讨论 Advice for library authors who use polyfills? w3ctag/polyfills#6
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant