Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

高稳定性需求就用原生

  看到一些前端库或框架的代码使用预处理来生成最终代码,我觉得这会是个坑。比如一些库在编写的使用完全使用 ES6,然后用 babel 生成最终代码,但除非是特别了解 babel,否则根本不知道最终会生产一坨什么奇奇怪怪的代码。而且还可能把预处理工具的风险导入项目中。
  我的建议是,业务代码中可以随便用预处理没关系,甚至开 babel stage 0 我也不会阻止。但是作为一个公用库就应该确老老实实地用浏览器兼容的代码来写。
  作为一个公用库,它可能会跑在很多项目中。而这些项目可能会被跑在一些奇奇怪怪的环境中(比如访问 localStorage 会抛异常之类的奇葩 Web View,我之前就被这个坑过)。并不是只要代码规范就不会出问题,很多时候就偏偏是规范的代码容易出问题。
  如果是一般业务级的代码,它的风险承受能力比较强,就算出了 Bug,只要及时 Hotfix 就行。而公用库的代码一旦出了 Bug,会导致所有依赖它的业务都挂掉。而且这种框架级的 Bug 非常难排查,业务开发很难在第一时间找到出错的原因。当一个项目使用预处理时,预处理器本身的 Bug 风险就会被加到项目中。所以公用库级别的代码不应该使用预处理。反正我就遇到过基于 babel 的项目在升了一个 babel 版本后挂掉的情况。
  另外,公用库这种东西通常很在意代码量。预处理只是让开发者写代码的时候爽,但最终生成的代码可能会是一大坨奇奇怪怪的东西。比如 babel 中涉及迭代器的语句都会被装换成一坨奇奇怪怪的代码,还有 Map、Set 的黑科技实,以及过度使用 let 造成一堆不必要的匿名函数等。
  以前常说「有高性能需求就用原生」,其实是同样的道理。公用库当然是高性能需求的(如果真有性能需求的话),而且是高稳定性需求的。所以我们同样可以用一句「有高稳定性需求就用原生」来总结。
网名:
54.144.24.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^