极客时间已完结课程限时免费阅读

答疑加餐 | 学了这么多前端的“小众”知识,到底对我有什么帮助?

答疑加餐 | 学了这么多前端的“小众”知识,到底对我有什么帮助?-极客时间

答疑加餐 | 学了这么多前端的“小众”知识,到底对我有什么帮助?

你好,我是 winter。这一期我想跟你谈谈前端知识的学习姿势。
课程进展至今,我已经把大部分困难的知识点都讲完了。我在后台收到了一些留言,有的同学针对前端专栏的学习方法和学习方向提出了一些问题,在本期文章中,为了让同学们更好地理解我们专栏的重点,最大程度地吸收知识,在今天的文章中,我会逐一回答同学们在学习方法上的困惑。

1. 老师讲的内容是不是工作中用不到的,对掌握前端的实际工作有什么帮助呢,我们有必要掌握这些比较偏的内容吗?

我自己一直奉行着一个观点,不要执着于知识的“临时”实用性。因为我总是感觉,掌握知识越多的人,更喜欢花费时间学习一些暂时可能无法变现的知识,原因有两点:一是其实学知识花费的时间比想象中的要少,这边在纠结它有没有用,那边可能都学完了;二是知识的实用性其实不怎么好判定,比如当年黎曼搞出非欧几何的时候,全世界都觉得纯粹是数学的思维游戏,直到黎曼死了很多年后,相对论出世,黎曼几何有了实际用途。
不过,这里我还是希望讲清楚,我想通过我们的课程传达一些什么样知识内容。
我们的每一节课标题中,都会带一个有点“小众”的问题,但是,实际上,这个标题主要是引起你学习兴趣的一个引子,解决问题只是我们学习课程的一个自然结果。
我希望的是,通过这个有点偏的问题,引起你对这部分知识领域的关注,知道这部分知识的边界在哪里,从而形成一个完备的知识网络。让你在遇见不会的问题时候,可以快速定位到知识点,达成有效学习。并且,你也可以通过自己之前没有关注过的不同视角,来重新学习一遍这部分的知识。
比如在 JavaScript 课程中,我提供了几个不同的视角来讲解 JavaScript 语言,每一个视角下,都是完整的 JavaScript 知识。
比如说,当我们写下 1+1 的时候,我们从词法的角度看,这是两个数字直接量和一个加法符号,我们从类型的角度看,两个 Number 类型相加得到的也是 Number 类型,我们从语法的角度看,这是一个加法表达式。
我们从不同的维度去认识了 JavaScript 语言,这些视角,远比你记住我们课上讲的细节更重要。如果你记住了“数字直接量可以用科学计数法,E 还可以小写”,却没有学会从词法的角度去分析 JavaScript 语言,那可谓是“入宝山空手而归了”。

2. 我从业时间不长,文章看得迷迷糊糊,是我的基础不够吗?该怎么办?

有一种说法,世界上的知识分成“我知道的”“我知道自己不知道的”和“我不知道自己不知道的”。
重学前端定位是有一定经验的前端工程师,所以它最重要的作用之一,就是帮助前端工程师发现问题,找出知识盲点。
课程设计上,我的主要思路也是“帮助”大家形成自己的体系,而不是“替”大家形成自己的体系。我在前言部分就讲到过,若论丰富全面,有 MDN 文档;若论准确权威,有标准文本,但是,我们课程的作用是传达思路,如果有知识上的缺失,你其实可以通过阅读 MDN 来补全。

3. 如果阅读文章时候有的内容看不懂,该如何学习,如何定位这块的知识呢?

这个问题比较抽象,我认为这个课程设计其实也是一种定位了。
比如,对 JavaScript 问题,先搞清楚看不懂的是词法问题、语法问题、还是运行时问题?定位清楚了问题,你已经距离解决问题前进了一大步。
在这里,我想跟大家说一下:如果你看不懂文章里的某一块知识,你可以给我留言,把具体的位置和知识点告诉我,这样我们可以进行更好的沟通和反馈,从而解决这个问题。如果你只是说不懂,我可能会一头雾水,也无从下手去帮助你解决问题。多做实时、有效的反馈,会让知识吸收的效果更好。

4. 为什么文章里有那么多的术语和英文呢,为什么不换成更通俗的名字呢?

