怎么学 JavaScript?

2016-12-15 15:08:17 +08:00
 whxiaobu

鉴于时不时,有同学私信问我(老姚,下同)怎么学前端的问题。这里统一回复一下,如下次再遇到问我此问题同学,就直接把本文链接地址发给你了。

首先说句题外话。关于有人管我叫大神的事情。个人感觉这跟你买东西时,人家管你叫帅哥一样,你答应与否都无妨。

正题开始,“前端怎么学”应该因人而异,别人的方法未必适合自己。就说说我的学习方法吧:我把大部分时间放在学习 js 上了。因为这个 js 的学习曲线,先平后陡。项目实践和练习啥的,我不说了,主要说下工作之外的时间利用问题。我是怎么学的呢,看书,分析源码。个人这几天统计了一下,前端书籍目前看了 50 多本吧,大部分都是 js 的。市面上的书基本,差不多都看过。

好处应该是不言而明的,书看多了,基础会逐渐夯实起来。看多了,自己的判断力,自然就上来了。看别人的文章,就能很快判断出,对方每块儿讲得对不对,哪块儿又是自己不清楚的,模棱两可的。当然也为看源码,分析源码提供了基础。

10 本书读 2 遍的好处,应该大于一本书读 20 遍。 10 本书的交集,那就是基础知识的核心,而并集那就是所有的知识。好书当然要多读,反复读。但是只读一本是不行的。因为每本书的侧重点都不一样。从不同的侧面,去理解一个知识点,是很有意义的。

所以特别佩服印度人,他跟你讲英文,你一个词语没听懂,他会蹦出 n 个同一意思的单词,你听懂一个,就 ok 了。看书也是这样的,某一块讲得不透彻,不用担心,其他书籍可以帮助你来了解。

个人觉得不错的,没事可以翻翻的。书籍如下:

想必很多同学,都想看书,但是很难看下去。文字部分相对来说还能看看,一遇到代码,头皮就发麻了。此问题一开始时我也遇到的。

说一个学习理论。比如说学英语,有个开水理论。词汇量必须达到 6000 才行,如果没达到,英文水平不会上去的,这跟烧开水一样,没事烧烧,放着凉凉,从来没烧到 100 度,那么此水是永远不能喝的。一旦煮沸过,就可以随时喝了。

20 本书你看不下去,说明什么呢?任何一本书,你都没看完过。熟悉的,永远只是前三章。别笑,我原先也是这样的。

那么现在的问题是,怎么把一本书看完呢?很简单,敲。《基于 MVC 的 JavaScript Web 富应用开发》这本书我看时,就是这样,终于有一天,我下定决心要把此书从头到尾敲一遍。文字加代码都敲,然后就一章一章得看完了。代码敲一遍后,你会发现,没之前看起来的那么难。

如果你属于一看书就犯困那种同学。强烈建议你把《 javascript 面向对象编程指南》此书从头到尾敲一遍。坚持看完一本书后,信心就上来了。先保证看完一本再说,看完 3 本后,基本应该能做到几天就能看一本了。万事开头难,加油吧。

书看完后,要自己总结,要与其他书籍对比看。有同学同时对比着看《权威指南》和《高设》来的。随便拿出个知识点,你都能闭着眼睛说得头头是道,说明水平够了。

下一块就是源码的学习了。看框架源码之前,想说一件事情: dom 的 api 不懂,没问题,你可以百度。

但是正则一定要先研究研究,不然大多数人去尝试分析源码时,遇到的挫折都在于此。

怎么去阅读源码呢?敲,照着敲。

有哪些代码值得去敲呢?优秀框架或者库的源码都值得你去敲。但是拿 jq 来敲,来入门,那不行的。原因:太他么长了。八九千行呢!!

个人觉得underscore.js库是不错的第一个选择。原因都是工具方法,敲完以后自己的水平应该略有小成吧。其实有一些 api 的实现,你要把它当成 getElementById 一样,深深的印在脑海里。比如 extend 方法,必须张口就来。敲完 underscore 库后,可以考虑去看看《 javascript 函数式编程》这本书了。

jq 的源码不好敲。那么zepto的源码比较少 1800 多行,敲一天应该敲完了。敲几遍后,把所有不懂的地方,都百度清楚,然后就可以写自己的类 jq 的库了。然后就可以作为一项技能写进自己的简历里。比如“创建过自己的 jquery 库”。当然敲的过程,还能帮助自己对 jq 的 api 认识。

