我们需要工程化什么?

93 阅读3分钟

不应妖魔化工程化

人生最终的价值在于觉醒和思考的能力,而不只在于生存。【亚里士多德】

严格意义上没有前端工程化这个东西,其本质是从软件工程化的思想中东拼西凑,为了解决前端工程建设过程中遇到的问题。

换句话说,工程化在每个不同的项目或者团队中,应用落地的方案各不相同,甚至还会大相径庭。

切入角度不同,看到事物的层面就不相同。

我和很多同事讨论一些工程化的概念,马上就把各个大厂的相关技术文档或者社区文档贴出来,这完全是脱离了事物的本质。

工程化这个事情并不复杂,绝不能一味右倾畏惧它。

工程化核心

工具的制造和使用只有在人类的劳动过程中才是一个固有的、不可或缺的、稳定的因素,因而构成了与其他动物区别的本质特征。【恩格斯】

我们使用工具的原因就是,借助其他力量帮助自己解决问题。

但唯一解决不了的问题,就是人自身的问题。现代工程建设中,不可避免的会遇到各种问题,其中主要的问题便是参与人的不可控性。

此背景下,工程化作为一种思想工具,用来帮我们解决其中关于人的大部分问题。

那么,作为工具就有对应待解决的问题,工程化解决的就是多人协作下的能效问题

前端工程化

工作的目的便是获得空闲。【亚里士多德】

既然是解决问题,我们就需要搞清楚,问题会在何时出现在什么阶段,这个阶段对应什么样的角色

作为软件开发者,目标都是交付产品,用于满足需求。那么对应就会有基于前端开发者的整个开发生命周期。

image.png

在这个循环往复的周期中,如何提升我们的能效,达到我们的工程化目的呢?

我们以IT的CSB系统开发场景来看看,每个过程需要做什么事情。

首先前提是:一台超贵的Mac系统环境变量及全局运行库一个具备丰富插件的IDE

image.png

对于整个周期,我们能看到可以提效的地方:

开发

丰富的可复用的业务组件、完备的工具插件、脚手架辅助工具、开发辅助插件、同语言下无框架区别限制

测试

高覆盖测试用例、在线调试工具

构建

统一的编译工具及配置

部署

一键全环境部署、运行时热更新

监控

运行时异常捕获,模块级的运营数据

那么根据上面可以提效的地方,我们就可以提出很多的工程化方案,比如:通用工具库、业务组件库、CSB脚手架、JEST测试库等等。

回过头来,我们发现,整个工程化的过程其实就是实现一条高效的闭环链路:

快速开发 -> 实时调试 -> 热更新 -> 提早发现异常 -> 快速开发 -> ...

整个核心就是一个字:快!

  • 更快的开发稳定的业务模块
  • 更快的更新到使用端
  • 更快的发现问题并继续开发

【用更少的代价,获得最大的回报】

工程化什么?

站在整个开发周期角度,对整个周期中的标准、工具、平台进行工程化,以达到快速迭代、快速响应

不断优化开发流程,打破现有思维的桎梏。