前端开发感兴趣的同学可能都有体会,前端入门相对容易,但在通往高级前端工程师的路上却充满各种学习内容,有时不免感到困惑。这一方面是因为前端领域本身存在的固有特点,另一方面也是因为初学者大多缺少一个清晰的路线指引。本篇文章将结合来自 Roadmap 的前端学习路线图对前端从入门到高阶所涉及到的主要方面进行一个最新的梳理。
一、网络
网络是 Web 信息传递的媒介和基础,因此要对网络的交互、工作原理、DNS 解析以及终端浏览器的页面呈现等整个流程有一个基本的了解。就像我们学习开车之前,先对交通系统和车的基本构造有一个基础认识,对后续的驾驶学习会起到较好的辅助作用。
二、HTML、CSS、JavaScript
这是前端开发中的基础的基础,Web 应用中大多功能都是由这三者实现的,前端开发中的大多工作也都是基于这三者开展的。如果把 Web 应用的实现比作大楼建筑的话,那么 HTML 就像钢筋水泥,构成了大楼的架构主体;CSS 则像大楼的装饰,使得外表展现更加美观;而 JavaScript 就是电力、水利系统,为大楼提供够更好的服务和调度。所以扎实掌握了这三项内容也就掌握的前端开发的核心,无论主流开发框架如何更新,大家都可以做到以不变应万变。
三、版本管理系统
版本管理系统是编码中的重要辅助工具之一,主要负责对代码的管理,使用范围不限于前端开发,一般只要涉及到代码管理的都会用到它,当前广泛使用的是 Git,有很多有趣的相关教程。GitHub 提供了第三方代码托管服务,同时也是程序员们的主要聚集地之一。
四、Web 安全
前端初学者可能比较陌生,但随着大家前端工作经验积累的越多就越会感到 Web 安全的重要性。熟话说“吃一堑,长一智”,当没有引发安全事故时对 Web 安全方面的重视经常会被当作可有可无,但是一旦出现过问题之后就真正的长记性了,所以最好还是能做到防患于未然。
五、包管理
npm 和 yarn 是当前常用的包管理工具,主要负责对前端开发中用到的代码包和依赖进行管理。当前的前端开发经常会依赖于已有的库进行,即所谓“站在巨人的肩膀上”,包括开源的前端框架、常用工具以及公司内部自建的公共库,对这些包的引用管理可以借助包管理工具来自动完成。
六、CSS 架构、预处理
手写 CSS 样式常会遇到样式的嵌套和复用,这方面可以了解参考 BEM 规范。CSS 预处理则是借助第三方库对开发中所编写的类 CSS 代码进行预处理为真正的 CSS 代码,不同的框架提供了相近的语法,主要作用是为 CSS 的编写和组织提供便利。
七、构建工具
Web 应用在发布之前通常需要一个构建环节,包括源码打包、验证、格式化等等,所需事项随实际需求而定,主要作用包括执行代码打包,自动构建、规范代码编写、格式,提高发布代码的执行效率等多个方面,一般每个开发团队都会有一个统一的配置。
八、框架
框架登场了,框架的主要作用是提高应用开发和运行的效率,好比“飞机大炮”,有优秀的工具就不必再手动“造轮子”了。国内大小厂主流使用的是 React.js 和 Vue.js,两个框架各有所长,可以根据实际情况而选择使用。
九、现代 CSS
现出新的 CSS-in-JS 框架,如:样式化组件(Styled-Components)、CSS 模块(CSS-Modules)、样式化 JSX(Styled-JSX)等,为 CSS 样式的编写与维护提供了新的实现方式,较少了 CSS 代码的组织冗余、样式冲突等,同时也对 CSS 的运行效率起到一定的辅助优化作用。
十、Web 组件
“Web 组件”是浏览器原生支持的组件化特性,实现了对 DOM 元素及交互逻辑的封装,有特定需求场景可以考虑借以使用。
十一、CSS 框架
CSS 框架提供了常用的 UI 组件,样式及交互经过了统一的规范设计,有助于应用界面的快速搭建,如果没有对界面设计上的特殊要求,一般可以直接用于应用开发。常用的开源 CSS 框架有多种,可以根据实际需求进行选择,也可以基于框架进行二次开发。
十二、测试
前端测试是比较重要同时也比较容易被忽视的一项工作。对前后端整个系统来说,一提到测试往往前端是 Bug 的重灾区,一方面是前端交互细节较多容易疏漏,另一方是前端相当于是产品整个功能开发链的终端,后端潜在的 Bug 大多在联调时就可由前端反馈修复,而前端不具备这层“联调保障”,所以相比而言前端面临的测试挑战就更加的严峻了。搭配使用主流测试框架可以高效的完成对前端应用的单元测试和功能测试。熟话说:“三份设计,一份编码,六份测试”,对前端也是同样的道理。
十三、类型检测
TypeScript 是代替 JavaScript 被大家广泛采用的类型检测语言,没有特殊条件约束的话建议还是尽早使用,无形中可以规避很多 Bug,越是体量大的应用越能体现出 TypeScprit 类型检测的优势。
十四、渐进式 Web 增强
部分 API 在移动端 Web 交互场景中使用较多,主要作用是增强用户体验,具体实施还要结合看具体业务需求,综合考虑来确定技术选型。
十五、服务端渲染
服务端渲染是相对客户端渲染而言的一种页面构建实现,是将客户端所要展示的具体内容在服务器端构建完成后直接返回给客户端,优点在于大多情况下可以提高页面的响应速度,便于 SEO 和客户端设备灵活适配等。当然也存在不足,比如对较复杂的应用支持时,服务器的资源开销较大反而会降低响应速度。服务端渲染增加了应用在服务端实现的复杂程度,是否采用要根据具体情况综合评估。
十六、GraphQL
GraphQL 是结构化数据查询语言,相对传统的 REST API 查询,GraphQL 支持更加便捷的结构化查询方式,数据按需所取、便于动态整合,较好的适应了前端开发中对数据查询的灵活需求。当然其自身也存在着多种不足,是否选用也是看实际情况的综合评估。
十七、静态站生成
静态站生成的技术实现包含了 SSR 和静态网站编译。SSR 上面已经介绍过,静态网站编译是一种网站构建的方式,多用于偏信息展示类网站,如博客、产品官网等,优点在于内容发布便捷,易用易部署,可以作为轻量站点搭建的常备选型之一。
十八、移动端、PC 端应用
基于移动端应用框架前端技术栈同样可以完成移动端的应用开发,框架底层提供了与原生系统结合的技术支持,为多端需求的开发提供了高效统一的实现方案,即“一处编写,多处执行”。比较适合用于普通的事务类应用,对运行性能要求较高的应用如游戏类暂时还不太适合。同样前端技术栈也可以借助框架完成 PC 端的应用开发,具体技术选型还是要看实际需求,综合考虑而定。
十九、Web Assembly
Web Assembly 的特点是执行速度快,同时也为其它高级语言提供了一种与 JavaScript 协同运行于 Web 中的途径,当前还处于不断发展和完善之中。
总结
以上梳理了前端开发所涉及到的主要方面,每一项所包含的内容都足可以写本书来专门阐述,实际上也已经有了很多优秀的书籍对各个分支做了详细地讲解。对于初学者不必急于求成,前端学习也是一个循序渐进的过程,希望大家都能一直保持那份对编码的热爱,在不断的实践中收获欣喜!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。