然后是backbone.js,因为此框架是以类 jq 和 underscore 为基础的 mvc 框架。代码也没多少行。敲吧。 spine.js 与 backbone 类似。可以在敲其之前,先看看那本《基于 MVC 的 JavaScript Web 富应用开发》。希望你的简历可以添加这么一笔,“创建过自己的 mvc 框架”。

其他的,我也敲过一些。包括jq.validate.js,包括一些插件。如果你愿意的话, bootstrap 你可以去敲敲啊。源码挺多的,可以按插件逐个来敲。分析明白了,轮播、分页、下拉框等等的插件那还不是分分钟随手就写一个了。最起码看看人家 api 接口是怎么设计的也是极好的。话说个人在阅读其 css 代码中,也学到了不少东西。说到插件,有两个必须提提,一个是表格插件,一个是树。都敲完,简历里可以这么写上,“创建过自己的 UI 框架”。

当然了,你也可以敲你喜欢的框架代码,重要的是明白其实现原理,最好理解其为啥那么设计,如果对设计模式比较熟悉的话,会经常发现原来是这么回事。

照着敲只是分析源码的入门,用途也是为了学习,最后能用在自己的项目中,那是才是正道。就算没啥用,也是打发时间的好方式,比看电视剧强多了。我闲着无聊时,就背着敲 underscore 源码。最后说句,如果你简历上能如期写上那几句话后,必须是大神。加油吧。

写本文的最初目的,正如文章开头说的那样,方便自己回复大家的提问。本站的任何一篇分享学习经验的文章,基本都会引起共鸣,这确实是一个值得讨论的话题。这里再说说几个事情。

没几年。三年多。

看书和分析源码是重要的提高方式,但不适合新手。新手需要的是能快速的入门和入行,能快速的上手工作。一种快捷的学习方式就是看视频。正如有的同学说得那样,知道有哪些东西,怎么用就可以了。

看视频是有好处的,首先它是一种被动学习方式。我最开始的入门也是看视频来的,只需要看就行了。一遍没懂,再放一遍,我基本上是 1.5 倍数去看的。

而读书是一种主动方式,需要自己一页一页翻。需要自己主动的去理解。而很多东西,也许只是视频老师一句话,就能突出的重点,需要我们自己去解读。还有另一件事情是,比如发现自己某个知识点不太清楚,可以单独去百度。比如 this ,文章很多的。这种学习方式也是快速掌握知识点的好办法。

书籍需要技术评审,那么看文章一定要看看评论。不过视频就不好说了,视频一般都不会讲得太深入,偶尔也有讲错的。当年我也曾被一些视频误导过,建议找不错的视频看看。各大网站培训机构的免费视频挺多的。

但已经工作一年半载时,正是提高的好时候,此时可以去看书了。全面系统的梳理知识点,扫清自己的盲区。如果只是靠项目经验是不够的,通过项目来学习,那肯定是必须的,工作本身就是一个学习的过程。

但是工作三年不看书的话,学又能学到多少呢?更何况每个项目都很类似,一直处在舒适区,那真就是 5 年经验重复第一年的了。所以我不认同这句话:面试时强调自己的学习能力是工作能力不强的表现。 3 年经验的水平,完全有可能超过 5 年的。

如果你还没毕业,就已经天天在本站混了,其实你领先了一大步。都是混过大学的,天天充斥着 lol 和电视剧的陪伴,我只想说进入社会是要还的。最可怕的是什么呢?该还、还不还(这几个字别念错了)。时间是有的,就看你愿意付出不。下班后学习,周末学习,节假日别人玩的时候,在家敲代码,这样才能领先别人。

兴趣和擅长是一个良性迭代循环。你擅长某件事情,就会越喜欢它,越喜欢,就越愿意花时间,进而越擅长。此道理都懂,只是缺乏一个 trigger 。

如果你喜欢玩游戏的话,其实你可能非常适合做前端。玩游戏就是一个反馈机制,前端工作的反馈,相对其他工作来说也是非常及时的。代码一改,网页一刷,就看到效果了。擅长、优越感、成就感通常都是连在一起的。每看完一本书,我都觉得很有成就感。每敲完一个库,也有成就感。

以上纯属一家之言,每个人的学习习惯、方式、态度都不一样。先端正态度、找到自己的学习方法,进而养成坚持下去的习惯。最后说一句,你我共勉:只要你走在正确的道路上,不管、走得多慢,都是前进!

收工。

不好意思,不小心打开了前置摄像头!

2295 次点击
所在节点    程序员
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/327834

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX