在之前讲到的重新开始学习前端一文中,讲到了我个人学习前端的过程,以及重新理解前端,巩固前端的基础!下面来讲讲之所以将前端体系化学习分为四个模块的原因及背后的思考:
之前说到了,现在极少数的大学计算机专业开设了所谓的前端专业,更没有所谓的系统性的教程作为指导,供我们学习前端,大部分前端工程师的知识都是,来源于时间和工作中零散的学习!
既然像上文中提到的,前端工程师大部分的知识体系都来自于工作中的学习,那么像2019年的今天这样愈发激烈的求职过程中,对程序员的要求越来越高的应聘方来讲,我们作为一个没上过班的程序员,应该如何提高自己的技术水平,这种现状的出现其实引发了一系列的问题:
- 前端基础知识,基础知识的薄弱,会导致在日常开发中束手束脚,并且在一定程度上限制解决问题的思路!
- 技术上的短板,回到我们作为一个前端工程师的上升不顺畅 容易陷入重复性劳动的僵局,限制自己的职业发展!
- 前端工程师面临技术发展带来的挑战 前端社区活跃,技术标准更迭迅速,对于技术来说是一个好事,但是对于使用技术的开发者们来说,甚至说是前端工程师来说的话,副作用显露无疑,学习压力骤增!
那么对应的学习压力如何体现呢?
就比如现在的ES6中引入的新特性,如下所示:
可以从图上看出,ES6中引入的新特性超过了过去十年的总和,新特性带来的实践就更多了,说一个比较直观的例子:ES6中Proxy的引入,就支持了Vue.js从2.0到3.0内核原理完全升级!
没有系统的教育和技术快速迭代更新的前提下,我们作为一个前端工程师的自学能力由此可见十分的重要了,前端到底如何学呢? 我想这应该不仅仅是我应该关注问题了,也是大多数前端工程师所关注的问题了!
我结合我自己的学习历程来讲讲前端到底如何学,这也是我的总结和反思:
- 学习路径与学习方法
如果你是一名0基础的入门的同学,你可以根据豆瓣找一下前端学习的经典书籍,我在这里就直接推荐好了,譬如说:
《JavaScript高级程序设计》 《精通CSS》 对应的还可以去读一些具有参考性/指导性的教程网站:
对应的这些都是可以帮助我们快速入门前端的一个方式.
但是如果说,有了对应的工作经验的话,希望在某一个方面能够有所突破的话,我们可以这么做:
- 摸索出适合自己的前端学习方法
- 建立起前端技术知识体系/架构
- 前端背后技术的核心思想的理解
知识架构的建立
知识架构的建立帮助我们能够体系化的理解前端,并且在此基础上不断地进行优化.
- 什么是知识架构
你可以简单地理解为一本书的索引或者说是目录,能够将前端领域零零碎碎的知识点,通过知识与知识之间的关系关联/组织起来,同时能够帮助我们发现知识储备或者理解上的盲区!
- 如何划分,根据什么划分?
如果当你准备去做一个前端的知识架构的时候,你应该如何去做,以什么为依据进行划分呢?我们把一些前端里面流行的术语和问题,进行划分的话,如下所示:
- 类型
- 类型转换
- this指针
- 闭包
- 作用域链
- 原型链
- ....
刹一看,你会觉得好像是那么一回事,但是,你仔细看看,如果只是单论知识点来讲,上面所讲到的内容按照这种方式进行划分,确实没有问题,但是如果说 知识点与知识点需要关联起来的话,还需要结合JavaScript进行划分的!
编程语言对于计算机来说的话,是这样的:规定的文法,表达特定的语义,并且操作运行时这样一个过程,也就是说,按照规定的方式,将我们想要表达的意思,翻译成为代码,并且在某种环境下运行!
那么我们现在划分一下:
- 文法
- 词法
- 语法
- 语义
- 运行时
- 类型
- 执行过程
那么这样一来,概念与概念之间的联系就比较紧密了!
像我们作为计算机专业出身的程序员来讲,程序 = 算法 + 数据结构 是比较好理解的,如果你是一个刚刚入门的同学,那么这句话也不难理解,但是通过具体的代码和实际应用,可能会有更直观的感受!
其中讲到的 对于运行时来讲,类型就是所谓的数据结构,可以简单地理解为装数据的容器or箱子 执行过程 就是算法!
那么按照上面的无序列表进行细分的话,你熟悉的概念就会清晰的出现在你的眼前:
词法 | 直接量 , 关键词 , 运算符 , |
---|---|
语法,语义: | 表达式 语句 函数 对象 模块 |
类型 | 对象 数字 字符串 |
在JavaScript中俄这些概念有完整的定义,具有完备性,对应的知识架构的建立也容易很多,因为JavaScript有一份统一的标准,学习起来还是相对来讲容易的!
但是如果说应用到实际当中的话,比较困难了,比如说浏览器中的API,分布在W3C的标准中,非常难找,但是一种比较快的方式就是:
for in window
然后再去找对应的内容!
- 好处在哪里?
好处就是,虽不知全貌,但是对知识的整体脉络有一个清晰的理解,如果涉及到了面试,说不出具体的点,也能够通过架构中的位置,将向关联的东西讲一讲,做延伸也是非常有用的!
追本溯源
- 为什么需要追本溯源呢?
前端的发展,并不是一蹴而就的,我们学习一个东西,不仅仅需要学习他本身已有的,还需要通过历史渊源看他的发展,才能更好的帮助我们,搞清楚更多的 为什么,是什么 在计算机发展的长河当中,前端作为一种技术体系又是如何存在的呢? 这些没有固定的答案,需要我们引经据典的回顾互联网的发展历程,才能够看得到的,像现在热火朝天的火热的不行的JS是如何诞生的,你这点是否已经了解过? JS的发展是否具备偶然性还是必然性? 都值得我们进一步的思考!
我们无法穷尽所有,将每一个知识点都弄清楚,但是凭借着对技术的好奇与追求,才能够更上一层楼! 如果你有的更好的建议,请在评论区告诉我