导读:2021Web前端开发学习路线图
三大件学习
现在每年依旧有很多初级入门的前端开发。所以对初入门的朋友也给出一点意见。
刚入门的朋友,我觉得不应该一开始就学习像Vue、TypeScript、Webpack等知识。应该把重点放在CSS&HTML&JavaScript基础知识的学习上。
CSS&HTML
对于刚入门的朋友我依旧建议先将CSS(3)&HTML(5)的知识点认真学习一遍。学习的途中最好是学习完一部分就自己在敲一遍代码,加深自己的记忆。
当然如果你愿意,建议你可以先仿一个网站的静态页面(掘金、知乎等都可以),有一些属性就可以了解他实际的实现场景。
当然刚开始敲代码的时候还是不要过分依赖自动补全功能,一开始就使用自动补全对你记忆一些属性时没有帮助的;踏实点学习,日后会有回报的。
关于CSS(3)你需要了解的一些知识点
盒模型(标准&IE)
flex、float、NormalFlow等的理解
CSS常用选择器
行内、内部、外部样式的区别
CSS层叠规则
BFC与IFC的了解
CSS3的transform、transition、animation等属性的运用了解
响应式布局的理解
HTML(5)你需要了解的一些知识点
说到HTML我想有很多人是div一把梭。因为div用的爽,不用担心默认样式。
有人说HTML语义化的优点很多,比如清晰的页面结构、有利于SEO、便于团队开发和维护;这些我都承认,不过我还是喜欢div一把梭。
HTML语义化
canvas
本地存储(localStorage、sessionStorage、cookie的理解)
video和audio的使用
应用缓存(cachemanifest)
JavaScript
JavaScript一直都是我们前端的基石,一定程度上JavaScript的理解深度决定了你的发展。所以一定要用心学习。
现在很多人一看到闭包、原型链、作用域链、继承之类的文章都是直接跳过,你现在可以自问一下你的确理解这些基础的知识点吗?
JavaScript的基础知识点确实很多,所以《JavaScript高级程序设计》写了700多页;不过当你JS基础扎实后,你会发现你在学习框架、亦或是学习框架源码的时候会轻松许多。
JavaScript(ES6+)你需要了解的一些知识点
类型转换
this
作用域(作用域链)
原型链以及继承
闭包的理解
动态作用域和词法作用域
JavaScript执行机制
promise&async
上面说的CSS&HTML&JavaScript的基础知识点并不需要你一入门就全部都理解透彻;有些虽然是基础,但却也有它的难度。就算是高级也不敢说自己全都掌握了,有句话说的挺好——书读百遍、其义自见。
在前端领域混了这几年,总结了一套前端学习的精讲视频和学习路线,如果有对前端开发感兴趣的伙伴,不管你是想转行,或是大学生,还有工作中想提升自己能力的web前端党,欢迎大家的加入我的前端开发交流群:603985993 希望大家诚心交流!,与企业需求同步。好友都在里面学习交流,每天都会有大牛定时讲解前端技术!也可以关注我的微信公众号:【前端留学生】 每天更新最新技术文章干货。
我们第一遍学习不可能尽懂,到最少可以给我留下一个印象。过一段时间再学习这块知识点的时候,你肯定会有一个全新的理解。学习只一个需要一直在线的任务,重复的学习可以帮助你保持持续的竞争力。
我先声明一点,我并没有说其他技术不需要去学习,只不过初入门最好重点是先将基础夯实。
其实三大件的学习不需要花费多少时间,有基础的大概3个月就可以大致的看一遍。是否真的理解这是后话,不过已经算是入门了。
CSS&HTML&JavaScript推荐书籍/网站
1.W3C的CSS&HTML网络教程
2.《CSS权威指南》
3.《CSS揭秘》
4.《JavaScript高级程序设计》
5.《你不知道的JavaScript》上卷
6.ECMAScript6入门
HTML不知道推荐什么书。我个人觉得看教程和动手实践就基本没什问题。
接下来我们就可以学习一些工具类的库了。
库工具
对于库工具而言我们常用的有JQuery、underScore、zepto、Moment等
JQuery:降低开发者操作DOM的复杂度
UnderScore:提供实用的函数
Zepto:JQuery的简化版
Moment:日期和时间操作库
这些库给我们提供了很大的便利,省去了我们编写相关方法的时间,同时也是我们的程序更加稳健——我们自己写的方法很可能在某些情况下就出bug了。
当然对于这些库我们不仅仅只是去了解API,我们需要去学习它的源码。看看如果自己写相关方法的话是不是也想到了这种方式,这些库工具是也是一个很好的学习工具,我们不应该忽略。
比如让你自己实现节流函数,你会如何实现。
过滤对象应该如何实现
……
这种问题的答案不就在Underscore源码里面吗?
我们在学习库工具的时候,必定是需要回头看JavaScript基础的;这也就进一步夯实了基础。
前端框架(MVVM)的学习
当下最火的框架想必一定是React和Vue,如果JQuery的存在是是我们更加方便的操作DOM,那么现在MVVM框架则是让我们从手动更新DOM的繁杂操作中解放出来。
至于React和Vue该学习哪一个,更多的还是看当下公司使用的是哪一个(也不是必然)。对于Vue(React)该如何使用其实不用多久就能上手,我们更应该关心的是他们背后的设计思想和实现原理。
一些问题
响应式的基本原理是什么
发布订阅模式的理解
VirtualDOM的理解
前端路由的实现原理
nextTick/setState的实现原理
diff算法
单页面应用(SPA)的原理和优缺点
我们对于框架的API使用没必要花太多时间,应该多研究他们背后的设计思想和实现原理。
Vue和React我该选择哪一个?
对于这个问题相比很多人都有困扰(有些人两个都学,也就没有这个困扰),这个问题已经有很多人回答了。但我还是觉得不是非要选择哪一个才是政治正确,选择你需要的。
感兴趣的可以看看这篇文章:
ReactorVue:WhichJavascriptUILibraryShouldYouBeUsing?
以下是提炼的文中观点:
Vue的优势是:
模板和渲染函数的弹性选择
简单的语法和项目配置
更快的渲染速度和更小的体积
React的优势是:
更适合大型应用和更好的可测试性
同时适用于Web端和原生App
更大的生态系统,更多的支持和好用的工具
Vue相关资料
对于框架的一些学习资料我个人更倾向于推荐官方文档,有很多问题官方文档已经说得很清楚了。市面上有些书籍也就是对官方文档进行了一个扩写(不排除有精良之作)。
Vue官网&VueRouter官网&Vuex官网
剖析Vue.js内部运行机制掘金小册
vue技术揭秘
浏览器&计算机基础
如果你希望能能快速进阶到高级工程师,那么对于浏览器&计算机基础的知识你就必要又有一定的掌握。因为这能让你更好的理解前端。
浏览器一直是JavaScript最重要的宿主环境,所以我们必须去了解JavaScript在浏览器中是如何执行的。
我们前端开发接触最多的应该就是浏览器了,记得工作第一年最头痛的就是处理IE的兼容问题。工作中出现的很多问题都和浏览器有关,所以我觉得了解浏览器工作原理是非常有必要的。
为何要学习浏览器工作原理?
准确评估Web开发项目的可行性
从更高维度审视页面
解决面试中遇到的绝大部分浏览器问题
计算机基础
对于计算机基础我们需要做到大体了解,这样的话我们对整体的流程会有一个大概的把握。在实际开发过程中不会过于被动。
需要了解的一些知识点
浏览器缓存机制
浏览器中JavaScript的执行机制
页面渲染原理
浏览器安全问题
浏览器为什么会跨域
如何系统的优化页面
HTTP与HTTPS的区别
TCP/IP协议
三次握手和四次挥手
CDN的作用和原理
正向代理与反向代理的特点
这里仅仅列出了一部分知识点,如果想全面的学习可以看下面推荐的资料。
浏览器&网络基础推荐书籍/资料
《浏览器工作原理与实践》专栏
《图解HTTP》
《网络是怎样连接的》
前端工程化
从事前端稍微久一点的开发就一定会有这个感受——前端开发越来越工程化,越来越复杂。
对于前端开发来说,现在前端要做的不只是切页面调接口这么简单,我们需要了解的技术无疑更加广泛。
前端工程化的一点浅见
由于项目的复杂度越来越高,前端需要做的工作就越来越繁重。当项目复杂就会产生许多问题,比如:
如何进行高效的多人协作?
如何保证项目的可维护性?
如何提高项目的开发质量?
如何降低项目生产的风险?
前端工程化细分的话我觉得可以分成模块化、组件化、规范化三个方向。或者说一切能提升前端开发效率,提高前端应用质量的手段和工具都是前端工程化的实践。
模块化
JavaScript模块化
CSS模块化
资源模块化
组件化
从UI拆分下来的每个包含模板(HTML)+样式(CSS)+逻辑(JS)功能完备的结构单元,我们称之为组件。
也就是将复杂页面按功能拆分成多个独立的组件。
规范化
编码规范
接口规范
git使用规范
CodeReview
UI元素规范
前端工程化一些知识点
理解Babel、ESLint、webpack等工具在项目中的作用
Babel的核心原理
Webpack的编译原理、构建流程、热更新原理
nginx的基本理解
理解Git的工作流程
Mock的意义及优点
性能优化
提起性能优化,大家最先想到的是什么?我最先想到的是一道面试题:
从输入URL到页面加载完成的具体过程
因为从直观层面来看,我们前端需要优化的步骤基本都在这个加载工程当中。
性能优化现在对于前端来说已经是必不可少的技能了,当然现在有些所谓的性能优化的技巧现在都成为了一种需要遵从的规范
我们需要关注两个方向的性能优化:
运行时的优化
开发时的优化
性能优化一些知识点
前端性能衡量指标、性能监控(performance,LightHouse)
常见的性能优化方案有哪些
SSR方案的性能优化
Webpack的性能优化方案
React、Vue等框架使用性能优化方案
网络层面的优化方案
页面渲染层面的优化方案
白屏的优化方案
推荐资料
《大型网站性能优化实战》
《前端性能优化原理与实践》掘金小册
Nodejs
我们知道由于Nodejs的出现,前端开发出现了一个新的高潮。JS开始可以涉及后端领域,JS的可能性更大了。
Nodejs一些知识点
Nodejs在应用程序中的作用
Express和Koa的区别
Nodejs的底层运行原理、和浏览器的异同
Nodejs非阻塞机制的实现原理
数据结构和算法
《学习JavaScript数据结构与算法》(第三版)
作为一个前端工程师过来人的经验来讲,前端的学习由于其前端在整个软件开发工程中地位的上升,其扮演的角色越来越重要,面对的情况越来越复杂,所以,需要掌握的前端知识也很杂,如果你没有系统化的学习前端知识的能力,建议大家一定要找合适的课程去系统化的学习,因为这对于学习效率来讲很重要。自己学太容易走弯路了,前端更新迭代很快,效率和节省时间的学习方法才是王道。