转眼间已经研三了,从大二开始接触 Web 前端,到读研期间参与实验室大大小小的一些项目,再加上今年暑假的一些实习经历,想对前端的学习方法和路线记录一些自己的思考,作为沉淀。
个人经历
- 大一学 C/C++,接触基本的编程和计算机知识,学习主要来源于课程和作业实践等。
- 大二开始接触 PHP 语言,学习 Web 开发,通过阅读 CMS 网站源码学习各种知识。
- 大三开始转型前端,后端学习 JavaWeb 开发,前端学习 jQuery 等。
- 大四在导师实验室做一些项目,主要负责前端,开始使用 Angular1,通过学习 Zepplin 源码。
- 研一开始学习 React,用 Ant Design 做项目。
- 研二开始学习 Vue,用 Element-UI 做项目。
- 研二暑期在头条实习了三个月,接触 Webpack / Babel 插件等。
开发工具
工欲善其事,必先利其器。下面是一些通用的开发/效率工具,在利器可以看其他人的工具箱。
编辑器
- VSCode - 最好的编辑器,没有之一,微软出品
- Atom - GitHub 出的编辑器,大项目卡顿明显
- Sublime Text - 轻量级的单文件编辑器
- UltraEdit - 打开超大文件(大于 1 GB)必备
版本管理
浏览器及扩展
- Chrome - 谷歌浏览器,不用多介绍了
- Firefox - 今年更新后性能大幅度提升
- Postman - 浏览器插件,用于测试 API
- SwitchOmega - 浏览器代理管理插件
- OctoTree - GitHub 辅助插件,方便浏览仓库目录
网络抓包工具
搜索引擎/知识库
排名分先后!
- Google - 自己搞定翻墙
- GitHub - 搜开源库/最佳实践/issue 等
- StackOverflow - 解决各种疑难杂症
- Bing - 如果实在没有翻墙的替代品
- SegmentFault - 中文版 StackOverflow
- Baidu - 对搜索结果擦亮眼睛
其实 StackOverflow/SegmentFault/Github 的 SEO 都做得很好,所以优先用搜索引擎,注意组合关键词。
其他工具
- 石墨文档 - 在线文档工具,支持多人协作
- 语雀 - 阿里的团队文档工具
- ProcessOn - 在线画图工具
- CodeSandbox - 在线代码编辑器,并可以运行,支持多种框架
- 草料二维码生成器 - 生成各种二维码的小工具
基础知识
HTML
HTML 是一种标记式语言,是 XML 的一个子集,最基础也最简单。
- 常用的标签(或者叫元素)
- 表单的操作
- 多媒体
CSS
CSS 是一种声明式语言,易学难精。
- 元素选择器
- 引入方式和规则的优先级
- 盒模型
- 行级元素和块级元素
- 浮动和定位
- 常用布局
JavaScript
JavaScript 是一种解释型语言,主要为浏览器提供丰富的交互能力,也是易学难精。
- 基础语法
- 变量和作用域
- 函数表达式
- 在 HTML 中如何使用
- DOM
- BOM
- 事件机制
- 表单处理
- Ajax
- JSON
Web
学习资源
中级提升
HTML5/CSS3
主要是了解新特性和理解语义化。
ECMAScript6
主要了解 ES6 的新特性及其在工程实践中的用法,配合 Webpack/Babel 等。
模块化
主要了解为什么要模块化以及如何在浏览器和 Node 中使用,理解不同模块化的思想和适用场景。
NodeJS
NodeJS 扩展了 JavaScript 的能力边界,使它可以用在桌面端和服务器端,用法很多,主要先了解什么是 NodeJS以及如何使用。
基础框架
这些是今年比较主流的前端框架,不需要全部掌握,主要理解框架的用法和思想,适用的场景和解决的问题等。框架只是基础能力的最佳实践,变化很快,不要过于以来框架,而是驾驭框架。
编码规范
工程项目变大以后,规范就会显得尤为重要。良好的规范可以提升开发和协作效率,易扩展维护等。编码规范有些已经达成共识,有些则全凭团队/个人喜好,没有对错,只要遵守适应就可以。
可以用工具来强制团队所遵循的编码规范,如
高级进阶
标准规范
标准规范是基石,可谓万变不离其宗。
前端工程化
现在但凡带框架的前端项目已经离不开工程化了,从脚手架,Mock,Babel,CSS 预处理器,Webpack 大礼包,到测试,构建,ci,发布等。
- Gulp
- Webpack
- CSS 预处理器
- Babel
- TypeScript
设计模式
设计模式是一些沉淀下来好的开发方式,不同的设计模式应用于不同的场景,在操作系统、数据库、开源框架中,设计模式几乎无处不在。前端中也包含很多设计模式,值得学习提高。
- MVC,MVP 和 MVVM 的图示
- 浅析前端开发中的 MVC/MVP/MVVM 模式
- 前端 MVC 变形记
- 你对 MVC、MVP、MVVM 三种组合模式分别有什么样的理解?
- 浅谈 MVC、MVP 和 MVVM 架构模式
- JavaScript Patterns 中译本
- AlloyTeam/JavaScript 设计模式
测试/CI
测试在大型软件开发中是很重要的,还有以测试为主的 TDD 软件开发模式。测试在开源项目中也是衡量其质量的关键。
- 工具
- 测试框架 Mocha 实例教程
- React 测试入门教程
- JavaScript 程序测试
- 代码覆盖率工具 Istanbul 入门教程
- FEX/前端自动化测试探索
- 如何进行前端自动化测试?
- IMWeb/测试用例的那一回事
- 前端开源项目持续集成三剑客
- 前端持续集成解决方案
- 如何实现前端工程的持续集成与持续部署?
- 一个靠谱的前端开源项目需要什么?
发布/部署
前端代码经过编译/转换/压缩等处理后就可以发布了,具体选择哪种发布方式取决于后端采用的技术。传统的方式是将前端代码放到后端工程中静态资源部署的位置,现在更流行的是前后端解耦的方式、容器化,如 Nginx 反向代理和 Docker 镜像。学习 Shell 脚本编程可以把很多过程脚本自动化。
其他方向
前端现在变化和发展很快,甚至有一统客户端和桌面端之势,但是还要根据具体应用场景和技术要求来选择,软件开发没有银弹。
- 响应式设计
- 移动端:RN/Weex/小程序…
- 浏览器内核
- JavaScript 引擎
- NodeJS 服务端框架:Expressjs/Koa…
- Electron
- WebAssembly
参考链接
下面是很多大牛总结收集的前端知识图谱,内容很多,可以根据自己的学习计划和兴趣来深入学习,同时要保持求知欲和一个良好的技术视野。