这份学习路线并不完美,也不会有最终形态,正如前端不可预见、永无止境的未来。
可根据知识点前的符号按需选学,并获取知识点描述和学习资源。
前言 - 学编程需要的特质
前端学习七阶段
我的前端学习路线
尾声 - 持续学习
相信自己有能力,那么你就真的会有!
描述:学习前端基础三件套,建议从实战开始,边学边练,培养兴趣,快速入门。
资源
目标:了解和实践各语言的基础语法,并能使用开发工具来独立开发一个留言板网站。
✅ Markdown 语法
✅ Typora
在线笔记
Mdnice
描述:用于定义一个网页结构的基本技术。
资源:https://developer.mozilla.org/zh-CN/docs/Learn/HTML
⭐️ 基本语法
⭐️ 标签
⭐️ 属性
✅ HTML5 特性
描述:层叠样式表,用于设计风格和布局。
资源:https://developer.mozilla.org/zh-CN/docs/Learn/CSS
⭐️ 基本语法
⭐️ 引入方式
⭐️ 选择器
⭐️ 属性
⭐️ 文档流
⭐️ 内联元素 / 块状元素
⭐️ 盒子模型
⭐️ 浮动
⭐️ 定位
⭐️ 层叠规则
❗ BFC 和 IFC 机制
CSS3
描述:具有函数优先的轻量级,解释型或即时编译型的编程语言。
资源:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript
⭐️ 基本语法
⭐️ 数据类型
✅ 数据类型转换
✅ 函数
✅ 对象
✅❗ 作用域(作用域链)
✅ BOM API
⭐️ DOM API
⭐️ JSON
⭐️ Ajax
✅ JavaScript 执行机制
描述:学习前端、计算机、软件开发相关基础知识,并复习巩固上阶段学到的前端三件套。
资源
目标:熟悉前端三件套语法,尤其是 JavaScript,并了解互联网、域名、浏览器、服务器等,扎实前端程序员的基本功,为下面进入实战开发做准备。
✅ 互联网
⭐️ 域名
⭐️ DNS
⭐️ 服务器
✅ 浏览器
✅ HTTP
⭐️ 时间 / 空间复杂度分析
数据结构
算法
描述:前端工程化是使用软件工程的技术和方法来进行前端的开发流程、技术、工具、经验等规范化、标准化,其主要目的为了提高开发过程中的开发效率,减少不必要的重复工作时间。
资源
目标:至少学会一门主流的前端开发框架(Vue / React),并配合脚手架、组件库、工具等从 0 开始独立搭建并开发一个完整的前端网站,可以试着仿一些知名站点。要求遵循企业开发规范,将项目代码提交到代码仓库中,并独立发布上线,供他人访问。此外,建议抓住机会参与一些团队项目,感受团队开发模式和前端工程化的优势。
描述:一个开源与跨平台的 JavaScript 运行时环境。它是一个可用于几乎任何项目的流行工具!
资源
描述:用于衡量一个 Web 页面的性能。
资源:https://juejin.cn/post/6844904153869713416
FP(First Paint)
FCP(First Contentful Paint)
FMP(First Meaningful Paint)
FSP(First Screen Paint)
TTI(Time to Interactive)
性能监控
样式优化
JavaScript 优化
代码分割
资源压缩
打包优化
服务器优化
缓存优化
动画性能
dns-prefetch
Lazy loading
优化启动性能
渲染优化
网络优化
移动端性能优化
✅ CDN
描述:前端技术的融合更加紧密,应用的领域也更加广泛,前端领域的内容呈现多样化,除了网站外,还可以用前端技术跨平台开发 Android、iOS、小程序、虚拟现实、增强现实等。
虽然上面整理的学习路线知识点非常多,但是大家也别太担心,其实按照一定顺序和方法来学习,并不会很难,聊聊我的学习经历。
刚开始学习前端时,一定要以培养兴趣、快速入门为 目标。我入门前端时,由于没有基础、啥都不懂,因此选择在线实战教程网站来学习,跟着教程案例一行行把代码敲下来,实时浏览显示效果,很轻松地就把 HTML、CSS、JavaScript 的语法基础过了一遍。但是这时,我对看过的知识点没有什么印象,基本是看了就忘,当我想要自己写一个网站,也根本无从下手。
于是,我开始试着死记硬背代码,结果发现背了之后还是不会写。那干脆一不做二不休,直接打开编辑器和教程网站,把之前在线实战时敲过的代码复制粘贴到编辑器中,然后再修改保存,到浏览器中打开文件。这样虽然要在编辑器和浏览器中来回切换,但起码能看到自己的网页文件运行的效果了。后来,我利用浏览器开发者工具提升了自己开发网站的调试效率,敲出的代码达不到满意的效果时,就再去查,再改,再浏览,最后终于完成了一个留言板网站!
通过这件事,我明白了一个道理,既然记不住知识,那就先别强行记忆,上手多写,忘了就去查不就好了?不要担心自己知识不够做不出来,只要你去试,都一定能实现。
在这种操作下,我虽然能使用基础三件套开发简易网站了,但做的很慢,还老出问题。于是,我开始完整地看了几本前端入门和项目实战书籍,有三件套入门的,也有响应式网站设计的,还有 JavaScript 综合讲解的,以及一套完整的视频教程,通过这些来复习巩固之前学过的知识,打好了基础,并且了解了更多实战教程上没见到的知识。
看书和视频的过程中,我跟着做了几个简易的网站,也是边看边做。在这之后,我发现自己渐渐地能够脱离文档来写网站了!
但是,总感觉开发网站时,什么都要自己写,重复的代码写一大堆,很麻烦。于是,我试着上网搜了解决这些问题的方法,发现可以用组件库减少重复编写 HTML 和 CSS 代码,于是学了 LayUI,其实和之前一样的,就是打开官网找到要用的组件,然后复制到项目中修改就行了,写的多了竟然还真记住了一些(虽然这个没必要记)。
界面和样式代码简化了,但是 JavaScript 写的我依旧头疼。于是我决定进入下一个阶段的学习,当时先看了本书叫《锋利的 jQuery》来学习 jQuery,学会之后使用它趁热打铁做了几个网站,发现的确能大大简化繁琐的 JavaScript DOM 操作,让我尝到了甜头,又有了继续学习前端的动力。
在那之后大概半年,我开始学习主流前端框架 Vue,也是跟着视频教程学,并且结合 ElementUI 组件库开发了一个响应式网站。不得不说,习惯了用原生 JavaScript 和 jQuery 开发后,再去用 Vue 开发,真的是爽飞了,小有成就感。
在那之后,我就是通过不断地做项目来积累经验,既然编程知识太多学不完,那我就随需随学,逐渐拓宽自己的知识面。举个例子,我要做一个移动端 H5 页面,那就去搜 Vue 的移动端组件库,学会了 MintUI、VantUI 等;项目中要处理日期,那我就去搜日期处理库,学会了 Moment.js;项目重复文件和代码太多,我就去网上搜一些组件化、模块化的最佳实践;项目代码太大、加载太慢,我就去网上搜一些前端压缩、性能优化的方式;要把开发好的项目变成 APP,那我就去网上搜到了 Cordova 等打包工具;跟其他同学一起做项目时比较混乱、开发效率低,我就去搜了一些代码规范、前端工程化等;遇到 Bug 时,也是自己去网上搜索解决方案,并且还要看看有没有知识点是我遗漏的,我会再去弥补学习。通过不断实践、不断遇到问题和自主解决问题,我始终保持着学习的积极性,学到了越来越多前端的知识,并通过归纳总结来加深印象。
在那之后,我学前端技术非常快了。此外,我不仅仅关注前端网页开发本身,还同时关注前端的生态和发展,学习了微前端、Serverless、云开发、低代码等技术,因此个人的能力提升也很大。如今在工作中也是,面对各种不同技术栈的前端项目,我都能迎难而上,毕竟不会就学嘛!
总结一下,学前端的路线其实就一句话:基础三件套 => 巩固基础 => 学习框架 => 多做项目 => 按需学习 => 拓宽视野。还有一个学任何编程技术都要注意的点,全程多敲代码!多敲代码!多敲代码!
前期学习以培养兴趣为主,不要过于追求深层理解。
前端学习不能靠死记硬背,要多敲代码、多做项目实践。
不要急于求成,踏实积累才是硬道理。