1node介绍1node应用场景1工具类gulpwebpackvite(node可以让js在服务端运行)2可以做服务端优化ssr3可以做中间层(解决跨域)问题,格式化数据)2性能非阻塞异步I/O(调用此方法后不会立即返回结果)事件驱动(发布-订阅模式)3优点在服务器语言如Java、PHP或.NET中,每个客户端都会为Connection创建一个新的线程。并且每个线程需要消耗大约2MB的内存。也就是说,理论上一台8GB内存的服务器最多可以同时连接4000个用户。Web应用要支持更多的用户,就需要增加服务器的数量,当然Web应用的硬件成本也会增加。NodeJs不会为每个客户端连接创建一个新的线程,而是只使用一个线程。当用户连接时,会触发一个内部事件。通过非阻塞I/O和事件驱动机制,Node.js程序也是宏观上并行的。使用Node.js,具有8GB内存的服务器可以同时处理超过40,000个用户连接。2node的全局对象和模块1globalglobal是一个全局对象,可以直接访问里面的属性:BufferprocesssetInterval,setTimeout,setImmediateconsolequeueMicrotask2module__dirname__filenameexportsmodulerequire()3进程常用属性或方法process.platformsystemprocess.killkillprocessprocess.exit退出processprocess.nextTick节点中的microtask当前在执行栈底部的优先级高于promiseprocess.cwd()当前工作目录可变,查看命令执行位置(__dirname当前文件所在的文件夹located,herepath不会改变)process.env环境变量(可以设置,比如process.env.NODE_ENV)process.argv执行时携带的参数4事件环机制重要的三个阶段timer存储timerpoll轮询处理I/OCallbackchecksetImmediate如果在I/O回调方法中,setImmediate优先于定时器执行,应该是poll后跟checknextTick,这被认为是微任务,不在事件循环中。节点11以上的macrotasks和microtasks的执行顺序与浏览器相同5BufferJavaScript语言本身只有string数据类型,没有binary数据类型。但是在处理TCP流或文件流之类的东西时,必须使用二进制数据。因此,在Node.js中,定义了一个Buffer类,用于创建一个专门用于存储二进制数据的缓冲区。在Node.js中,Buffer类是一个随Node核心一起发布的核心库。Buffer库为Node.js带来了一种存储原始数据的方法,让Node.js可以处理二进制数据,每当你需要在Node.js中处理I/O操作中移动的数据时,都可以使用Buffer库。原始数据存储在Buffer类的实例中。Buffer类似于整数数组,但它对应于V8堆内存之外的一块原始内存。Buffer属于全局属性,可以直接访问,读取文件,写入(二进制)数据,从硬盘读取都存储在内存中,buffer可以转为字符串,定义三种方式定义bufferletbuf1=Buffer.alloc(6);letbuf2=Buffer.from('Everest');letbuf3=Buffer.from([65,66,67]);buffer中常用的方法buff.toString()buff.fill()buff。slice()buff.copyBuffer.concat()Buffer.isBuffer()indexOf
