EP24-zake学node

260 阅读3分钟

本文内容来源于网络,个人归纳整理,只为理解记忆方便


1,npm

1,node_module困境

参考文档:

1,依赖地狱

A依赖于B,C依赖于B。
存在两个问题:

  1. 首先需要B本身支持多版本共存,对于不支持多版本共存的库(例如core-js),需要尽早进行报错提示。
  2. 如果B支持多版本共存,需要确保AC能够正确的依赖不同版本的B。

2,npm如何解决多版本共存的问题

通过node加载模块的路径查找算法和node_modules的目录结构来配合解决。

  1. 路径查找算法 递归向上查找node_modules里的package。该算法的两个核心:1,优先读取最近的;2,递归向上查找。
  2. node_modules的目录结构

2, npm命令

1,npm查看全局包的存放位置

npm root -g

2, node基础

1,node内存管理

xx, node内存溢出

在node中,通过JavaScript使用内存时,只能使用部分内存(64位系统:1.4G,32位系统:0.7G),在打包构建的过程中,会占用很多的系统资源,如果超出了V8引擎对node默认的内存限制大小,就会产生内存泄漏(JavaScript heap out of memory)的错误. 解决方法
放宽内存大小限制。

  • 在node启动时,传递 --max-old-space-size 或者 --max-new-sapce-size来调整内存大小的使用限制。
  • 使用increase-memory-limit插件 安装完这个插件之后,在工程目录执行increase-memory-limit,命令行出现错误,
["'node --max-old-space-size=10240"' 不是内部或外部命令,也不是可运行的程序](https://my.oschina.net/u/133911/blog/4435743)

需要在node_modules文件下搜索"%_prog%"替换为%_prog%(即去掉双引号),
在node_modules文件夹下搜索文件,需要先在文件-首选项-设置 搜索 search:exclude ,在这里去除**/node_modules,如图:

image.png

2,node模块

JS模块的基本单位是单个的JS文件,但复杂的模块往往由多个子模块组成,为了便于管理和使用,可以把多个子模块组成的多模块称作包,并把所有子模块放在同一个目录里。
在组成同一个包的所有子模块里,需要一个入口模块,入口模块的导出对象被作为包的导出对象。

3,node文件操作

4,node网络操作

5,node进程管理

6,node异步编程

其他

1,为什么基于事件驱动的服务器能实现高并发

典型的后端服务,在逻辑上可以分为两层。

  • 与业务无关的通信层,负责socket连接的创建和管理,负责bind/listen/accept/send/recv...
  • 通信层上面的业务逻辑层,负责被动响应请求,或主动推送业务消息。
    通信层特点:
  • 都是IO行为,几乎不大消耗CPU。
  • 连接数很多,可能同时有10k甚至100k个TCP连接。
  • 通信协议种类少,decode/encode简单。
  • 外部网络是慢速IO。 业务逻辑层特点:
  • 少量CPU消耗,大部分时间在等待数据库或者其他网络服务返回。
  • 业务逻辑多。
  • 并发请求数,小于连接数。
  • 单个业务请求通常很快。