Home > Archives > 关于前端学习

关于前端学习

Publish:

感谢祖明学长的安排,今天有幸去百度向Erik请教了一些有关前端方面的学习问题,感觉Erik说的很好,自己收获也比较大,所以记录一下我们提出的问题和Erik的回答。

没有录音笔,所以对话的还原方法主要是靠我自己组织的语言,跟Erik本身的回答并不一致,不过我会尽量还原Erik回答的思想。

每个人都有适合自己的学习方式,大牛的说法也不一定全对,读者可以自己判断。

Q:看到有些人说,算法对前端并不是特别重要,那么在前端学习过程中,是否需要系统的学习算法呢?

A: 一些算法中所包含的思想方式,其实也体现出一种解决类似问题的方法,所以算法的学习还是有必要的。至于说是否需要系统学习并且在leetcode上去刷个几百道题就看自己的兴趣了。

Q:那像HTTP这类的网络协议,前端工程师需要掌握到一个怎样的程度呢?

A:前端工程师在开发和debug时很经常需要追溯到网络协议上,所以HTTP协议是一定需要精通的。

Q:在学习JS之类的语言时应该采用怎样的学习方法呢?

A:首先我们的学习过程肯定都是螺旋式的。但区别在于有些人喜欢边学边练,有些人喜欢先硬啃完理论知识再考虑练手,这两种学习方法孰优孰劣见仁见智,选择适合自己的就好。

Q:Erik有什么推荐的前端的理论方面的书籍吗?

A:我感觉在学习前端的过程中最重要的文档资料还是ECMA的文档和W3C Spec这一类的东西,其他的书籍都是各个作者在阐述自己对Spec的理解。如果需要自己啃ECMA的文档,可以考虑看ES3/5的标准,毕竟像闭包、原型链、作用域、this这类的东西是JS中比较本质的难点,而JS发展到现在,ES6的标准可能已经比较庞大了,在学习好ES3/5的基础后,可以考虑读一读《Exploring ES6》之类的书,来了解语言中新增的特性。

Q:现在前端的三大框架我们在学习过程中是否需要至少精通一门呢?

A:我认为在学习框架的过程中最主要的还是应该学习其思想。比如说可以设计一个项目需求(如一个Todo或一个博客系统),然后在每次学习一个新框架的时候用这个框架去完成它,在你完成的过程中你就会对这个框架的思想有一定程度的理解,也没有必要专门挑一个框架去深入学习,各种细节的东西在问题这个框架完成具体的项目需求时都可以碰到,碰到的时候再去解决这些细节的问题可能更好。

Q:最近由于React的专利问题,百度已经宣布停用React框架,据说很多大公司也会避免在对外产品中使用React,那么现在还有学习React的必要吗?

A:有必要。其实无论大公司是否使用React,它作为一个流行的框架,很多设计思想和社区产出的产品都是有意义的。

Q:那么现在像jQuery这样的基础库还有深入系统的学习的必要吗?

A:像jQuery这样的基础库,很大一部分都是在解决兼容性问题,而这些问题随着前端标准的发展肯定会越来越不成为问题,所以我认为到现在这个时候其实没有必要深入系统的学习jQuery这一类基础库的必要了。

Q:那么jQuery和像A、R、V这些框架的源码需要学习吗?

A:像之前说的,jQuery这类的基础库很大一部分是在解决兼容性问题,那么当你遇到兼容性问题的时候直接使用jQuery就可以了,没有必要去看它的源码是怎样实现的。至于这些MVVM框架的源码,可以有选择的学习其中的核心部分,比如模板渲染之类的,其他的很多细枝末节的功能的源码实际上是没有学习的意义的。

Q:我有一个疑问,我在学习了一些理论知识后,总是想着去做一个项目练手,可是在选择要做的项目的时候总是不知道怎么选择,感觉想不出来什么有意义的idea,不知道Erik平时有没有遇到这样的问题?

A:我认为想要得到一个有意义的需求,可以考虑去多用用各种网站/App/开源项目,去看看各种应用排行榜上的应用都解决了一些什么样的问题,你在见得多了之后自然就能容易想到有意义的idea,单纯靠想去找有实际意义的项目挺没有意义的,至于学习理论之后的练手项目,感觉不用太过于在意这种项目的实际意义,因为首先你的诉求是练习你所学到的知识,并不是做出一款很火的项目,所以可以考虑一些偏向于练习方面的东西。等到好的idea找到你之后你就可以用你学到的东西来实现它了。

Q:感觉现在的前端招聘需求中很多都要求你掌握一些后端开发语言,比如说NodeJS之类的,那么作为一个前端工程师究竟对后端开发需要掌握到怎样的程度呢?

A:这个问题其实看你的兴趣。如果你更喜欢设计和交互这一些东西,其实你可以更多去学习CSS之类的知识,而没有必要去掌握后端开发的知识;你如果对业务逻辑、数据通信之类的东西更感兴趣,你可以加强对后端的学习。

Q:那么我在学习后台语言时该怎么选择呢?是选择目前最火的还是说自己感兴趣的?

A:其实我们在学习语言的过程中,最好还是先精通一门,然后在向其他语言去扩展的时候,就会更加容易。学习、掌握的东西越多,学习新知识时所遇到的重合的知识点就越多,学习起来就更加简单。所以你最好应该首先精通一门语言,你想要精通一门语言最好还是选择自己感兴趣的,而不是去面向简历编程。

Q:Erik能推荐一个前端的学习路线吗?

A:感觉不同的人会有不同的适合于自己的学习路线,所以这个不太好推荐。但是有几点建议是可以提的,首先是在学习的时候要稳扎稳打,不要急功近利,急躁的时候学习效率并不会太高。其次是我们在学习的过程中应该打好基础,在打好基础的同时广泛的涉猎相关的知识,见过的问题越多,解决问题的办法也会越多。其余的还是根据自身的情况和基础来看吧。

Q:Erik认为我们接受系统的计算机教育的人相对于去培训班学习的人来说有什么优势呢?

A:我认为主要的优势还是在于思维的体系化和敏捷性上吧。接受系统计算机教育的人自身的底层知识更成体系化,在解决问题时更容易参考相似的底层问题的解决办法。

Q:Erik能谈一谈自己对前端工程师这一职业的理解吗?自己又是怎样选择前端工程师这一职业的呢?

A:我个人认为前端工程师对个人的要求是很高的。因为前端处在一个承上启下的位置,需要很强的配合能力,既需要配合设计在交互、设计和审美上的需求,也需要配合后端在逻辑上的需求,所以并不是一个简单的工种。至于为什么选择了做前端,则是因为毕业后来了百度就刚好在做前端,所以一个人的命运,既要靠自我的奋斗,也要考虑历史的进程。

Q:最后想请问一下san-devtool什么时候会出?

A:下周。

声明: 本文采用 BY-NC-SA 授权。转载请注明转自: 关于前端学习 - 无火的余灰