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

杨济
• 阅读 9509

写作背景

笔者前年开始撰写的《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、stackoverflow、官方文档。
  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+

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Stella981 Stella981
3年前
Python+Selenium自动化篇
本篇文字主要学习selenium定位页面元素的集中方法,以百度首页为例子。0.元素定位方法主要有:id定位:find\_element\_by\_id('')name定位:find\_element\_by\_name('')class定位:find\_element\_by\_class\_name(''
Wesley13 Wesley13
3年前
VBox 启动虚拟机失败
在Vbox(5.0.8版本)启动Ubuntu的虚拟机时,遇到错误信息:NtCreateFile(\\Device\\VBoxDrvStub)failed:0xc000000034STATUS\_OBJECT\_NAME\_NOT\_FOUND(0retries) (rc101)Makesurethekern
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Stella981 Stella981
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Easter79 Easter79
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0