自问三连,如何建设团队里的前端工程技术?

简介: 前端工程技术建设可以理解为团队内的前端技术和框架建设的整体表现,包括了 技术/规范文档、工程模板研发、组件库和开发工具沉淀、devops自动化、研发到数据可视化闭环等方面建设与完善。

网络异常,图片无法展示
|

本文为原创文章,引用请注明出处,欢迎大家收藏和分享💐💐

1、如何理解前端工程技术建设

老生常谈了,前端工程技术建设可以理解为团队内的前端技术和框架建设的整体表现,包括了 技术/规范文档工程模板研发组件库和开发工具沉淀devops自动化研发到数据可视化闭环影响力等方面建设与完善。

2、前端工程技术建设的意义

  • 规范和研发方法论:经过业务沉淀而形成团队内的研发方法,能通过成熟的技术储备完备的开发流程为业务提供稳定支撑高效迭代能力
  • 业务复用:如上所说,成熟的技术储备必定能为业务提供能力上的组件复用,对于长战线的业务发展来讲,是长期贡献的重要体现。
  • 研效提升:套用成熟的模板和开发流程到实际开发业务中,缩短工期和提升研发效率。
  • 团队的影响力:这里包含2部分,工程规范技术影响。工程规范主要对内,针对技术栈的规范和技术标准的统一,规范组员的开发过程;而技术影响多对外,能为业界提供标准、技术、文档、流程和开源上的沉淀。

一句话总结:前端工程技术建设是保证工程整个流程、研效高可用,并且能提升对外影响力而做的一系列建设。

3、为何前端技术要工程化

抛砖引玉,要理解前端工程技术建设的必要性,先从前端工程化讲起。

3.1、前端技术的发展历程

网络异常,图片无法展示
|

随着1991年,WorldWideWeb的诞生,标志计算机应用从本地向网络时代的跨越。在最早的Web场景中,HTML、CSS、JavaScript组成了网页基石三要素,他们三者分别扮演网页文本结构、样式和动态交互的重要角色,彼此依赖又相互独立。就是如此简单的结构,一直维持到90年代末期,直到1998年伴随ajax第一版本的问世,前端技术才逐渐向动态化过渡。

网景浏览器截图(图已被传的包浆了😂。。。):

网络异常,图片无法展示
|

在2000年后,前端技术逐渐多样化起来,从Sam Stephenson写的Prototype基础库开始,到跃进的jQuery时期,最后演变出现在主流的三大框架(ReactVueAngular),都是前端技术一次次的革命与进步。

本人认为,真正意义上的前端工程应该从Nodejs使用,Babeljswebpackgulp等构建工具广泛应用开始,将前端技术逐步模块化、可治理、可延伸,最后演变到现在大家能看到的前端工程的大集合。

3.2、Js语言的短板

众所周知,JavaScript是一门是解析型语言,它的优势是体现在轻量、边编译边执行。但同时,它又是一门弱类型、并且以函数为最高优先级的语言,这意味着,一个硕大的js文件,其实通过作用域隔离的是一个个的函数,并且全局作用域和局部作用域的变量也可以随时转换成不同类型。

其实这样的弊端是凸显的,当前端项目规模越来越大时,单纯通过函数进行作用域隔离显得过于乏力,因此,项目也逐渐变成一个巨石(monolith)应用。即使不断拆分js文件,但错综复杂的作用域叠加,也会致使项目变得难以维护。

为了抗衡处于日积(屎)月累(山)的项目,聪明的开发者制定了 CommonJsAMDCMDUMD 等Javascript模块化策略,把作用域分隔开,变成一个个的小模块。到后来,三大框架和以 webpack 为代表的构建工具出现,又在模块化基础上连接整个前端工程,就有了前端工程化这一说法。

3.3、前端场景的复杂性

近年来,在纯web应用外也诞生了很多新场景,例如:H5、小程序、微前端、跨端应用。。。每种不同场景技术栈千差万别,工程结构也大不相同。在这点上,传统意义上的作用域区分很难满足所有开发场景,因此,使用前端技术工程化来区别管理前端多样化场景显得尤为必要了。

4、前端工程技术建设的场景需求

之所以先抛出前端工程化概念,是因为它是前端工程的核心。试想下,假如前端工程足够简单,何必要搞开发模板,搞devops、多环境、组件库呢?对吧。。。但是就目前而论,如果没有系统而全的前端工程技术,那么前端项目迭代确实增加了不少阻力,例如:

网络异常,图片无法展示
|

