如何系统地学习Node.js?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何系统地学习Node.js?相关的知识,希望对你有一定的参考价值。

对于刚接触Node.js的新手来说,第一步无非是打好基础,你需要弄明白以下事情:

javascript 的特性和语法。假如你对 JavaScript 还不熟悉的话,推荐书籍及链接:

JavaScript 推荐书籍列表

深入理解JavaScript系列

Node.js 是什么?Node.js与JavaScript的区别是什么?

Node.js的优点?Node.js的缺点?

Node.js适用场景?Node.js不适用的场景?

Node.js的基本语法。Node.js的特性:

单线程

异步 IO

事件驱动

npm 是什么?npm的基本使用

REPL

等等

其实上面的内容,大部分Node.js的书籍都有介绍。基本了解了Node.js后,我们可以写一些 hello world 的程序:

搭建一个 HTTP 服务器,返回 hello, world 。(使用 HTTP 模块)

读取一个 txt 文件,将内容显示到命令行中。(使用 fs 模块)

等等

第二步

你也许想,Node.js 只有那些少得可怜的核心模块能做什么呢?别担心,npm 上目前有近 7W 的第三方模块,月下载量高达 2.1亿 (2014—4—20 数据)… 这才是 Node.js 的活力所在。当你对Node.js已经了解的差不多了,并且按耐不住跃跃欲试了。这个时候,我们不妨用 Node.js 的第三方模块做些好玩的事情:

搭建一个微博网站

搭建一个博客网站

搭建一个在线聊天室

写一个简单的爬虫

调用一些网站的API做一些好玩的东西

等等

但是,并不是说 Node.js 只能做以上事情,几乎其他语言能做的事情 Node.js 都能做,而且有些情况下能做的更好。

第三步

当然,就像学 js 也不能只会用框架一样,学习 Node.js 也不能只会用外部模块。这个时候,我们需要回头深入了解下 Node.js 核心模块的用法。说白了,就是好好看 Node.js 官方 API 文档。看文档是码农必备技能,英语不好的童鞋浏览器装个划词翻译的插件。

第四步

多实践。不管是用核心模块还是外部模块,尝试用 Node.js 解决某个问题或者替换掉以前用其他语言写过的代码。

读源码。这里说的读源码并不是说上来就去读 Node 或者其他较大的框架的源码。这个时候,挑一些简单的只实现某个特定功能的工具模块的源码读,这种模块的代码通常在几百行,阅读起来并不是很困难,但是却能涨不少的姿势。比如:

underscore (学习 JavaScript 的语法和技巧)

等等

第五步

坚持第四步。在使用 Node.js 时发现没有合适的模块选择或者选择的模块功能不尽人意,这个时候你可以尝试去创建一个模块或者修改现有的模块,并且使用 npm 发布自己的模块或者去该模块的 GitHub  上提 PR 。

第六步

多实践。这个就不用解释了

读 Node 源码及较大的框架的源码。提高必备

多关注下 GitHub 上的牛人

重复第1-6步

参考技术A

1.《nodejs入门》,才38页,很好,书中项目做一下,学会基础

2.《nodejs开发指南》。180多页,很好,书中项目做一下,知道基础,及基本的配合express,jquery,bootstrap,数据库MongoDB

另附一些node实现书中例子的一些变化使用Express3.0实现<Node.js开发指南

3.开始看express创建初始项目的源代码对比2中的书,发现express更新后新的特性:Migrating from 3.x to 4.x · strongloop/express Wiki · GitHub

看express官网api

英文:Express 4.x - API Reference

中文:Express - api参考

4.之后发现,一个系列课程,从零开始nodejs系列文章:从零开始nodejs系列文章

其中 文章: Node.js开发框架Express4.x:Node.js开发框架Express4.x ,详细介绍了express4项目的基本内容,很好

文章:用Nodejs连接mysql:用Nodejs连接MySQL,介绍mysql与node基本,及数据库连接池,宕机,连接超时等node问题解决办法,node-mysql官网也有相应英文解决办法

5.node+json:node.js里面怎么创建和解析JSON格式的文件?

更全的是这一个How to parse JSON using Node.js? 但要注意如果require json,只加载一次,更新之后,再使用,可能还是老版本

json不好查看的问题:读写 JSON 文件 · Issue #73 · zhanhongtao/blog · GitHub

6.node邮件验证:Nodejs发邮件组件Nodemailer

选择适合的Node.js授权认证策略

7.很全的node module Modules · joyent/node Wiki · GitHub

8.文件操作,要么官方文档:File System Node.js v0.12.2 Manual & Documentation,

或者node基础-文件系统node.js 文件操作,有一个要注意的是 存储文件时,比如writefile写路径 要使用path.join(__dirname, “相对于当前文件路径”); 如path.join(__dirname, "../upload/recordList/" + generateID("record") + ".json");,后端要采用这种dirname的形式,前端可以直接写相对于当前文件路径的形式

参考技术B

如果你是前端开发工程师,你本地电脑上不可避免的要安装 Nodejs,作为工具也好,作为服务器也好,要帮助你做掉很多又脏又累的事情,比如 less/scss 的编译,ES6/7 到 ES5 的转换,Javascript 代码的压缩合并,切页面调试样式的热更新,无论是通过社区迅速更新换代的 Grunt/Gulp/Webpack,还是通过自己集成或者定制到本地的其他模块,Nodejs 的这个运行环境都是你得力的助手。如果你是后端开发工程师,比如之前是开发 php,Java,最近转行做 Nodejs 或者想要增加一个语言技能才来学习 Nodejs,你也不可避免的要去了解 ES5/6/7 或者说 Javascipt 的整个语法概念,去浏览 Nodejs 的各个 API,然后基于 Nodejs 之上的一些流行框架,比如 Express/Koa,甚至是阿里开源的 Egg,用你既有的后端开发经验,对于 Web 服务层交互的知识,再套上这些框架的 API,来玩票性质的搭建一些子项目运行一些产品业务。如果你是运营或者产品经理,但是你已具备一些基本的开发技能,比如 html/CSS/Javascript,甚至是对 Linux 主机的系统使用,域名解析也有一些经验,你可能也更愿意在不去学习另外一种全新的语言下,来借助 Nodejs 搭建你的 Web 服务,帮你的小点子小创意快速上线测试,获取一些用户的反馈或者价值验证,事实上我认识的不少产品经理对 Express/React/Vue 这些很喜欢,能高效的帮他们实现一些产品原型的测试。以上举例,是为了说明影响你涨薪也就是职业发展的其中一个因素,就是某项技能的深度,或者是某些技能的广度,这些技能包含但不限于前端后端或者产品,不要给自己设限,从事某个工种不代表你只可以钻研这个工种,就拿前端举例,既然本地有了 Nodejs 的运行环境,那么适度的往下扩展技能树是顺水推舟的事情,而对 Nodejs 很感兴趣的无论任何职业的人来说,什么时候学习它都不晚,因为整个互联网经过几十年的发展目前的现状就是, Javascript 成为了 Web 层最容易入门使用且最被工业标准和厂商推广的语言,掌握了这个语言,就掌握了 Nodejs 的 1/3,剩下的 2/3 分别是 HTTP 知识和 Nodejs 本身的运行机制和系统能力。

以上是关于如何系统地学习Node.js?的主要内容,如果未能解决你的问题,请参考以下文章

Node.js如何入门?系统学习路径分享

Node.js

Node.js 介绍及学习

您将如何实现Node JS身份验证系统

文件系统(node.js学习笔记)

如何在 Node.js 中最好地创建 RESTful API [关闭]