node.js
文章平均质量分 82
node
高先生的猫
求知若渴,虚心若愚。
展开
-
NVM 安装及注意事项
NVM 安装及注意事项原创 2022-11-17 12:00:17 · 555 阅读 · 0 评论 -
pm2常用命令汇总
pm2是什么pm2(Process Manager 2)是具有内置负载均衡器的Node.js应用程序的生产运行时和进程管理器。它允许您永久保持应用程序活跃,无需停机即可重新加载它们,并促进常见的Devops任务。pm2特性后台运行:普通启动方式:node index.js关闭终端就结束进程,pm2可以后台运行,终端关闭不影响 日志管理:应用程序日志保存在服务器的硬盘中~/.pm2/logs/ 负载均衡:pm2可以通过创建共享同一服务器端口的多个子进程来扩展您的应用程序,这样做还允许您以零秒停原创 2022-05-07 10:05:53 · 8258 阅读 · 0 评论 -
Node.js 多文件 Stream 合并,串行和并发两种模式实现
将多个文件合并为一个文件,常见的场景是类似于大文件分片上传,事先根据一定的文件大小拆分为多个小文件上传到服务端,最后服务端在合并起来。怎么合并?一种简单的办法是使用 fs.readFile 读取,fs.writeFile 追加写入,这种方式是将文件数据先读入应用内存再写入,不是很推荐,Node.js 本身提供了 Stream 模块可以更好的处理这种场景。在 Stream 中合并文件之前一个比较常用的 api 是 pipe,但是这个 API 对于错误处理不是很友好,一不小心还能搞出文件句柄内存泄漏问题原创 2022-04-13 10:50:16 · 1488 阅读 · 0 评论 -
pm2的配置文件
PM2 是 node 进程管理工具,可以利用它来简化很多 node 应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。这篇文章主要介绍pm2配置文件的相关写法,文件支持的配置格式为Javascript、JSON、YAML,以下主要讲述Javascript,JSON这2种格式。1.Javascript格式输入以下命令可以生产配置文件模板:pm2 init然后执行:pm2 ecosystem生成是ecosystem.config.js如下:module..原创 2022-04-07 09:10:52 · 5224 阅读 · 0 评论 -
Node.js中的进程与线程
1. 回顾进程和线程的定义进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。2. Node.js的单线程Node特点主线程是单线程的 一个进程只开一个主线程,基于事件驱动的、异步非阻塞I/O,可以应用于高并发场景。Nodejs中没有多线程,为了充分利用多核cpu,可以使用子进程实现内核的负载均衡,那我们...原创 2021-06-03 10:11:47 · 919 阅读 · 0 评论 -
Node.js使用Koa搭建 基础项目
Koa 是由 Express 原班人马打造的超轻量服务端框架与 Express 相比,除了自由度更高,可以自行引入中间件之外,更重要的是使用了 ES6 + async,从而避免了回调地狱不过也是因为代码升级,所以 Koa2 需要 v7.60 以上的 node.js 环境一、创建项目手动创建一个项目目录,然后快速生成一个 package.json 文件npm init -y安装 koa //当前版本 2.4.1npm install koa -S然后创建一个 app.js.原创 2021-06-10 14:10:31 · 385 阅读 · 0 评论 -
浏览器与Node的事件循环(Event Loop)有何区别?
一、线程与进程1.概念我们经常说JS 是单线程执行的,指的是一个进程里只有一个主线程,那到底什么是线程?什么是进程?官方的说法是:进程是 CPU资源分配的最小单位;线程是 CPU调度的最小单位。这两句话并不好理解,我们先来看张图:image进程好比图中的工厂,有单独的专属自己的工厂资源。 线程好比图中的工人,多个工人在一个工厂中协作工作,工厂与工人是 1:n的关系。也就是说一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线; 工厂的空间是工人们共享的,这象征一.原创 2020-12-23 13:57:57 · 1092 阅读 · 0 评论 -
Node.js几种创建子进程方法
exec其中exec可用于在指定的shell当中执行命令。不同参数间使用空格隔开,可用于复杂的命令。const { exec } = require('child_process')exec('cat *.js bad_file | wc -l')exec方法用于异步创建一个新的子进程,可以接受一个callback。exec('cat *.js bad_file | wc -l', (err, stdout, stderr) => { console.log(stdout)原创 2020-12-03 16:54:30 · 1681 阅读 · 0 评论 -
前端实现.md文件转换成.html文件
.md文件是markdown的一种标记语言,和html比较起来,更简单快捷,主要体现在:标记符的数量和书写上。标记符的数量:html文档需要用到数量繁多的标记符,再辅以css来控制样式和排版,而markdown文档只需要四个基本的标记符号就能完成同样的事。标记符的书写:HTML文档内容需要同时标记开始和结束这是一个网页,而markdown文档则只要在开始位置标记即可# 这是一个md文档。下面介绍如何实现将.md文件转换成.html文件。方式一:使用i5ting_toc插件需要先安装n.原创 2020-12-08 11:54:49 · 1379 阅读 · 0 评论 -
node中间件有哪些类型?
node中间件就是封装在程序中处理http请求的功能。node中间件是在管道中执行。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。中间件为主要的逻辑业务所服务,可分为:应用级中间件、路由级中间件、内置中间件、第三方中间件、错误级中间件。1、应用级中间件每一个中间件就是调用一个函数,需要配合其他的中间件或者路由使用server (函数) 拦截所有的路由server.use('/reg',函数);拦截特定的路由const express=require('e.原创 2020-09-08 10:36:40 · 977 阅读 · 0 评论 -
Nodejs数据加密与crypto模块
nodejs中的 crypto 模块提供了各种各样加密算法的 API。这篇文章记录了常用加密算法的种类、特点、用途和代码实现。其中涉及算法较多,应用面较广,每类算法都有自己适用的场景。为了使行文流畅,列出了本文记录的几类常用算法:内容摘要:散列(Hash)算法 内容摘要:HMac 算法 内容加解密:对称加密(AES)与非对称加密解密(RSA) 内容签名:签名和验证算法散列(Hash)算法散列函数(英语:Hash function)又称散列算法、哈希函数,是一种从任何一种数据中创建小的..原创 2020-09-22 17:38:27 · 822 阅读 · 0 评论 -
NodeJS中配置请求代理服务器
先来说说场景,之前我写过一个小爬虫,node写的,一直都是当做玩具来用的。某天不知道谁在刷我的接口,导致被拉黑了。大佬让我换个机器重新装一下,但是因为我的里面用到了一个图片处理库sharp装起来很烦,然后就研究研究能不能搞个代理服务器。大体是如上图,用户的请求最后都会通过我的服务器去请求对方服务器,这就导致频率一高就被封。那么我可以请求代理服务器,甚至是做一个代理池,再把请求平均开。既然方案定下来了,那么我们就要开始测试了。先找找自己怎么做,然后看看有没有现成的服务。代理服务器...原创 2020-09-07 16:13:01 · 2117 阅读 · 1 评论 -
nodejs如何解决高并发?
Node可以在不新增额外线程的情况下,依然可以对任务进行并发处理 —— Node.js是单线程的。它通过事件循环(event loop)来实现并发操作,对此,我们应该要充分利用这一点 —— 尽可能的避免阻塞操作,取而代之,多使用非阻塞操作。node单线程实现高并发原理众所周知nodejs是单线程且支持高并发的脚本语言。可为什么单线程的nodejs可以支持高并发呢?很多人都不明白其原理,下面我来谈谈我的理解:1. node的优点:I/O密集型处理是node的强项,因为node的I/O请..原创 2020-09-22 17:38:43 · 4078 阅读 · 0 评论 -
NodeJS中配置请求代理服务器
先来说说场景,之前我写过一个小爬虫,node写的,一直都是当做玩具来用的。某天不知道谁在刷我的接口,导致被拉黑了。大佬让我换个机器重新装一下,但是因为我的里面用到了一个图片处理库sharp装起来很烦,然后就研究研究能不能搞个代理服务器。大体是如上图,用户的请求最后都会通过我的服务器去请求对方服务器,这就导致频率一高就被封。那么我可以请求代理服务器,甚至是做一个代理池,再把请求平均开。既然方案定下来了,那么我们就要开始测试了。先找找自己怎么做,然后看看有没有现成的服务。代理服务器...原创 2020-09-03 11:54:18 · 1944 阅读 · 0 评论 -
JavaScript判断浏览器内核,微信打开自动提示在浏览器打开
微信会屏蔽 URL 自定义的 scheme ,导致无法跳转手机中的浏览器。网上有一些工具类网站可以实现直接跳转浏览器,之后有机会我会整理一下。我们今天只讨论通过JavaScript判断是否在微信浏览器中打开,如果是则弹出提示,在浏览器中打开。我首先在 body 中写了一个提示信息:(默认隐藏)<divid="container"style="display:none"><divstyle='position:relative;padding-top:100px;...原创 2020-08-26 10:39:33 · 2658 阅读 · 0 评论 -
使用node执行命令, 使前端项目打包后自动压缩成zip包
在vuecli2 的项目中 找到 build/build.js,在webpack(webpackConfig, cb) 的 回调函数cb中添加const exec = require('child_process').execexec('cd .\\dist && del dist.zip', function(error) { if (error) { console.log(error) } // D:\\program\\WinRAR\\WinRAR...原创 2020-08-26 10:37:59 · 1331 阅读 · 0 评论 -
Node.JS中回调嵌套和async/await执行空函数性能效率对比测试
asyn/await关键字可以让原来的回调嵌套和链式写法,改造成同步语法。util.promisify可以很方便地将回调函数Promise化,那么Promise函数的async/await执行和回调函数的嵌套执行或链式执行在性能上有差异吗?下面我们会写一个测试用例,用两种方式执行一个空函数1百万次,比较执行时间。var util = require('util')var count = 1000000var testCallback = function() { var curr = 0原创 2020-08-25 10:28:26 · 877 阅读 · 0 评论 -
怎么卸载nodejs?
Node.js是一个JavaScript运行环境,可以使JavaScript这类脚本语言编写出来的代码运行速度获得极大提升,那么安装后该如何卸载呢?Windows平台下卸载nodejs对于Windows平台来说,所有的应用程序的卸载方法都是一样的。1、在【卸载程序】中卸载程序和功能在桌面左下角单击【开始】按钮,然后选择【控制面板】,在控制面板窗口中找到【卸载程序】,单击打开。打开后可以看到所有已经安装的程序,找到node.js,然后单击右键选择【卸载】等待一会后系统就会提示卸..原创 2020-08-24 10:57:11 · 34747 阅读 · 1 评论 -
node中间层的好处是什么?
Node.js是一个JavaScript运行环境。Node.js使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。Node.js是单进程、单线程运行机制,通过事件轮询(event loop)来实现并发操作,而且性能很好。使用Node作为Web中间层的优势:1、功能分离,减轻板块负担2、跨系统、跨终端均可重用页面数据校验、逻辑代码,无需因为新系统、终端的接入而重写校验;3、只在中间件中做一次数据校验,避免了前端做数据校验的同时后端...原创 2020-08-24 10:56:30 · 1637 阅读 · 0 评论 -
为什么node不适合大型项目?
首先要明确什么是大型应用,其实这是仁者见仁、智者见智的问题,并且它是一个哲学问题,不是一个技术问题。假如有人问你,一个可以进行线上销售的网站,比如优衣库,大不大?你可能会说大,因为这与你平常所见的博客、企业官网等逻辑相比较确实复杂很多。或者说小,那么说明你开发过比它还复杂的系统。那么相比较淘宝而言呢?大和小的对比是要有参照物的。1. 应用的组成一个完备的 Web 应用可能只由一门语言或者一种技术构成吗?不可能。因为一个完备的 Web 应用其实是多门技术的综合体,解决某个问题有非常多的解决..原创 2020-08-20 10:23:29 · 814 阅读 · 0 评论 -
node.js如何充分利用多核cpu?
Nodejs是基于chrome浏览器的V8引擎构建的,也就说明它的模型与浏览器是类似的。我们的JavaScript会运行在单个进程的单个线程上。但是V8引擎的单进程单线程并不是完美的结构,现如今CPU基本上都是多核的。真正的服务器往往有好几个CPU(像我们的线上物理机有12个核),所以,这就将抛出Nodejs实际应用中的一个问题:“如何充分利用多核CPU服务器?”从严格意义上来讲,Node其实并不是真正的单线程架构,因为Node自身还有I/O线程存在(网络I/O、磁盘I/O),这些I/O线程是.原创 2020-08-20 10:22:23 · 2374 阅读 · 0 评论 -
怎么用nodejs检测网络状态?
nodejs可以使用检测因特网状态的库internet-available、is-online来检查网络状态,其原理是检测dns连接状态。这两个库提供了超时检测。用nodejs检测网络状态:internet-available这个库检测因特网连接状态原理,是检测dns连接状态。这里大家肯定有个疑问,使用nodejs原生模块dns不是更简洁吗?你说的没错,nodejs确实提供这样的方法,但是dns原生模块并没有提供超时检测。internet-available可以设置超时参数,默认是.原创 2020-08-20 10:21:47 · 3851 阅读 · 0 评论 -
nodejs如何将获得的数据保存到本地?
nodejs将获得的数据保存到本地可以使用Cookie进行数据保存或使用sessionStorage、localStorage进行数据保存。使用Cookie保存Cookie这个恐怕是最常见也是用得最多的技术了,也是比较古老的技术了。Cookie优点很多,使用起来很方便 但它的缺点也很多: 比如说跨域访问问题、不能保存过大的数据(最大4KB)、本地保存的数据会发送给服务器、浪费带宽等等。示例代码如下function SetCookie(name, value) { var key原创 2020-08-19 11:32:49 · 4902 阅读 · 1 评论 -
深入理解 Node.js 中的 Worker 线程
多年以来,Node.js都不是实现高 CPU 密集型应用的最佳选择,这主要就是因为JavaScript的单线程。作为对此问题的解决方案,Node.jsv10.5.0 通过worker_threads模块引入了实验性的 “worker 线程” 概念,并从 Node.jsv12 LTS 起成为一个稳定功能。本文将解释其如何工作,以及如何使用 Worker 线程获得最佳性能。Node.js中 CPU 密集型应用的历史在 worker 线程之前,Node.js中有多种方式执行 CPU...原创 2020-08-19 11:31:14 · 6419 阅读 · 0 评论 -
深入理解 Node.js 中的 Worker 线程
多年以来,Node.js都不是实现高 CPU 密集型应用的最佳选择,这主要就是因为JavaScript的单线程。作为对此问题的解决方案,Node.jsv10.5.0 通过worker_threads模块引入了实验性的 “worker 线程” 概念,并从 Node.jsv12 LTS 起成为一个稳定功能。本文将解释其如何工作,以及如何使用 Worker 线程获得最佳性能。Node.js中 CPU 密集型应用的历史在 worker 线程之前,Node.js中有多种方式执行 CPU...原创 2020-08-06 10:17:11 · 765 阅读 · 0 评论 -
为什么node不适合大型项目?
首先要明确什么是大型应用,其实这是仁者见仁、智者见智的问题,并且它是一个哲学问题,不是一个技术问题。假如有人问你,一个可以进行线上销售的网站,比如优衣库,大不大?你可能会说大,因为这与你平常所见的博客、企业官网等逻辑相比较确实复杂很多。或者说小,那么说明你开发过比它还复杂的系统。那么相比较淘宝而言呢?大和小的对比是要有参照物的。1. 应用的组成一个完备的 Web 应用可能只由一门语言或者一种技术构成吗?不可能。因为一个完备的 Web 应用其实是多门技术的综合体,解决某个问题有非常多的解决..原创 2020-08-06 10:16:12 · 686 阅读 · 0 评论 -
怎么用nodejs检测网络状态?
nodejs可以使用检测因特网状态的库internet-available、is-online来检查网络状态,其原理是检测dns连接状态。这两个库提供了超时检测。用nodejs检测网络状态:internet-available这个库检测因特网连接状态原理,是检测dns连接状态。这里大家肯定有个疑问,使用nodejs原生模块dns不是更简洁吗?你说的没错,nodejs确实提供这样的方法,但是dns原生模块并没有提供超时检测。internet-available可以设置超时参数,默认是500原创 2020-08-06 10:13:31 · 2614 阅读 · 0 评论 -
你知道如何使用Node.js做邮箱验证吗?
相信大家都知道登录操作都会有一个接收验证码的过程,我之前一直对这个非常感兴趣,经常问同学手机验证码是怎么搞的,但是现在我们不用手机也照样可以实现这个功能。01 前言其实对于手机验证码来说,一般都要收费的,免费的一般是比较少的,而且都会有数量的限制。既然我们不能使用手机验证码来发送,那么我们就以曲线救国的方式来实现这个功能吧。其实很简单,我们只要安装一个第三方的npm包就可以了,这个包可以实现邮件的发送功能。这个包就是nodemailer,下面我们就一起来测试一下到底怎么样。02...原创 2020-07-23 10:22:38 · 319 阅读 · 0 评论 -
vue + nodeJs SPA 和 nodeJs + ejs网站项目整合
背景** 目前对一个多页面的nodeJs express网站和 VueSPA 做了整合,这个过程如下。**类似于很多综合管控系统网站如阿里云。 此次修改的项目整体由一个多页面的介绍网站 和一个控制台构成,网站由nodeJs + ejs 模板 构成的多页面项目,控制台是由前端Vue + 服务端NodeJs + thirft构成的一个前端SPA项目 ,在修改之前 两者是独立的通过对用户登录权限判断进行页面跳转,目前的需求就是将这两个项目合并到一个项目下,启一个服务实现对整个网站的访问image原创 2020-07-16 10:45:44 · 800 阅读 · 0 评论 -
Nuxt使用axios跨域问题解决方法
Nuxt 是vue项目服务器端渲染(SSR)解决方案。而在使用时,就会遇到前后端分离情况下的域名或端口不一致导致的跨域问题。本文将介绍如何通过设置代理解决 Nuxt 与 axios 集成的跨域问题。解决跨域Nuxt 使用 axios 为避免出现前端页面跨域问题,需要安装 @nuxtjs/axios 和 @nuxtjs/proxy 两个模块。用 yarn 安装:yarn add axios @nuxtjs/axios @nuxtjs/proxy使用npm安装:npm...原创 2020-07-09 11:02:07 · 2841 阅读 · 0 评论 -
前端学nodejs有什么用处?
Node.js是一个基于 Chrome V8 引擎的JavaScript运行环境,一个基于ChromeJavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。前端学nodejs有什么用处?Nodejs是基于JavaScript语言的,这样就不用再单独新学一门陌生的语言,从而减低了学习的门槛。同时,JavaScript语言在Web前端开发中至关...原创 2020-07-14 13:29:30 · 4441 阅读 · 0 评论 -
node_modules是干什么的?
node_modules是安装node后用来存放用包管理工具下载安装的包的文件夹。比如webpack、gulp、grunt这些工具。在node.js中模块与文件是一一对应的,也就是说一个node.js文件就是一个模块。modules(模块):在node.js中模块与文件是一一对应的,也就是说一个node.js文件就是一个模块,文件内容可能是我们封装好的一些JavaScript方法、jsON数据、编译过的C/C++拓展等,在关于node.js的误会提到过node.js的架构。其中http、fs、n原创 2020-07-20 11:00:47 · 43424 阅读 · 0 评论 -
node全局安装与本地安装的区别
node的安装有全局安装和本地安装两种方式。命令中,全局安装(global)和本地安装(local)方式的区别为带参数-g和不带参数-g。下面我们来看一下具体的区别。node全局安装与本地安装的区别:1、安装位置不同:本地安装:npminstall moduleName ,则是将模块下载到当前命令行所在目录。全局安装:npminstall moduleName -g ,模块将被下载安装到全局目录中,即Node的安装目录下的node_modules下2、调用方式不同:在代码中,..原创 2020-07-08 13:20:49 · 1665 阅读 · 0 评论 -
Event Loop 在浏览器和Node端的差异
由于js是单线程语言,为了解决异步操作所以设计了事件循环。宏任务:setTimeout、setInterval、script(整体代码)、 I/O 操作、UI 渲染等微任务:setImmediate、process.nextTick()、new Promise().then(回调)、MutationObserver(html5新特性)在事件循环中,宏任务和微任务分成了两类的队列,为了便于理解,微任务相当于是追加在宏任务队列后的一个独立的队列。差异:setTimeout、setInt...原创 2020-07-06 10:16:48 · 1283 阅读 · 0 评论 -
node中提供的全局变量有哪些?
JavaScript中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量。在浏览器JavaScript中,通常 window 是全局对象。而Node.js中的全局对象是global,所有全局变量(除了 global 本身以外)都是 global 对象的属性。Node.js中,我们可以直接访问到 global的属性,而不需要在应用中包含它。全局对象与全局变量:global最根本的作用是作为全局变量的宿主。按照 ECMAScrip.原创 2020-06-18 13:14:38 · 2066 阅读 · 0 评论 -
nvm_nodejs版本管理工具的使用
Node更新日新月异,为了兼容去年的项目,所以需要使用Node 8.x。为了防止未来还有类似的需求,所以准备使用NVM进行Node版本管理一劳永逸,nvm是node版本管理工具,可以运行在多种操作系统上。这里主要记录一下在windows系统的安装和使用。下载nvm-windows下载地址:https://github.com/coreybutler/nvm-windows/releases, 我们只需点击第三个nvm-setup.zip,下载安装包,下载之后点击安装,无需配置就可以使用,十...原创 2020-06-17 10:58:32 · 307 阅读 · 0 评论 -
Deno 意味着什么?
如果你一直关注 Web 开发领域,那么最近可能已经听到了很多关于 Deno 的信息——一种新的 JavaScript 运行时,它可能也会被认为是 Node.js 的继承者。但是这意味着什么,我们需要“下一个 Node.js” 吗?什么是 Deno?要了解发生了什么,我们首先需要看一下 Deno 到底是什么。就像我前面说过的那样,这是一个新的 JavaScript 运行时,也就是要执行 JS 代码的环境。它最初是由Ryan Dahl创造的,他在之前曾经为我们把 Deno 与Node.js...原创 2020-06-10 16:11:09 · 267 阅读 · 0 评论 -
pm2管理node服务
1全局安装pm2npm install pm2 -g2.检测pm2是否安装成功,在命令行输入pm2 -v如果没有,那就是pm2的全局路径没有设置3.先查看pm2路径whereis pm24.查看全局路径echo $PATH5.从全局路径随便选一个,把pm2路径软连接到全局路径上ln -s /home/wjz/java/node-v7.10.0-linux-x64/bin/pm2/usr/local/bin/6.再次检测pm2是否安装成功p原创 2020-06-06 12:54:53 · 607 阅读 · 0 评论 -
Deno会在短期内取代Node吗?
Deno是什么?Deno v1.0.0已于5月13日正式发布。其开发者为Ryan Dahl,他的上一个项目是Node,相信我们大部分人都了解。作为Node之父,Ryan Dahl认为Node自从他把项目移交出去后,Node的走向越来越背离了他的初衷,并且存在着很多无法解决的问题,所以他决心重新开发一个新的项目去解决这些问题,这个项目就名为Deno。目标则是Destroy-node。那么,这样是不是就意味着Deno即将替代Node,成为Node的下一代产品?我们应不应该从现在就开始放弃Node原创 2020-05-29 10:18:52 · 368 阅读 · 0 评论 -
如何对nodejs -mongodb进行操作
今天说下如何对mongodb进行操作首先我们需要先本地机器上安装下mongodb,如果需要远程的,可以跳过这一步,下载地址:https://www.mongodb.com/download-center/community这里可以选择各种系统各种版本,任君选购,下载这个时间可能会长点,根据网络不同,下载速度不同吧安装完之后就可以看到里面有个/bin/mongo.exe,打开之后就可以对数据库进行操作了然后我这里插入里面几条数据,以便一会使用,插入的数据如下:这里是...原创 2020-05-16 17:17:02 · 379 阅读 · 0 评论