《前端技术架构与工程》之工程思维与服务支撑
前言:
《前端技术架构与工程》这本书真的越看越有味。目前写了部分这本书的笔记,共分为三部分做笔记,已写了三篇如下。
《前端技术架构与工程》初次笔记
《前端技术架构与工程》之编程语言
《前端技术架构与工程》之性能笔记
今天准备写工程服务体系(开发、构建、测试、部署、持续化、监控与统计)
初次笔记让我从架构师的角度认识前端技术栈;编程语言笔记让我对前端三大件有了新的理解;性能笔记让我对网络知识和性能优化有了一个初步概念,对于进一步提高有了方向。
今天写的是工程服务体系从工程思维、开发支撑、测试支撑、运维支撑四个部分讲解。
我的笔记只是二手资料,详情请自行找资源。
文章目录
- 《前端技术架构与工程》之工程思维与服务支撑
- 前言:
- 工程思维与服务支撑
- 工程思维
- 开发支撑
- 脚手架
- 构建
- dev server
- 源码管理
- 测试支撑
- 运维支撑
- 总结
工程思维与服务支撑
工程化让生产更规范和高效。
工程思维
能力是一个比较宽泛的概念,知识储备、思维方式、执行力均是决定一个人能力强弱的关键因素,也可以把这些因素通常为能力。除了执行力不能量化,知识储备是一切的基石。不过知识是静态的,现实中的问题却不断变化的,通过思维可以将知识综合运用来解决复杂的现实问题。
知识分为两类,一类是通用知识,如数据结构、算法、操作系统、计算机组成原理、计算机网络;一类是领域知识,如HTML、CSS、JavaScript、浏览器原理、HTTP等;知识储备是一个学习过程,这期间的思维方式是学习思维。
编程能力分为两类,一类是快速实现业务功能的能力,一类是快速修复问题的能力。体现开发者对已有知识储备的综合运用和发现问题、解决问题的能力。根据功能需求选择合适的技术栈以及熟练使用调试工具快速查找问题。
架构能力指对规模庞大、功能复杂系统的整体把控能力。其中解耦和抽象是工程师架构能力的最大考验。
工程能力是架构的超集,架构能力关注业务,要把业务抽象、解耦、集成,选择技术栈和技术规范等然后开发,工程能力是关注在架构之外的协作和效率,使产品的迭代流程更规范、有序、高效且可控。
开发支撑
开发是迭代周期的核心环节,在第2章到第5章所讨论的内容以及本章讨论的脚手架和构建的内容,均是从架构或工程层面提升开发效率做的一些优化措施。
脚手架
脚手架的作用是使用工具代替人工创建初始文件和代码,根据颗粒度的不同可以创建完整的项目也可以创建一个模块。
样板文件也称为项目模板,封装了基本的业务初始文件和代码,以及与之搭配的工程配置,如构建、测试、部署等。从这个角度理解,脚手架被认为是工程体系的入口。
具体到脚手架的实现可分为两个部分,配置界面和文件创建。配置界面是提供给业务开发者选择和配置样本文件的入口,如命令行或GUI;文件创建的工具只要具备字符串处理和文件I/O能力即可。
构建
构建是一个操作集,包含编译、链接等一系列操作。
编译是构建的子集,编译的作用是将源码转化为运行环境可理解、可运行的代码。如CSS预编译语言、babel等。
模块化规范一方面将各个零散的同步模块进行合并,另一方面给浏览器提供异步加载的功能函数。
单元测试保障代码的可交付性,这是第一道关卡,但是实施成本太高而受益低,目前最优解是CSS in JS。
性能优化的方法有混淆压缩、Tree Shaking。
dev server
dev server是针对前段开发阶段的临时服务器。动态编译和Mock。
源码管理
SVN时代的源码管理只是存储历史版本,基于git的源码管理则具象为分支管理。融合协作、集成、部署和交付。在持续集成和持续交付的体系中,源码管理规范是所有流程得以实施的基石。
目前主流的三种峰值策略分别为GitHub Flow、Gitlab Flow、git flow。每种策略都有其适用的场景。git flow比较注重版本的界限,各分支角色的定位非常明确,较为适合体量大、更新频率低的ToB产品;GitHub Flow最大的优势是有利于持续集成,形式上非常简单,适合针对有完善持续集成体系的团队;Gitlib Flow集两家之长。
测试支撑
自动化测试在软件工程中十分常见,不过绝大多数前端仍依赖于最原始的人工验证,但是测试规范任然需要。测试模型有单元测试、集成测试、端到端测试、手动验收测试。依赖注入是用于测试案例作用域隔离的一种通用手段。前后端集成测试。
运维支撑
目前大多数公司对产品的发布有严格的阀门,把控这道门的便是运维团队。运维人员最重要的工作是保障生产环境的稳定性和安全性。一键部署。日志埋点。性能监控。
总结
重点在前两章,后两章测试支撑和运维支撑只需要了解即可,把精力放在工程思维和开发支撑部分。
更新地址:GitHub