网络异常,图片无法展示
|

一味只满足业务需求而忽略工程建设,最终在时间的累加付出巨额的维护成本。

在上面场景一,小张其实可以利用构建工具的多环境部署特性,加上devops部署流水线插入对应客户的路径作为环境变量,让项目自适应构建就能解决。

对于场景二,小陈同样可以利用Monorepo方式来管理组件库,并且对组件发布的版本做持久化记录,最后结合服务商标识来按需加载组件就能做到千人千面的多态系统。

5、前端工程技术建设拆分

再提下,前端工程技术建设是保证工程整个流程、研效高可用,并且能提升对外影响力而做的一系列建设。 这要从几个维度来分析:

  • 技术维度
  • 工程类:包括技术栈、开发服务、软件源等
  • 架构类:例如脚手架、中台技术等等
  • 周边技术:容灾、工程测试、灰度平台等
  • 流程维度:完善的管理流程能让工程循序渐进发展。
  • DevOps:完整的集成与发布流程
  • 技术闭环:数据埋点、错误收集、数据清洗入库等
  • 业务闭环:数据特征分析、数据平台、反馈平台
  • 建设维度:是工程健康发展的保障,包括团队规范、文档规范和技术影响力的建设。
  • 文档类:技术文档、流程规范文档、接口文档
  • 技术评审:MR和CR、技术分享会、技术复盘等
  • 影响力:技术开源、公众平台宣传、技术文章发表、前沿技术探索等

网络异常,图片无法展示
|

6、如何建设团队的前端工程技术

6.1、技术建设

网络异常,图片无法展示
|

技术能力体现了工程团队的技术广度和深度。一个良性的前端工程技术建设应该会囊括以下几方面:

  • 体现前端技术的前沿性:什么 TypescriptReactVue 之类的热门框架可以在新项目或者探索业务上做尝试,保证自家技术栈不要落后于行业;另外也有助于吸引年轻人和新鲜血液到团队里面。
  • 仓库技术规范使用:现在都是团队合作的时代,对于git的使用和协作方式往往会直接影响到一个前端项目开发的效率以及维护成本。对此,我们应该把仓库技术重视起来,git分支划分、提交流程、hooks使用都要有一套适配自家前端团队的规范。
  • 工程框架和组件建设:优秀的脚手架和组件都应该配有名分,经过团队业务的洗礼和工程师的不断迭代,这些技术上的沉淀可以开源到企业内部软件源平台,或你对组件有足够信心,也可以对外开源。
  • 支撑型技术建设:这块涉及面就比较广了,大体来讲只要能给工程提供帮助都算,例如工程里面的测试体系能力、性能优化技术、开发者工具建设等等。。。这类技术像钻井,可以帮助整个体系纵向发展,拓展技术广度之余能增加工程技术深度

6.2、DevOps

网络异常,图片无法展示
|

DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。

早些年,DevOps用于整套业务,其链路涵盖都比较齐全;但是,随着越来前端技术趋向全栈跨端业务链路复杂后,针对前端的DevOps定制也变得普遍起来。

网络异常,图片无法展示
|

Devops是个覆盖面广的技术业务范畴,各大云平台商都提供比较完整的接入。一般关键的流程包括:

  1. 通过CI|CD感知并触发工程构建,产出制品;
  2. 制品推送到制品管理平台写入版本记录,以便在回滚时实现自动化;
  3. 制品生成后,在发布单系统提单,走审核和发布流将产物部署上云服务;
  4. 和前端相关的云服务大致分2类:k8s(for nodejs等后台服务)和cos(前端静态资源),根据需求部署即可。(cos上层或许还会接入CDN加速);

接下来就是各流程闭环平台接入:

  1. 监控平台:负责服务或资源错误监控并推送告警(上报SDK在工程源码内植入);
  2. 数据分析平台:负责业务上报数据分析(上报SDK在工程源码内植入);
  3. 容灾与回滚:结合制品库实现服务版本快速自动化回滚;
  4. 日志平台:收集网络日志;
  5. 工单系统:提供给运维使用,以用户反馈的问题为维度生成一条工单,并实现整个问题追踪、解决流程。
  6. 灰度平台:针对服务多版本而开发的统一管理平台。

6.3、规范

网络异常,图片无法展示
|

古话说得好:无规矩不成方圆。 一套规范的前端技术标准能大大降低团队的维护成本,也让新人快速上手,除此之外,笔者认为更重要的是好的技术规范能将团队的技术能力带上正轨,向前发展。

6.4、流程闭环

网络异常,图片无法展示
|

6.5、影响力

网络异常,图片无法展示
|

影响力包括技术和团队两方面,这往往通过业务上的技术沉淀而慢慢发展形成的,包括对团队技术的方法论、技术的开源和技术分享等。

写在最后

感谢大家阅览并欢迎纠错,欢迎大家关注本人公众号「似马非马」,一起玩耍起来!🌹🌹


相关文章
|
16天前
|
前端开发 JavaScript 关系型数据库
从前端到后端:构建现代化Web应用的技术探索
在当今互联网时代,Web应用的开发已成为了各行各业不可或缺的一部分。从前端到后端,这篇文章将带你深入探索如何构建现代化的Web应用。我们将介绍多种技术,包括前端开发、后端开发以及各种编程语言(如Java、Python、C、PHP、Go)和数据库,帮助你了解如何利用这些技术构建出高效、安全和可扩展的Web应用。
|
1月前
|
XML 前端开发 JavaScript
AJAX 前端开发利器:实现网页动态更新的核心技术
**AJAX** 允许网页在不刷新的情况下更新内容,实现异步与服务器交换数据。通过JavaScript的XMLHttpRequest对象,可发送和接收数据。当用户触发事件(如点击),函数向服务器发送GET请求,服务器响应后更新指定HTML部分。AJAX并非编程语言,而是利用浏览器内置对象、JavaScript和DOM技术。核心是XMLHttpRequest对象,它有多种方法(如`open()`和`send()`)和属性(如`onreadystatechange`、`readyState`和`status`)来处理请求和响应。
57 2
AJAX 前端开发利器:实现网页动态更新的核心技术
|
1月前
|
机器学习/深度学习 前端开发 搜索推荐
未来趋势下的前端开发技术探索
随着人工智能和物联网技术的快速发展,前端开发领域也面临着新的挑战和机遇。本文将探讨未来趋势下前端开发技术的发展方向和应用场景,为广大前端开发者提供启示与思路。
|
1月前
|
存储 前端开发 JavaScript
从前端到后端,探索现代Web开发技术
本文探索了现代Web开发技术的各个方面,包括前端和后端开发以及多种编程语言的应用。通过对JavaScript、Java、Python、C、PHP和Go等语言的介绍,深入探讨了前端和后端开发的基本原理和常用工具。同时,还涵盖了数据库技术在Web开发中的重要性和应用场景。无论你是初学者还是有经验的开发者,本文都能为你提供全面的视角和实用的知识,帮助你在Web开发领域取得更好的成果。
|
12天前
|
前端开发 算法 JavaScript
如何优化前端性能:探索图片压缩与延迟加载技术
本文深入探讨了前端性能优化中的关键问题:图片压缩与延迟加载技术。通过介绍图片压缩的原理和方法,并结合实例说明了如何有效减少图片大小、提升加载速度;同时,详细解析了延迟加载技术的实现原理及其在提高页面加载性能中的作用,为前端开发者提供了实用的优化方案。
|
26天前
|
编解码 前端开发 JavaScript
探索前端开发中的新趋势:WebAssembly 技术应用与展望
本文将深入探讨前端开发中的新趋势——WebAssembly 技术,介绍其在前端领域的应用场景和优势,并展望未来在前端开发中的潜在影响。通过对 WebAssembly 技术的原理解析和实际案例分析,帮助读者更好地了解并应用这一新兴技术。
|
28天前
|
前端开发 JavaScript NoSQL
从前端到后端:构建全栈应用的技术挑战与解决方案
在当今互联网时代,全栈开发成为越来越受欢迎的技术趋势。本文将深入探讨从前端到后端的全栈开发过程中所面临的技术挑战,并提出相应的解决方案,涵盖前端框架选择、后端技术架构、数据库设计以及跨平台兼容性等关键问题。
|
1月前
|
前端开发 JavaScript NoSQL
从前端到后端:构建全栈开发的技术生态
本文将探讨如何在全栈开发中构建完整的技术生态,从前端到后端各个层面进行深入剖析,讨论不同技术之间的协作与整合,为开发人员提供全面的指导与启示。
|
1月前
|
前端开发 JavaScript Java
|
1月前
|
机器学习/深度学习 人工智能 前端开发
探索未来的前端开发趋势:WebAssembly 技术的崛起
随着互联网的快速发展,前端开发的需求也日益增长。本文将深入探讨一项引起广泛关注的新兴技术——WebAssembly,探索其在前端开发中的应用以及对未来的影响。