非科班出身如何Node.js

有朋友提问

  1. 狼叔,关注你和cnode很久了,最近有点迷茫,想请你指点下。
  2. 我的情况是这样的,非科班出身,从事前端工作4年,公司使用的技术栈是vue2vue-routervuexwebpack,目前的能力处理工作还是比较轻松,但是也很明确自己有很多不足,只是对于如何提升比较迷茫。
  3. 不足:
  4. 1、非科班出身,计算机基础薄弱
  5. 2、对当前使用的技术了解不够深入,很多东西只停留在会用的层面
  6. 3、对服务端了解较少,想学node,却不知道如何系统的学习

解答困惑:

1、计算机基础薄弱该如何完善自己的知识体系?

答:追逐长尾,所见所闻不懂的都去学就好啦。我是这样过来的,头几年每天14个小时+,很累,不过效果还可以。os,算法,数据结构,设计模式,编译原理,基本也就这些重点。做到每天都有进步就好,别贪多求快。数学和英文当然也是越狠越好的!

2、如何在技术上做更深入的探索?

答:技术人只关注技术,想法创意通常比较少。最简单的办法就是抓自己的痒,比我大学时和朋友们翻译过grails文档,所以对翻译有情节。为了翻译,我用node写了无数工具尝试,反复对比各种翻译工具,理解它们背后的设计。包括markdown里嵌html标签标识中英文,然后gulp编译成独立文档。甚至一度想上线卖服务。这种折腾真的很爽,甚至耽误了不少翻译。有时要警惕长尾,不要忘了自己的初衷

3、如何系统的学习node?

答:阶段

1/要会用,能完成工作任务
2/写点提高效率的工具
3/参与开源项目,甚至是node源码

应对方法

1/《node in action》看五遍,然后就去写吧,别管代码质量如何,能写敢写
2/多用些模块,理解它们,如果有机会就自己写一下,万一有很多人用你,我小弟写过一个地区选择加载的json数据,star数不少呢
3/给别人贡献代码,要去学别人的习惯,网上有git标准工作流和提pr方法,你要做的是精研该模块代码,关注issue,其他就是等机会。另外朴灵的深入浅出多读几遍,试着读node源码,你的理解会更好。推荐看看我写的《通过开源项目去学习》https://github.com/i5ting/Study-For-StuQ
4/跳出node范围,重新审视node的应用场景,对未来你的技术选项和决策大有裨益

  • 2.1 Node 用途那么多,我该从哪里学起?

答:如果有机会就直接上Web应用,如果没有机会就从前端构建,工具等方面开始做,慢慢引入更潮更酷的前端技术,自然就把Node引入进来了。不要急。

  • 2.2 Node Web 框架那么多,我该怎么选?

答:初学者推荐Express,如果有一定经验,推荐Koa。当然真正项目里还是推荐Eggjs和Thinkjs这样的框架。

  • 2.3 关于 Node 的书几乎都过时了,我该买哪本?

答:
1)Node in action和了不起的Node.js是入门的绝好书籍,非常简单,各个部分都讲了,但不深入,看了之后,基本就能用起来了
2)当你用了一段之后,你会对Node.js的运行机制好奇,为啥呢?这时候去读朴大的《深入浅出Node.js》一书就能够解惑。原因很简单,九浅一深一书是偏向底层实现原理的书,从操作系统,并发原理,node源码层层解读。如果是新手读,难免会比较郁闷。
3)实践类的可以看看雷宗民(老雷)和赵坤(nswbmw)写的书

如果你不着急,也可以等我的那本《更了不起的Node.js》,预计明年3月之后。