8

生活在 DOM 树上

 3 years ago
source link: https://zhuanlan.zhihu.com/p/261056969
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
生活在 DOM 树上

生活在 DOM 树上

雪碧 | github.com/doodlewind

现代前端以 Atwood 的一句「凡是能用 JavaScript 实现的,最终都会用 JavaScript 实现」为嚆矢。滥觞于公司与社区传统的鄙视链正失去它们的借鉴意义。但面对看似无垠的 node_modules,我想循 Donald Knuth「过早优化乃万恶之源」的敏捷好过过早地振翮。

我们怀揣优越感的灵魂天然被赋予对纯函数的追求,不屑于古旧 IE 的约束,钟情于强类型的芬芳。但当这种期望流于对过去观念不假思索的批判,乃至走向大道至简与类型体操时,便值得警惕了。比 for 循环的优雅、精妙向来不能为 forEach 的性能张本。而纵然 JavaScript 已有鸿蒙一等公民的地位,仍不能自恃已在浪潮之巅立下了天下第一编程语言的沉锚。

「640KB 内存对大多数人都够用了。」Bill Gates 之言可谓切中了肯綮。程序的副作用是不可祓除的,而我们的无脑 setState 也无时无刻不在消耗硬件。逻辑与状态暂且被我们把握为一堆薄脊的组件客体,一定程度上是因为我们尚缺乏体验与阅历去支撑自己手写汇编。而这种偏见的傲慢更远在精通 C++ 的傲慢之上。

在孜孜矻矻以求极致优化的道路上,对屎山的期望本就是在与领导与产品撕逼中塑型的动态过程。而我们的底料便是对不同编程语言、不同技术栈的觉感与体认。生活在 DOM 树上的 Dan Abramov 为 Facebook 改 bug,兴修 Redux,又维系自己的全家桶。他的编程观念是函数式的,也是折腾的。倘若我们对局部状态借 Purity 之言「祓魅」后,又对不断膨胀的全局状态进行「赋魅」,那么在丢失优化粒度的同时,未尝也不是丢了开发效率。

毫无疑问,从优雅与纯净角度一觇的前端工程有偏狭过时的成分。但我们所应摒弃的不是对此的批判,而是其批判的廉价,是对其批判投诚中的反智倾向。在 Yin Wang 的观念中,如果在讨论 P vs NP 问题之前,略过了写出 40 行 CPS 变换的过程,那 P10 面试官「最伟大的计算机科学家」之名洵不能成立。何况当最强 P6 Dead Moon 顺从领导的意愿,选择写迎合业务的增删改查,将他八年的 Node.js 生涯降格为自黑素材时,我们没资格斥之以媚俗。

框架上的阵营终归只是理念上的区分,在实践场域的分野也未必明晰。譬如当我们追寻大规模前端工程时,在途中涉足类型系统的玉墀,这究竟是伴随着 ES4 的泯灭还是 TypeScript 的达成?在我们塑造工具的同时,工具也在束缚我们。既不可否认工具的务实性与局限性,又要承认自己的暴论有轻狂的失真,不妨让 Show Code 走在 Cheap Talk 之前。用不被禁锢的头脑去体味 Anders HejlsbergFabrice Bellard 的大海与风帆,并效 Linus Torvalds 之行,对无法言说之事竖起中指。

用在 DOM 树上的编程范式体现屎山的优越性,保持皮实却又不得不拘泥于所谓「业务至上」的奋斗逼形象,这便是 Jack Ma 为我们提供的理想职业规划。生活在树上——始终热爱福报——升上 P7。

发布于 10-02

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK