一点感悟:《Node.js学习笔记》star数突破1000+

时间:2023-01-31 22:21:18

写作背景

笔者前年开始撰写的《Node.js学习笔记》 github star 数突破了1000,算是个里程碑吧。

从第一次提交(2016.11.03)到现在,1年半过去了。突然有些感慨,想要写点东西,谈谈这期间的收获、心路历程,以及如何学习Node.js。

一点感悟:《Node.js学习笔记》star数突破1000+

一点感悟:《Node.js学习笔记》star数突破1000+

心路历程

笔者一直有做技术笔记的习惯,前几年零零散散的也写了不少Node.js的东西,只不过都存在evernote里。写着写着,觉得有必要系统地整理下,于是就有了这个项目。

粗略统计了下,总共提交了约60篇教程,以及将近300个范例脚本

一点感悟:《Node.js学习笔记》star数突破1000+

大部分的commit都集中2016年11、12月份,以及2017年上半年。这段时间其实项目组挺忙的,经常一周6天班,同时在两三个项目间来回切换。

写作的过程挺枯燥的,也有点累人,尤其经常只能抽大半夜或周末的时间来码字,经常写技术文章的同学应该能体会。不管怎么说,一路坚持了下来,感觉还是有不少收获。

1、技术积累。最初存在evernote里的只是零星的笔记,经过整理校对、进一步的思考以及延展性学习,零散的知识点逐渐串联成体系化的知识面。这比单单记住了数百个Node.js的API,以及枯燥的配置项更有用。

2、知识分享。写作的过程中,不少同样正在学习Node.js的同学或通过QQ,或通过私信表达了感谢。对笔者来说,这其实比star数的增加更有意义。

3、技术焦虑有所缓解。众所周知,前端领域变化太快,身处其中的从业者压力非常大,这也是前不久著名的“老子学不动了”的梗突然刷屏的原因。深入学习、思考,掌握学习的方法和规律,能够一定程度上缓解技术焦虑症。

4、意外收获。这期间,收到阿里云栖社区(专家博主)、腾讯云+社区的入驻邀请,多家知名出版社的撰稿邀请,在线教育平台(如慕课)的开课邀请等。

如何学习Node.js

2年前在SegmentFault社区上有人问过类似的问题《关于nodejs的学习?》,当时简单地回答了下。

  1. 实践是最好的学习方式,如果能把所学用到实际中去,效率比光学不练要高上很多。
  2. 遇到问题,学会使用google、*、官方文档。
  3. 学习node的障碍,大部分时候不是node本身,而是相关领域知识。

实践出真知,这点无需强调。遇到技术问题善用搜索引擎,也算是圈内共识了(初学者需要加强这方面意识)。

其实最难的是第3点,分辨你所遇到的问题。

举个例子,比如现在想学习 https 这个模块,不少初学者会显得一筹莫展,常见的问题有:

  1. 问题一:https、http、net 模块长得好像,API也差不多,它们之间是什么关系?
  2. 问题二:配置项里有一项是证书,这是个干嘛的?照着指引配好证书了,为什么浏览器会报错?
  3. 问题三:server本地跑得好好的,怎么部署到云服务器上就访问不了,明明可以ping通,端口也启动了,为什么提示拒绝访问?

正式回答问题前,先祭出一张网络分层架构图,请读者把它牢记在心。

一点感悟:《Node.js学习笔记》star数突破1000+

互联网基于分层架构实现,包括应用层、传输层、网络层、链路层、物理层。其中,前端开发者比较熟悉的是应用层(HTTP协议),如果想学习Node服务端编程,那么,至少需要对传输层(TCP)、网络层(IP)也有一定的了解。

对于网络的每个层次,Node.js基本都有对应的模块,比如https、http、net(TCP)、tls/crypto等。

前面列举的几个问题,都是对网络知识、服务器知识了解的欠缺导致的,而不是于Node.js的API有多复杂、难以理解。

这里直接回答问题:

  1. 问题一:http为应用层模块,主要按照特定协议编解码数据;net为传输层模块,主要负责传输编码后的应用层数据;https是个综合模块(涵盖了http/tls/crypto等),主要用于确保数据安全性;该用哪个模块应该很清楚了。
  2. 问题二:安全证书是PKI体系的重要一环,主要用于身份校验。本地调试用的证书如果是自己签署的话,浏览器会视为不安全并报错,可以参考 《HTTPS科普扫描帖》。
  3. 问题三:这种情况大概率是请求被防火墙拦截。ping走的是ICMP协议,由操作系统内核处理,能够ping通不代表TCP连接就能够建立成功,可以参考 《ping的使用与实现原理剖析

写在后面

编写《Node.js学习笔记》的过程收获了不少,也有不少感触,这里就不过多碎碎念。对于“如何学习Node.js”这个问题,其实有挺多东西想写,篇幅所限,后面的文章详细展开。

相关链接

Nodejs学习笔记
笔者个人博客

一点感悟:《Node.js学习笔记》star数突破1000+的更多相关文章

  1. Node.js学习笔记(3):NPM简明教程

    Node.js学习笔记(3):NPM简明教程 NPM常用操作 更新NPM版本 npm install npm -g -g,表示全局安装.我们可以指定更新版本,只需要在后面填上@版本号即可,也可以输入@ ...

  2. 系列文章--Node.js学习笔记系列

    Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- 简介及安装Node.js开发环境 Nodejs学习笔记(二)--- 事件模块 Nodejs学习笔记(三)--- 模块 Nodejs学 ...

  3. Node.js学习笔记(2):基本模块

    Node.js学习笔记(2):基本模块 模块 引入模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在No ...

  4. Node.js学习笔记(1):Node.js快速开始

    Node.js学习笔记(1):Node.js快速开始 Node.js的安装 下载 官方网址:https://nodejs.org/en/ 说明: 在Windows上安装时务必选择全部组件,包括勾选Ad ...

  5. Node.js学习笔记(4):Yarn简明教程

    Node.js学习笔记(4):Yarn简明教程. 引入Yarn NPM是常用的包管理工具,现在我们引入是新一代的包管理工具Yarn.其具有快速.安全.可靠的特点. 安装方式 使用npm工具安装yarn ...

  6. Node.js学习笔记(一)

    1.回调函数 node是一个异步事件驱动的平台,所以在代码中我们经常需要使用回调函数. 例: setTimeout(function(){ console.log('callback is calle ...

  7. Node.js学习笔记(一):快速开始

    最近接了一个node项目,虽然最后顺利完成了,但是由于第一次实战,整个过程是赶出来的,许多地方一知半解.现在项目结束了,就静下心来系统地学一学,理一理,读书不忘拿笔,既然读书了,当然就要记点东西.一方 ...

  8. Node.js学习笔记(一)基础介绍

    什么是Node.js 官网介绍: Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js us ...

  9. Node.js学习笔记(四): 全局对象

    在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global 对象的属性. 这 ...

随机推荐

  1. sentinel搭建redis集群经验总结

    一.protected-mode默认情况下,redis node和sentinel的protected-mode都是yes,在搭建集群时,若想从远程连接redis集群,需要将redis node和se ...

  2. 用@RequestMapping映射请求

    DispatcherServlet接受一个web请求之后,将请求发送给@Controller注解声明的不同控制器类. 这个调度过程依赖控制器类及其处理程序方法中声明的各种@RequestMapping ...

  3. 指针之 *((volatile unsigned long *)(x))解析

    今天重新温习了一下C语言的指针部分,突然想到了经常会碰见的一种宏定义:#define PGAS (*((volatile unsinged long *)(x))) 在解析该宏定义前,先看看指针变量的 ...

  4. 03 - 替换vtkDataObject中的GetProducerPort()方法 VTK 6.0 迁移

    VTK6 引入了许多不兼容的变.其中之一是删除vtkDataObject中所有有关管道的方法.其中的一个方法就是GetProducerPort(). 一般,先前使用这个方法如下例子: vtkPolyD ...

  5. HDU 1698 Just a Hook (段树更新间隔)

    Problem Description In the game of DotA, Pudge's meat hook is actually the most horrible thing for m ...

  6. S3C2440外部中断系统详解

    个中断源的请求.提供这些中断源的是内部外设,如DMA控制器.UART.IIC等等.在这些中断源中,UARTn.AC97和EINTn中断对于中断控制器而言是“或”关系.任意一个中断发生都会触发总中断 当 ...

  7. SVN 、Git、Github的使用

    1.1 SVN 总结以及使用建议 每一次保存历史记录实际上就是一次提交 什么时候去保存历史记录? 完成了一个具体的功能模块 代码运行没有bug 当天工作结束提交一次 没有 bug 的前提下去提交一次 ...

  8. 构建自己的 PHP 框架

    这是一个系列的文章,项目地址在这里,欢迎大家star. 这个框架前一部分比较像Yii,后一部分比较像Laravel,因为当时正在看相应框架的源码,所以会有不少借鉴参考.捂脸- 这个框架千万不要直接应用 ...

  9. 解决 MySQL 比如我要拉取一个消息表中用户id为1的前10条最新数据

    我们都知道,各种主流的社交应用或者阅读应用,基本都有列表类视图,并且都有滑到底部加载更多这一功能, 对应后端就是分页拉取数据.好处不言而喻,一般来说,这些数据项都是按时间倒序排列的,用户只关心最新的动 ...

  10. Tkinter grid() 方法

        Tkinter grid() 方法:这个的几何管理器组织在父部件的表状结构中的部件.   这的几何管理器组织表状结构中的小部件的父部件. 语法: widget.grid( grid_optio ...