从年初开始正式学习前端到现在已有接近10个月的时间了。从刚开始的看啥都蒙圈,到现在可以带别人一起做项目帮别人解决问题,真的是鬼知道我经历了什么。虽然现在的水平还不够,需要学习的知识还很多,但和十个月前相比,我有了明确的方向和充足的信心,踏实的走好接下来的每一步。
这段日子以来的成长,和正确的学习姿势有很大的关系。最初确定学习路线和方法的时候,借鉴了许多别人的经验,也和男票针对自己的情况做了计划———不管这世界纷纷扰扰~~先看书,打牢基础。这篇文章就是对我看过的、和正在看的书,做的简介和评价,如果有可能,希望也能对刚入门的同学提供些参考。
啰里啰嗦的回忆杀
一路学习下来,越来越觉得做前端一定要切记浮躁,打好基础。提到前端,大家都会觉得简单易上手。语言本身的学习成本并不高,层出不穷的框架和工具更为coding提供了很多的便利。对一个0基础的选手,可能选个框架用些库,甚至直接copy别人的代码,就可以实现一些功能。
但我认为没有牢固的基础,是没办法达到很高的水平的。一旦遇到bug,可能都不知道从哪里下手排查,更不用说代码质量。安全性等更高的要求了。学习一门语言如果想打下坚实的基础,那就只有系统的去啃书,没有任何捷径可以走。啃书打基础是一个很漫长、枯燥并且没有成就感的过程。但是一旦过了这个阶段,掌握了语言的原理,就会有一种豁然开朗的感觉。因为不管各种框架工具怎么变,它始终是基于语言本身的。理解语言的原理,那些新东西就都是浮云,就可以做到以不变应万变。
别的不再啰嗦,接下来要分享的就是,我对这段时间看过的书做的总结和评价。首先对这些书分两类,第一类适合0基础选手入门,第二类适合进阶。
第一类 入门
Javascript高级程序设计 第三版(江湖名号:红宝书)
从它的江湖名号就可以看出它的地位了不是。此书结构清楚,内容全面,并且行文简单易懂逻辑流畅,非常适合新手阅读。尤其对于JS的原型和继承,这本书应该是讲的最浅显易懂、最透彻的一本书。
虽然这本书被分类在入门里,但实际上它是任何阶段都适合读的书,每次看完都会有新的理解,因此属于我的手边常备书之一。
对于这本书,我推荐系统、完整的读两遍,之后在遇到疑问的时候有针对性的阅读(为了彻底理解原型和继承,这本书第六章我反反复复读了N遍。
第一遍略读大概,只要能在读过之后对JS这么语言有个大概的概念就可以。过程中可以结合看廖雪峰的JS教程博客,便于理解。
第二遍细读,力求掌握核心原理。像DOM相关的操作方法或者某个数据类型的方法不必硬记,只需要知道能做什么就好,等实践多了自然会记住
这里私心对比一下JavaScript权威指南(犀牛书),它也是很多人推荐的JS入门书籍。我看了一点电子版的犀牛书,个人觉得这个并不很适合通读。读红宝书的过程就像有一个老师手把手的教你这里为什么这样,那里为什么那样,读犀牛书更像是个参考手册直接告诉你这个可以这样,那个可以那样。所以我认为犀牛书更适合做工具书用来查找,红宝书更适合通读。
CSS权威指南
这本书我基本上是从头到尾撸了一遍,内容很全,适合作为CSS参考手册,也是属于手边常备系列。
此书关于盒模型、各种居中、line-height、文本格式等内容有很详细的讲解。建议阅读盒模型、line-height和文本格式部分,读完之后包你理解各种情况的对不齐。
这本书有个缺点,不知道是原作者的问题还是翻译的问题,很多内容讲的绕来绕去非常啰嗦,容易让人陷入各种名词之中出不来。所以读的时候,一定要有耐心啊~~
第二类 进阶
过了第一阶段我们基本不会再遇见红宝书一样体量的书了(欢呼。但是不要高兴的太早,相对于入门阶段,进阶阶段需要关注的内容是很多的。不但要深入理解核心原理,还要跟上最新的语言标准,追求高质量的代码,关注我们的产品性能,利用工具提高工作效率,与后端交互,或者也学些后端?哦其实这还不是全部。于是我们来看看之前说的那句话:前端入门容易。没错第一阶段确实容易。但其实很多人都不知道这句话后面还有一句:“精通难”。But不要慌,只要 学习方法对了,剩下的也就是时间问题了对吧~let’s start again~
JavaScript语言精粹(蝴蝶书)
看到这本书,不禁想对比一下它和红宝书的厚度…非常薄的一本!
蝴蝶书是在进阶阶段我建议阅读的第一本书。书中并没有太多新内容,更多的是作者以自己的角度讲了JS这门语音中的精华部分,相当于一本重点知识手册。
蝴蝶书语音简练,内容都是重点,需要在掌握JS基本知识的基础上才能更容易理解。
你不知道的JS(上卷)
整本书只讲了两个内容,但可以算是JS中最难理解、最重要的内容:
- 闭包
- 原型
记得这本书是源于国外的开源社区,所以整本书的写作风格有点老美式的插科打诨。这本书提供了新的角度去让我们理解闭包和原型,有些观点甚至会颠覆之前的认知,真的是“我不知道的JS”。
这本书也不算厚,但是可以说字字玑珠且连贯性较强,建议阅读的时候不要着急,消化了前面的知识再继续学习。
ES6标准入门
阮一峰著,已开源,已出第三版。ES6是自JS诞生以来,改动最大的一个版本,读完之后甚至感觉学了一门新的语音。它的新特性主要体现在
- 填自己的坑
- 吸收其他语言的精华为己用
虽说改动很大,但是在基础牢固的情况下,掌握起来还是不难的。
对于填坑的部分,其实就是很多在JS设计之初的漏洞或者不优雅的地方,ES6对他们做了修补和完善。所以对于这样的新内容,内部原理是没变的,只不过是以前需要兜兜转转避开的坑,现在官方给你填平了。
对于吸收其他语言的部分,这可以算是全新的内容。不过既然是很流行的思路,那么一定有很多值得学习的地方,还可以通过这部分顺带学到了其他语言的点子,岂不美哉。
其他关于ES6的资料,可以找MDN官方文档,只不过它把ES6直接融入JS中,并没有单列出来。另外红宝书的作者已经出版了一本针对ES6的书,英文原版有开源。据说红宝书第四版也要在明年出版了,会新增ES6的部分,可以关注。
编写可维护的JavaScript
这本书是红宝书作者的所著,与红宝书保存了一样的写作风格。这本书偏向于实际工作,让我们在平时写代码的时候养成良好的习惯,让我们的代码更容易调试,在与他人合作时规避错误。文中的知识点是比较细碎的,但是并不难懂,掌握之后运用到实际工作中会减少很多不必要的麻烦。
然后其实代码风格这个东西嘛,我觉得并没有绝对的好坏之分。
前一阵子还跟男票有过分歧,他不喜欢在句末加分号,而且我一定要加;我喜欢用个关键字声明多个变量,他喜欢单个声明…
连JS大神之间都会有不同的意见,不用说我们了。我觉得自己一个人的时候保证自己的代码风格统一,在团队的时候与团队保持统一就好可以了。
高性能JavaScript
又是红宝书作者的大作。这本书从各个方面展示了的性能提升的策略,包括代码的加载、运行、DOM交互、页面生存周期等等。对于追求编写更高性能的JS代码的同学,这本书是一个不错的开始。
图解Http
作为一个前端程序猿,虽然不必精通通信原理,但是起码要做到大概了解HTTP通信过程中客户端与服务器之间的交互情况,能定位在前后端通信过程中的出现的问题。
这本书通过大量的示意图讲述通讯过程,是比较浅显易懂的Http入门书籍。想要深入研究的话还需另选其它书籍,这本书深度不够,只能让你达到大致了解的水平。
现在正在读的书
以上书籍都是我全部看过的,目前还没看完的有下面两本
学习JavaScript数据结构与算法
这本书的价值我认为并不大,因为对于JS来说,并不需要更复杂的数据结构。买这本书,我更多的是想看看通过JS如何实现一些常用的数据结构和算法,并不推荐。
node.js权威指南
最近开始看Node。前端的东西学过了也要接触后端。更何况平时就没少用node,希望自己可以更深入的掌握、使用它。
朴灵的深入浅出nodejs貌似评价很高,但是男票说不太适合新手看,于是就从现在这本开始,这本更加新手向。
我也是才开始看node的,进度比较缓慢,慢慢加油吧↖(^ω^)↗
关于技术博
如果是新手入门,还是推荐从看书开始。技术博更多的是针对具体问题的具体分析,新手阶段对语言都没有整体概念的时候,直接看技术博会有些不知所云。并且作者自身水平和写作能力参差不齐,某些情况下还可能造成误导。
我平时会看三个人的技术博,廖雪峰、张鑫旭、阮一峰。
- 廖雪峰的博客有很基础、系统的JS教程,值得一看。不过可能是面向新手的,内容深度不够,但胜在浅显易懂。
- 张鑫旭的博客比较偏向于应用,多是对某个问题的解决方案。它的文风很有趣,也会有些简单的小例子,而且会讲到一些生僻但有意思的知识点,值得了解。
- 阮一峰的博客也是新手向,能做到深入浅出,但是博客里会有一些表达含糊或者错误的地方,需要渎职辨别,不能盲目全信。
总之,我认为不应该把技术博当做系统学习的途径,它应该是书籍的碎片式补充。并且,对于技术博上知识也要带着质疑谨慎对待,不能盲目吸收。毕竟个人博不是官方标准,都是可能有错误的。吸收别人的观点之前,一定要在官方找到它的论述依据。
关于官方文档
不管框架还是工具,参考资料首选官方文档。
VUE系、element UI、Echart的官方文档都是友好到可以直接开撸型的。(吐槽下webpack的文档越看越晕
JS语法强推MDN,最新最全最权威,已经直接将ES6融进去了。建议阅读英文原文。
最后想说
最近越发觉得,学的东西越多,感觉自己不会的就越多。想想自己看红宝书的时候还没这种感觉,甚至觉得掌握红宝书,走遍天下都不怕!真的是图样图森破。你以为的结束,其实只是刚刚开始。
学习是一件好事儿。我欣喜于学到了新的东西,或者看到别人的观点颠覆了我的认知,这会让我觉得自己在前进。反而是没有新东西或者内容太简单了让人觉得不安。前阵子一直在给公司做一个B/S平台的DEMO,用了vue cli 和element ui做框架和组件库。虽然开发起来速度快得飞起,界面样式都很好看,完全可以满足需求…但是我就是会感到很虚…框架和组件库帮我们完成了很多的工作,使得我们可以仅仅关注于业务逻辑。
这似乎是好事,但换一种角度想,这说明框架和组件库做得好,而我们这些直接用别人成果的人,到底又有多少价值和成长呢?我觉得对于这些框架也好,库也好,会用可以,但不能依赖。除非能掌握别人的设计思想,不然别人的始终是别人的。项目做的好也是说明别人厉害,并不是你厉害。
那么此处应该扣题了。多看书,多看优秀的源码,自己不断成长才是正确的打开方式呀。
——本节完——