10 2022 档案
摘要:node.js 初探 Node.js 是一个 JS 的服务端运行环境,简单的来说,它是在 JS 语言规范的基础上,封装了一些服务端的运行时对象,让我们能够简单实现非常多的业务功能。 如果我们只使用 JS 的话,实际上只是能进行一些简单的逻辑运算。node.js 就是基于 JS 语法增加与操作系统之间
阅读全文
摘要:nodejs是单线程执行的,同时它又是基于事件驱动的非阻塞IO编程模型。这就使得我们不用等待异步操作结果返回,就可以继续往下执行代码。当异步事件触发之后,就会通知主线程,主线程执行相应事件的回调。 以上是众所周知的内容。今天我们从源码入手,分析一下nodejs的事件循环机制。 nodejs架构 首先
阅读全文
摘要:此处如无特殊指出的话,event loop的语境都是指nodejs 本文研究所用的nodejs环境是:操作系统window10 + nodejs版本号为v12.16.2 什么是event loop? event loop是指由libuv提供的,一种实现非阻塞I/O的机制。具体来讲,因为javascr
阅读全文
摘要:项目初始化 // 初始化项目,生成package.json npm init 指定入口文件 main.js 项目的基础搭建 创建 src 工作目录 创建 main.js 主入口文件 在 main.js 中引入 koa const koa = require('koa') const app = ne
阅读全文
摘要:jwt是json web token的简称,本文介绍它的原理,最后后端用nodejs自己实现如何为客户端生成令牌token和校验token 1.为什么需要会话管理 我们用nodejs为前端或者其他服务提供resful接口时,http协议他是一个无状态的协议,有时候我们需要根据这个请求的上下获取具体的
阅读全文
摘要:概述 写这篇blog的原因,想找个node的ORM框架用用,确很难找到一篇对比分析这些ORM框架的文章,唯一找到了一篇,居然是通过star数来论英雄,我觉着很难服众,于是就找几个看看。后来又不想分析,因为我发现node这种野蛮生长,滋生这些ORM轮子比比皆是,远比我想象的多;后来又觉着可以写,作为一
阅读全文
摘要:最近写nodejs脚本的时候遇到了commonjs和ESModule的问题,正好之前用得稀里糊涂的,这次好好学习一下。 ES Module 导出 仅导出 named exports: 命名导出,每次可以导出一个或者多个。 default exports: 默认导出,每次只能存在一个。 以上两者可以混
阅读全文
摘要:前言 平常业务需求:上传图片、Excel等,毕竟几M的大小可以很快就上传到服务器。 针对于上传视频等大文件几百M或者几G的大小,就需要等待比较长的时间。 这就产生了对应的解决方法,对于大文件上传时的暂停、断网、网络较差的情况下, 使用切片+断点续传就能够很好的应对上述的情况 方案分析 切片 就是对上
阅读全文
摘要:前言 消息队列是存储数据的一个中间件,可以理解为一个容器。生产者生产消息投递 到队列中,消费者可以拉取消息进行消费,如果消费者目前没有消费的打算,则消息队列会保留消息,直到消费者有消费的打算。 设计思路 生产者 连接 redis 向指定通道 通过 lpush 消息 消费者 连接 redis 死循环通
阅读全文
摘要:项目初始化 // 初始化项目,生成package.json npm init 指定入口文件 main.js 项目的基础搭建 创建 src 工作目录 创建 main.js 主入口文件 在 main.js 中引入 koa const koa = require('koa') const app = ne
阅读全文
摘要:久没有更新博客了,最近写nodejs脚本的时候遇到了commonjs和ESModule的问题,正好之前用得稀里糊涂的,这次好好学习一下。 ES Module 导出 仅导出 named exports: 命名导出,每次可以导出一个或者多个。 default exports: 默认导出,每次只能存在一个
阅读全文
摘要:此处如无特殊指出的话,event loop的语境都是指nodejs 本文研究所用的nodejs环境是:操作系统window10 + nodejs版本号为v12.16.2 什么是event loop? event loop是指由libuv提供的,一种实现非阻塞I/O的机制。具体来讲,因为javascr
阅读全文
摘要:前言 path 模块是 nodejs 中用于处理文件/目录路径的一个内置模块,可以看作是一个工具箱,提供诸多方法供我们使用,当然都是和路径处理有关的。同时在前端开发中 path 模块出现的频率也是比较高的,比如配置 webpack 的时候等。本文是对该模块中一些常用的方法进行介绍,走,一起学习下吧。
阅读全文
摘要:本文只讨论 CommonJS 规范,不涉及 ESM 我们知道 JavaScript 这门语言诞生之初主要是为了完成网页上表单的一些规则校验以及动画制作,所以布兰登.艾奇(Brendan Eich)只花了一周多就把 JavaScript 设计出来了。可以说 JavaScript 从出生开始就带着许多缺
阅读全文
摘要:jwt是json web token的简称,本文介绍它的原理,最后后端用nodejs自己实现如何为客户端生成令牌token和校验token 1.为什么需要会话管理 我们用nodejs为前端或者其他服务提供resful接口时,http协议他是一个无状态的协议,有时候我们需要根据这个请求的上下获取具体的
阅读全文
摘要:概述 写这篇blog的原因,想找个node的ORM框架用用,确很难找到一篇对比分析这些ORM框架的文章,唯一找到了一篇,居然是通过star数来论英雄,我觉着很难服众,于是就找几个看看。后来又不想分析,因为我发现node这种野蛮生长,滋生这些ORM轮子比比皆是,远比我想象的多;后来又觉着可以写,作为一
阅读全文
摘要:前言 消息队列是存储数据的一个中间件,可以理解为一个容器。生产者生产消息投递 到队列中,消费者可以拉取消息进行消费,如果消费者目前没有消费的打算,则消息队列会保留消息,直到消费者有消费的打算。 设计思路 生产者 连接 redis 向指定通道 通过 lpush 消息 消费者 连接 redis 死循环通
阅读全文
摘要:node.js 初探 Node.js 是一个 JS 的服务端运行环境,简单的来说,它是在 JS 语言规范的基础上,封装了一些服务端的运行时对象,让我们能够简单实现非常多的业务功能。 如果我们只使用 JS 的话,实际上只是能进行一些简单的逻辑运算。node.js 就是基于 JS 语法增加与操作系统之间
阅读全文
摘要:前置知识 文件描述符 在 Linux 系统中,一切都看成文件,当进程打开现有文件时,会返回一个文件描述符。 文件描述符是操作系统为了管理已经被进程打开的文件所创建的索引,用来指向被打开的文件。 当我们的进程启动之后,操作系统会给每一个进程分配一个 PCB 控制块,PCB 中会有一个文件描述符表,存放
阅读全文
摘要:序言 一次面试中,我提到自己用过pm2,面试接着问:「那你知道pm2父子进程通信方式吗」。我大概听说pm2有cluster模式,但不清楚父子进程如何通信。面试结束后把NodeJS的多进程重新整理了一下。 对于前端开发同学,一定很清楚js是单线程非阻塞的,这决定了NodeJS能够支持高性能的服务的开发
阅读全文
摘要:导读 ALL THE TIME,我们写的的大部分javascript代码都是在浏览器环境下编译运行的,因此可能我们对浏览器的事件循环机制了解比Node.JS的事件循环更深入一些,但是最近写开始深入NodeJS学习的时候,发现NodeJS的事件循环机制和浏览器端有很大的区别,特此记录来深入的学习了下,
阅读全文
摘要:写在前面 我们先来看几个常见的说法 nodejs是单线程 + 非阻塞I/O模型 nodejs适合高并发 nodejs适合I/O密集型应用,不适合CPU密集型应用 在具体分析这几个说法是不是、为什么之前,我们先来做一些准备工作 从头聊起 一个常见web应用会做哪些事情 运算(执行业务逻辑、数学运算、函
阅读全文
摘要:前言 平常业务需求:上传图片、Excel等,毕竟几M的大小可以很快就上传到服务器。 针对于上传视频等大文件几百M或者几G的大小,就需要等待比较长的时间。 这就产生了对应的解决方法,对于大文件上传时的暂停、断网、网络较差的情况下, 使用切片+断点续传就能够很好的应对上述的情况 方案分析 切片 就是对上
阅读全文
摘要:进程:process模块 process 模块是 nodejs 提供给开发者用来和当前进程交互的工具,它的提供了很多实用的 API。从文档出发,管中窥豹,进一步认识和学习 process 模块: 如何处理命令参数? 如何处理工作目录? 如何处理异常? 如何处理进程退出? process 的标准流对象
阅读全文