nodejs学习过程2之相关网站2
一、第一篇
以前学习 Node 尽管也能感觉到自己在不断进步,但是直到使用 Node 完成了一些有意思的项目之后才算系统掌握 Node。
使用 Node 来写 Web 方面的东西还挺有意思的,会碰到一些问题,在解决这些问题的过程中掌握 Node 是比较好的方式,因为掌握了本质的东西,再去学习工具相对轻松很多。
比如说要实现 Express 的功能,下面这些东西都很有机会接触到:
需要使用 Net(Node.js v8.2.0 Documentation)来处理基本的网络请求与响应
需要使用 TLS(Node.js v8.2.0 Documentation)来处理 HTTPS 协议
需要发送文本文件时要使用 File System(Node.js v8.2.0 Documentation)
需要发送图片时要使用 Buffer(Node.js v8.2.0 Documentation)
需要压缩内容时,要使用 Zlib(Node.js v8.2.0 Documentation)
需要进行测试时,要使用 Assert(Node.js v8.2.0 Documentation)
需要记录 log 时,要使用 Console(Node.js v8.2.0 Documentation )和 Process(Node.js v8.2.0 Documentation)
需要生成 Session 并存储在 Cookie 时,要使用 Crypto(Node.js v8.2.0 Documentation)
需要处理路径问题要使用 Path(Node.js v8.2.0 Documentation)
需要处理异步问题的时候还得自己写一个 promisify(Node.js v8.2.0 Documentation),当然现在 Node 已经原生支持这个函数
需要将程序拆分到不同模块时,要使用 Module(Node.js v8.2.0 Documentation)
在这个过程中,Stream(Node.js v8.2.0 Documentation)的概念贯穿始终
比如说要实现 Request,还能接触其他不同的东西:
除了 Net(TLS),DNS(Node.js v8.2.0 Documentation)、Domain(Node.js v8.2.0 Documentation)、URL(Node.js v8.2.0 Documentation)和 Query String(Node.js v8.2.0 Documentation)搭配使用会更加方便,当然有些自己实现也不难。
比如说要实现前后端分离,可能就不想使用 Net(TLS),而是选择 HTTP(Node.js v8.2.0 Documentation)和 HTTPS(Node.js v8.2.0 Documentation),毕竟前面的项目足够掌握好 Net 了,这个时候再换成 HTTP 花费不了什么时间。
其实这几个不算难,而且有很多现成的库可以使用,但是想系统掌握 Node,肯定要深入学习 Node 的核心知识。
学习库的用法可能见效快,更加容易收获满足感,但是最终还是要回来学核心知识的,库变化很快,但是核心变化是很缓慢的。而且上面列出的这些掌握之后,学习库也不会慢到哪里去,哪天想学习其他语言,也是能迁移不少的。
更新
增加一个相关联的回答:怎样有效地学习 Node.js?
第二篇
链接:https://www.zhihu.com/question/19793473/answer/270040903
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
以前回答了 如何系统地学习Node.js?,里面列出了系统掌握 Node 可以从哪方面入手,但是没有给出更加详细的路线,而这个问题很适合聊怎样有效地掌握 Node。
Node 常见的使用场景中,Web 和工具占了大头,所以这里以 Web 开发为例。而 HTTP 协议在 Web 开发中实在是太重要了,所以应该尽早掌握,看 HTTP权威指南 或者薄一点的 图解HTTP。拿到一段 HTTP 请求原始信息,能够分清楚 method, path, query string, headers 和 body 等。
在掌握了 HTTP 协议之后,可以使用现成的 Web 框架(比如 Express(稍微旧了点的书,但是还能看 Node与Express开发))写项目,先从简单的开始,熟练掌握之后再写相对复杂的。
比如留言板就非常简单,能提交留言的内容,能够显示提交之后的内容就行。实现需求的同时要能准确区分 HTTP 请求/响应信息的相关部分。
掌握留言板之后就可以考虑写 Todo,Todo 在留言板的基础上增加了修改、删除和标记完成的功能,其他部分基本上没有什么差异,同样地,需要区分 HTTP 请求/响应信息的相关部分。
接着可以考虑加上用户功能,这个时候需要 Session 和 Cookie,这个依然是 HTTP 协议的内容。并且数据如何关联也需要掌握,然后在 Todo 的基础上增加其他用户可以评论的功能,进一步掌握数据如何关联。
到了这一步就可以写规模稍微大一点的程序了,比如博客、论坛(参考 CNode:Node.js专业中文社区)等。写这些项目的过程中,一方面熟悉 HTTP 协议,一方面熟悉 Express 的用法。
这两个都熟悉之后可以进行下一步的学习,实现一个 Web Server,然后在自己的 Server 上重新写上面提到的项目,这个是最终的目标。实现的过程中需要用到 知乎用户:如何系统地学习Node.js? 里提到的那些库,一边实现,一边掌握这些库。
当然或许不知道如何实现,那可以换一种方式,掌握 Express 的实现方式,也就是读 Express 的源码,把 Express 的源码彻底搞懂(当然换一个框架也行,如果不知道选什么框架,那么就选 Express),这样上面的项目里面的代码背后发生了什么都能非常熟悉,这个时候自然很好地掌握了 Node Web 开发。