如何学JavaScript?前辈的经验之谈


Posted in Javascript onDecember 28, 2016

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

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

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

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

10本书读2遍的好处,应该大于一本书读20遍。
10本书的交集,那就是基础知识的核心,而并集那就是所有的知识。
好书当然要多读,反复读。但是只读一本是不行的。
因为每本书的侧重点都不一样。从不同的侧面,去理解一个知识点,是很有意义的。
所以特别佩服印度人,他跟你讲英文,你一个词语没听懂,他会蹦出n个同一意思的单词,你听懂一个,就ok了。
看书也是这样的,某一块讲得不透彻,不用担心,其他书籍可以帮助你来了解。

第二个问题是,书籍推荐。
个人觉得不错的,没事可以翻翻的。书籍如下:

>《javascript面向对象编程指南》,风格轻松易懂,比较适合初学者,原型那块儿讲得透彻,12种继承方式呢。

>《js权威指南》、《js高级程序设计》,这两本书经典是经典,但是太厚,适合把其中任意一章都当成一本书来读。洋洋洒洒,很难一口气看完。比较适合当做参考书。

>《你不知道的javascript》狙击js核心细节,闭包、原型、this讲得都还清楚。目前《中册》也出了,还在看。

>《js设计模式与开发实践》js设计模式也是要学的,此书把js的设计模式讲得非常清晰,一点不晦涩,看起来没多少难度。

>《正则指引》,分析源码时,如果正则表达式不懂,没法进行下去的。此书相对来说讲得比较清晰。

>《基于MVC的JavaScript Web富应用开发》,看完后,基本能写出自己的mvc框架了。是本好书。

>《javascript函数式编程》,js是一门函数式语言,此书是函数式编程一个入门,函数是一等公民那是非常重要的。

>《js忍者秘籍》,jq作者写的,没有传说中的那么难读,话说就算你看完并理解所有知识点,也不会达到世界高手级别的。因为你还没有做到随心所欲。

>《javascript框架设计》,如果初看此书,会觉得此书有罗列代码之嫌。在我看来,此书讲究的是框架的全局观。

以上书籍是我认为是成就高手之路上必须看的,也需要反复看。

css相关的书籍,说实话我看得比较少,总共有六七本吧。有两本必须推荐一下:

>《css权威指南》,css基础知识点那是讲得非常清楚的。什么层叠优先级、line-height啥的。不是随便一本书都敢叫“权威指南”的。

>《css揭秘》此书我也是不断的看,此书才不屑于全面讲css3各属性呢。css规范文档能讲的,它只会讲你最不在意的。此书解决的47问题,解决思路和解决方案同等重要,很有启发性。以上各书你都可以不买,至少买本此书吧。

第三个问题,怎么看。

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

说一个学习理论。
比如说学英语,有个开水理论。
词汇量必须达到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源码。

最后说句,如果你简历上能如期写上那几句话后,必须是大神。加油吧。

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

>有人问我前端工作经验事情。

没几年。三年多。

>初学者或新手(beginner)怎么办?

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

看视频是有好处的,首先它是一种被动学习方式。
我最开始的入门也是看视频来的,只需要看就行了。
一遍没懂,再放一遍,我基本上是1.5倍数去看的。
而读书是一种主动方式,需要自己一页一页翻。需要自己主动的去理解。
而很多东西,也许只是视频老师一句话,就能突出的重点,需要我们自己去解读。
还有另一件事情是,比如发现自己某个知识点不太清楚,可以单独去百度。
比如this,文章很多的。这种学习方式也是快速掌握知识点的好办法。

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

>看书和分析源码的时机
但已经工作一年半载时,正是提高的好时候,此时可以去看书了。全面系统的梳理知识点,扫清自己的盲区。
如果只是靠项目经验是不够的,通过项目来学习,那肯定是必须的,工作本身就是一个学习的过程。
但是工作三年不看书的话,学又能学到多少呢?更何况每个项目都很类似,一直处在舒适区,那真就是5年经验重复第一年的了。
所以我不认同这句话:面试时强调自己的学习能力是工作能力不强的表现。
3年经验的水平,完全有可能超过5年的。