其实,在我们的课程中,有很多次讨论到术语问题,比如“排版”,我们讲了中国古代的活字印刷,比如“渲染”,我们讲到了国画的技法。恰当地使用术语,对于传达知识是非常关键的。
翻译是一项很专业的工作,文学类的翻译讲究信、达、雅,对于技术类的名词,或许“雅”这方面可以稍微打点折扣,但是表意清晰,字句通达仍然是必须的。
很多术语有约定俗成的翻译,当我们阅读不同的文档时,可以快速地通过术语建立联系。并且,有的时候翻译本身也会造成一部分信息的丢失,所以,我有时会直接把英文也写出来,这样有助于你通过原文去理解和对照。
而为什么我不把术语换成更通俗的名字呢?
我们所讲的多数技术,跟现实生活联系不大,这种情况下,“通俗”的名字往往意味着误导。有时候,我们确定术语时,反而会尽量使它远离已有的概念。当然,确定术语并非是我的工作与专长,我们课程中的绝大多数术语,都不是我的发明创造。

5. 标准里有些东西还是看不太懂,如果可以的话,希望老师可以稍微讲解一下如何看懂标准?

我并不推荐每一个前端工程师都去阅读标准,标准一半是写给实现者,一半是写给使用者,这里本来就有很多知识上的落差,多数时候,MDN 是更好的选择。
如果一定要阅读标准,建议从自己做一个极简实现开始,我在浏览器部分,有讲解浏览器相关的知识,在 JavaScript 部分,我还设计了编译原理实验。我想,把它们落到代码上会是一个很好的开始。

6. 接手了一个新项目, 怎么对前端合理规划, 老师能不能提供一些这方面的指导和建议?

这个问题其实跟前端学习关系不大,但是我可以讲讲。
任何规划其实都差不多,得有背景、目标、方案、计划、预期结果。其实在我看来,“项目”是规划的最小单位,在项目中拆出前端来做规划,是不太合适的。
背景和目标通常来自公司的业务,方案跟具体的技术相关,计划是项目管理的领域,最后根据这些来给出预期结果。
再往下细说,一个完整的方案可能包括产品、运营、市场、技术,不同的项目,各个职能的难度不一样,有些项目可能干脆不需要某些方案——比如多数淘宝的产品,首页开个入口就有访问量了,不需要独立去做市场。
具体到技术方案,前端、后端和公司的基础设施都有一定影响,有些公司会找一个架构师来做整体方案,有些公司则是哥几个商量一下边做边出,其实因地制宜最重要,能达到目标的方案都是好方案。
有了整体方案,到前端的一亩三分地上,技术选型、工程规范是绕不开的,有些公司有统一的前端团队,框架和工具都定好了,那么项目里面,就剩下分工和代码设计问题了,也有些公司有些项目具有特殊性,需要特别定制。
实际上,我很难给出具体的“框架选 Vue”,工具用“webpack”这样的建议,因为工程领域本来就是需要很多妥协和权衡的。
不过,在我们课程的最后一部分,我选择了几个典型的基础设施和体系来讲,会给你分享这几个领域中我的认知。
在本篇文章中,我主要针对一些同学在学习上的疑问,给出了我的答案。你对前端的学习方法有什么样的困惑,欢迎给我留言,我们一起讨论。
分享给需要的人,Ta购买本课程,你将得18
生成海报并分享

赞 11

提建议

上一篇
期中答疑 | name(){}与name: function() {},两种写法有什么区别吗?
下一篇
加餐 | 前端与图形学
 写留言

精选留言(6)

  • mfist
    2019-04-23
    1. 通过这个课程老师对于前端的划分为javascript、html和css、浏览器、工程实践几个部分,然后每一块再进行细分,搭起了整体的框架,碰到不懂的知识找到其在框架中的位置填充进去。 2. 疑问1:现在前端基本把node也包括进来了,对于node的知识应该怎么定位? 3. 疑问2:node属于后端的范畴了,是否应该去学习下java相关的后端体系?学习了后端的体系是否会反过来促进前端知识的学习呢。 每个人的时间是有限的,感觉需要学习的东西很多,一直在困惑,winter老师对这两个问题怎么看呢?谢谢
    展开
    17
  • 梦星魂
    2020-07-19
    我觉得三次握手这个翻译就很蠢,为什么见面要握3次手?实际上是应该是3步握手。一次连接的建立需要3次通信,这样才比较准确
    共 1 条评论
    2
  • Jy
    2019-04-23
    老师,我在理解SICP这本书的过程抽象和数据抽象的时候,代入到前端,比如生命周期、事件处理等更多是过程的抽象,能提出一些公用的过程,而数据抽象更多指的是组件内的数据定义、api的设计、高阶组件等 请问我这样理解对吗?或者说老师对过程抽象和数据抽象在前端中怎么理解的? 如果理解得不对,有什么好的书或者文章帮助理解?
    1
  • break
    2019-11-21
    老师如果想学习前端做独立游戏 应该怎么做呢
  • 名字长了容易被人记住...
    2019-04-24
    老师,String(1.00000)的结果为'1',想知道是经历了哪些步骤导致的这个结果,是否需要看标准,在网上没找到相关的知识。
  • Geeker
    2019-04-23
    感谢老师对第5个问题的解答。