node.js基础知识汇总


Posted in Javascript onAugust 25, 2020

一、node介绍

1.node的应用场景

  • 工具类 gulp webpack vite (node可以让js运行在服务器)
  • 可以做服务端 优化ssr
  • 可以做中间层 (解决跨域问题,格式化数据)

2.性能

  • 非阻塞
  • 异步I/O(当这个方法调用完毕后不会立即返回结果)
  • 事件驱动(发布订阅模式)

3.优势

在Java、PHP或者.NET等服务器语言中,会为每一个客户端连接创建一个新的线程。而每个线程需要耗费大约2MB内存。也就是说,理论上,一个8GB内存的服务器可以同时连接的最大用户数为4000个左右。要让web应用程序支持更多的用户,就需要增加服务器的数量,而web应用程序的硬件成本当然就上升了。

NodeJs不为每个客户连接创建一个新的线程,而仅仅使用一个线程。当有用户连接了,就触发一个内部事件,通过非阻塞I/O、事件驱动机制,让Node.js程序宏观上也是并行的。使用Node.js,一个8GB内存的服务器,可以同时处理超过4万用户的连接。

二、node的全局对象和模块

1.global

global是全局对象,可以直接访问里面的属性

里面有:

  • Buffer
  • process
  • setInterval,setTimeout,setImmediate
  • console
  • queueMicrotask

2.模块

  • __dirname
  • __filename
  • exports
  • module
  • require()

三、process常用属性或方法

process.platform 系统

process.kill 杀进程

process.exit 退出进程

process.nextTick node中的微任务 当前执行栈的底部 优先级比promise高

process.cwd() 当前的工作目录,是可变的,看命令在哪里执行 (__dirname当前文件所在的文件夹,此路径不会发生变化)

process.env 环境变量(可以set,例如process.env.NODE_ENV)

process.argv 执行时所带的参数

四、事件环机制

node.js基础知识汇总

重要的三个阶段

timer 存放定时器

poll 轮询处理I/O回调

check setImmediate

如果在 I/O 回调的方法里,setImmediate优先于 timer 执行

应为 poll 接下来是 check

nextTick 算是一个微任务,不在事件环中

在node 11 以上 宏任务与微任务的执行顺序与浏览器一样

五、Buffer

JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。

但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。在 Node.js 中,Buffer 类是随 Node 内核一起发布的核心库。Buffer 库为 Node.js 带来了一种存储原始数据的方法,可以让 Node.js 处理二进制数据,每当需要在 Node.js 中处理I/O操作中移动的数据时,就有可能使用 Buffer 库。原始数据存储在 Buffer 类的实例中。一个 Buffer 类似于一个整数数组,但它对应于 V8 堆内存之外的一块原始内存。Buffer属于global上的属性可以直接被访问,读取文件,写入(二进制)从硬盘中读取的数据都存到内存上,buffer可以和字符串相互转化

定义buffer的三种方式

let buf1 = Buffer.alloc(6);
let buf2 = Buffer.from('珠峰');
let buf3 = Buffer.from([65,66,67]);

buffer中常用的方法

  • buff.toString()
  • buff.fill()
  • buff.slice()
  • buff.copy
  • Buffer.concat()
  • Buffer.isBuffer()
  • indexOf

以上就是node.js基础知识汇总的详细内容,更多关于node.js基础知识的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
Oct 20 Javascript
jquery 跳到顶部和底部动画2句代码简单实现
Jul 18 Javascript
jQuery客户端分页实例代码
Nov 18 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
May 27 Javascript
原生javascript实现图片按钮切换
Jan 12 Javascript
javascript实现列表滚动的方法
Jul 30 Javascript
基于javascript实现listbox左右移动
Jan 29 Javascript
【经典源码收藏】jQuery实用代码片段(筛选,搜索,样式,清除默认值,多选等)
Jun 07 Javascript
JS实现图片上传预览功能
Nov 21 Javascript
js定时器+简单的动画效果实例
Nov 10 Javascript
javascript将非数值转换为数值
Sep 13 Javascript
对vue中v-if的常见使用方法详解
Sep 28 Javascript
基于JS实现快速读取TXT文件
Aug 25 #Javascript
Vue实现简单的拖拽效果
Aug 25 #Javascript
浅谈JavaScript节流和防抖函数
Aug 25 #Javascript
JS实现拖动模糊框特效
Aug 25 #Javascript
PHP读取远程txt文档到数组并实现遍历
Aug 25 #Javascript
JS轮播图的实现方法2
Aug 25 #Javascript
JS轮播图的实现方法
Aug 24 #Javascript
You might like
php开启openssl的方法
2014/05/15 PHP
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
2018/09/26 PHP
PDO::getAvailableDrivers讲解
2019/01/28 PHP
js对象之JS入门之Array对象操作小结
2011/01/09 Javascript
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
2011/07/31 Javascript
nodejs批量修改文件编码格式
2015/01/22 NodeJs
深入理解JavaScript系列(39):设计模式之适配器模式详解
2015/03/04 Javascript
jquery仅用6行代码实现滑动门效果
2015/09/07 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
2016/10/07 Javascript
jQuery电话号码验证实例
2017/01/05 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
2017/09/19 Javascript
axios post提交formdata的实例
2018/03/16 Javascript
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
Vue infinite update loop的问题解决
2019/04/23 Javascript
js常见遍历操作小结
2019/06/06 Javascript
javascript实现弹幕墙效果
2019/11/28 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
如何通过JS实现日历简单算法
2020/10/14 Javascript
python算法学习之桶排序算法实例(分块排序)
2013/12/18 Python
Python通过DOM和SAX方式解析XML的应用实例分享
2015/11/16 Python
Python中字符串的格式化方法小结
2016/05/03 Python
1分钟快速生成用于网页内容提取的xslt
2018/02/23 Python
python实现的多任务版udp聊天器功能案例
2019/11/13 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
Python faker生成器生成虚拟数据代码实例
2020/07/20 Python
Matplotlib animation模块实现动态图
2021/02/25 Python
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
乌克兰的第一家手表店:Deka
2020/03/05 全球购物
Love, Bonito国际官网:新加坡女装品牌
2021/03/13 全球购物
教师实习自我鉴定
2013/12/11 职场文书
计划生育证明格式范本
2014/09/12 职场文书
2015年全国爱眼日活动小结
2015/02/27 职场文书
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android