>没有时间去学习?

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

>兴趣问题?

兴趣和擅长是一个良性迭代循环。你擅长某件事情,就会越喜欢它,越喜欢,就越愿意花时间,进而越擅长。
此道理都懂,只是缺乏一个trigger。如果你喜欢玩游戏的话,其实你可能非常适合做前端。
玩游戏就是一个反馈机制,前端工作的反馈,相对其他工作来说也是非常及时的。代码一改,网页一刷,就看到效果了。
擅长、优越感、成就感通常都是连在一起的。每看完一本书,我都觉得很有成就感。每敲完一个库,也有成就感。

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

以上就是本文的全部内容,谢谢作者的分享,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery 扩展方法
May 06 Javascript
多浏览器兼容性比较好的复制到剪贴板的js代码
Oct 09 Javascript
jQuery EasyUI API 中文文档 - TreeGrid 树表格使用介绍
Nov 21 Javascript
javascript阻止浏览器后退事件防止误操作清空表单
Nov 22 Javascript
Jquery对象和Dom对象的区别分析
Nov 20 Javascript
JS实现文字掉落效果的方法
May 06 Javascript
php结合imgareaselect实现图片裁剪
Jul 05 Javascript
JavaScript中Array对象用法实例总结
Nov 29 Javascript
jQuery实现的点击图片居中放大缩小功能示例
Jan 16 jQuery
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
Jun 17 Javascript
vue如何使用rem适配
Feb 06 Vue.js
原生Javascript+HTML5一步步实现拖拽排序
Jun 12 Javascript
js+div+css下拉导航菜单完整代码分享
Dec 28 #Javascript
javascript实现简单的ajax封装示例
Dec 28 #Javascript
前端面试知识点锦集(JavaScript篇)
Dec 28 #Javascript
一句jQuery代码实现返回顶部效果(简单实用)
Dec 28 #Javascript
Web前端框架bootstrap实战【第一次接触使用】
Dec 28 #Javascript
hovertree插件实现二级树形菜单(简单实用)
Dec 28 #Javascript
jQuery如何跳转到另一个网页 就这么简单
Dec 28 #Javascript
You might like
PHP+SQL 注入攻击的技术实现以及预防办法
2010/12/29 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
2010/11/23 Javascript
基于jquery实现的文字淡入淡出效果
2013/11/14 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
2014/10/31 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
JavaScript实现三级联动菜单实例代码
2017/06/26 Javascript
JavaScript实现修改伪类样式
2017/11/27 Javascript
axios发送post请求springMVC接收不到参数的解决方法
2018/03/05 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
2019/05/05 Javascript
nodejs二进制与Buffer的介绍与使用
2019/07/11 NodeJs
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
JavaScript代码简化技巧实例解析
2020/09/09 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
对python使用http、https代理的实例讲解
2018/05/07 Python
深入理解Django自定义信号(signals)
2018/10/15 Python
python学生管理系统开发
2019/01/30 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
Python OpenCV中的numpy与图像类型转换操作
2020/12/11 Python
兰芝美国网上商城:购买LANEIGE睡眠面膜等
2017/06/30 全球购物
蛋白质世界:Protein World
2017/11/23 全球购物
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
Speedo澳大利亚官网:全球领先游泳品牌
2018/02/04 全球购物
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
企业法人授权委托书
2014/04/03 职场文书
国旗下的演讲稿
2014/05/08 职场文书
会计求职信范文
2014/05/24 职场文书
质量安全标语
2014/06/07 职场文书
百日安全生产活动总结
2014/07/05 职场文书
财务助理岗位职责范本
2014/10/09 职场文书
律政俏佳人观后感
2015/06/09 职场文书
公司员工培训管理制度
2015/08/04 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python