Node.js
文章平均质量分 55
Node.js相关的学习
A-Tione
前端工作人员
展开
-
Nuxt.js框架服务端渲染二进制blob流下载
Server端在服务端添加一个 stream 属性,用来标识为流下载的接口。[`${METHOD.get} /env/download`]: async ctx => { const res = await ctx.fetch('env/download', { method: METHOD.get, stream: true, }) ctx.body = res[0].stream() },在服务端拿到数据时 blob() 一下。..原创 2021-09-18 10:34:10 · 824 阅读 · 0 评论 -
nuxt.js之SSR服务端内存泄漏导致CPU过高的解决过程
问题最近在公司维护nuxt项目时,线上遇到了一个问题——访问网站,网站会报502或者JS、css资源报502。去运维那一查pm2,项目node服务器的CPU达到了100%,实际上这段时间并没有人访问,那是为什么CPU会100%从而导致node服务器无法正常运行?分析太多的分析就不说了,期间向几个方向都排查过:nuxt社区有人说是nuxt框架问题,某些版本会出现node服务端内存泄漏。 第三方组件未在destroy时进行释放,或者事件监听,页面关闭后未解绑事件。 代码的书写问.原创 2021-03-24 11:19:24 · 6158 阅读 · 6 评论 -
在Nuxt项目中使用Nginx
Nginx的好处性能:静态文件(CSS、JS)直接走Nginx读取,无需再走3000端口消耗node服务。请求接口走3000端口到node服务。总的来说可以为node服务节省一部分静态资源的性能。 拓展性:为后期反向代理,负载均衡做准备。可在Nginx上配置转发多个node服务,实现全年365天*24小时无间隙服务器运转。使用Nginx配置静态文件走gzip压缩,在Nginx上配置。server { listen 80; //ipv4 listen [:.原创 2021-03-16 19:49:57 · 1095 阅读 · 1 评论 -
Docker化Node应用
docker化前准备根目录添加:.dockerignore文件node_modules*.logDockerfile文件FROM node:12# Create app directoryWORKDIR /usr/src/appCOPY package.json ./COPY yarn.lock ./RUN yarn installCOPY . .EXPOSE 3000CMD [ "yarn", "start" ]docker化Node应用build应.原创 2021-02-25 14:28:15 · 169 阅读 · 0 评论 -
nuxt框架偶发报错Loading chunk {n} failed
最近在维护公司项目中的website网站时,发现刷新加载页面时js或css资源会偶发性地出现以下图片报错。该项目是基于nuxt框架搭建的SSR服务器预渲染。于是我思考是不是因为网速慢异步加载导致的报错,我将网速调整成3g网络刷新试验,结果并没有预料中频发。于是我又尝试将项目中的link标签引用的一些css、js文件中异步引用的文件直接打包成一个文件,重新发布后测试仍会偶发。会是哪里出问题了呢?去nuxt社区瞧瞧。找到了一个遇到同样问题的人,这个人2017年就遇到了这个报错并向作者提出。作者答原创 2021-02-18 15:19:21 · 851 阅读 · 2 评论 -
next.js中createConnection热加载报错的解决方法
前言最近在使用next做个人项目中遇到了一个BUG,就是在使用创建typeorm数据库连接的一个API(createConnection)时,当我在本地跑起来后第一次进入页面没有问题,当我修改代码保存后页面再刷新就报错了,非常影响开发的体验,于是我打算看看能不能解决这个问题。解决过程可能的原因:首先我们理一理整个过程,找下报错可能的原因。当我们修改代码后保存,createConnection API当前的页面会再次被执行,那么相应的createConnection API又会被重新.原创 2021-01-15 17:39:47 · 697 阅读 · 0 评论 -
在next.js中使用TypeORM数据库
背景目前TypeORM版本为0.2.29,还未发布v1.0.0 默认支持TypeScript 支持关联(Associations) 支持事务(Transaction) 支持数据库迁移(Migration)启动数据库项目目录里创建blog-data目录 启动PostgreSQL:docker run -v "$PWD/blog-data":/var/lib/postgresql/data -p 5432:5432 -e POSTGRES_USER=blog -e POSTGRE.原创 2020-12-29 17:14:52 · 1703 阅读 · 0 评论 -
node.js Next框架的三种渲染方式:客户端渲染、SSG、SSR
前言next是一款用JS开发的全栈框架,它是基于express框架基础上开发而成,可以用react写客户端,node.js写服务端。一份代码可在前后端同时运行,这在next中称之为同构!一些next.js框架基础介绍创建项目:npm init next-app 项目名,项目创建好后next会帮你搭好基础通用的模板,大多常用的api以及写法都能在模板中找到。自定义head:使用<Head>组件Next.js APINext.js 三种渲染...原创 2020-11-23 23:02:45 · 8734 阅读 · 0 评论 -
Node.js Express与koa的区别
相同点作者:都是TJ所写,Express在前,Koa在后。功能:都是基于 Node.js 开发的Web框架,API差不多。不同点对Node的支持Express:都支持 Koa:2015年2月,Koa放弃对Node v0.11 以下支持,并开始支持io.js。2015年10月,Koa放弃对Node v4.0以下的支持,并用ES6重写所有的代码,发布v2.0.0内测版。当前Koa 依赖node v7.6.0或 ES2015及更高版本和 async 方法支持。生态Ex...原创 2020-10-27 17:12:37 · 609 阅读 · 0 评论 -
Node.js Express之API介绍
前言Express一共提供了五个大类的API,每个大类其核心只有几个需要记忆,其它API触类旁通即可(官方文档)。五大类APIexpress.xxx app.xxx request.xxx response.xxx router.xxx一些概念:子应用:let app = express() // 主应用let admin = express() // 另一个应用app.use('/admin', admin) // admin 作子应用挂载点:‘/.原创 2020-10-26 10:31:42 · 547 阅读 · 0 评论 -
Node.js Express框架入门
为什么会有Web框架?理念:Web框架的主流思路都是MVC Model处理数据相关逻辑 View处理视图相关逻辑,前后端分离之后,View不重要 Controller负责其它逻辑功能:更方便地处理HTTP请求与响应 更方便地链接数据库、Redis 更方便的路由 其它:HTML模板架构示意图框架的封装拿处理HTTP请求与响应举个例子最基础的封装:将请求封装为 [['get', '/xxx'], {请求头},'请求体'] 将响应封装为 [status..原创 2020-10-23 11:03:59 · 206 阅读 · 0 评论 -
Node.js child_process进程
什么是进程例如我们有一个Chrome.exe的一个程序,不是进程。双击Chrome.exe时,操作系统会开启一个进程。进程是程序的执行实例 程序在CPU上执行时的活动叫做进程 实际上并没有明确的定义,只有一些规则特点:一个进程可以创建另一个进程(父进程与子进程) 通过任务管理器可以看到进程什么是阻塞进程首先我们要了解CPU,它的特点是:一个单核CPU,在一个时刻,只能做一件事情 那么如何让用户同时看电影,听歌、写PPT呢? 在不同进程中快速切换什么是多程序并发执行?.原创 2020-09-28 11:25:43 · 645 阅读 · 0 评论 -
Node.js Stream流
本文内容大部分从 Node’s Streams文章中翻译得来。Node Streams因难以使用甚至难以理解而享有盛誉。好了,我对你有个好消息-情况不再如此。多年来,开发人员在那里创建了许多程序包,其唯一目的是使使用流变得更加容易。但是,在本文中,我将重点介绍本机Node Streams API。Stream到底是什么?流是数据的集合–就像数组或字符串一样。不同之处在于,流可能不会一次全部可用,并且不必容纳在内存中。当处理大量数据或一次来自一个外部chunk的大量数据时,这使流真正变..原创 2020-09-25 11:01:14 · 259 阅读 · 0 评论 -
Node.js 数据库基础
第一范式 1NF定义:字段不可再分这是一张选课表,没有违反第一范式,但是存在以下问题:数据冗余、创建时插入异常。删除学生会导致系消失、学生转系时会改动多处。结论:第一范式不够强第二范式 2NF定义(不够严谨):在1NF的基础上,要有键(键可由多个字段组合) 所有字段分别完全依赖于键 如果键是多个字段组合,则不允许部分依赖于该键依赖关系:给出键,就能唯一确定字段的值 如给出学号,就能唯一确定姓名,反之则不行 则称姓名依赖于学号不满足第二范式的地方:上.原创 2020-09-22 17:01:20 · 221 阅读 · 0 评论 -
Node.js 数据库入门
什么是数据库数据库 Database1、将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合称为数据库。2、根据保存格式的不同,数据库一般被分为:关系数据库-使用最广泛的数据库 面向对象数据库、XML数据库、键值存储系统、层次数据库数据库管理系统 BSMS用来管理数据库的系统称为数据库管理系统 如MySQL、PostgreSQL、SQL Server、DB2、OracleDBMS的结构我们使用的 mysql 命令,就是一个客户端,而 mysql 背后还有一个原创 2020-09-21 15:42:50 · 189 阅读 · 0 评论 -
Node.js 制作命令行翻译工具
全局安装typescriptyarn global add typescript生成ts config配置文件tsc --init修改outDir,将目录改为dist/。这时可在命令行输入命令tsc,查看typescript有无报错。ts => js 生成dist目录tsc -p .修改package.json文件最后就可以发布到npm,通过npm使用自己的命令行翻译工具了。具体如何发布到npm,可参考我的另...原创 2020-09-09 18:31:23 · 425 阅读 · 0 评论 -
Node.js 用TS写一个简单的静态服务器
import * as http from 'http';import {IncomingMessage, ServerResponse} from 'http';import * as fs from 'fs';import * as p from 'path'; // 正确处理系统文件路径import * as url from 'url'; // 处理url字符转相关apiconst server = http.createServer();const publicDir = p.re.原创 2020-09-06 16:25:15 · 2255 阅读 · 0 评论 -
Node.js 文件模块单元测试
我们对文件模块进行单元测试,主要测试文件模块的读和写。首先需要引入node测试框架jestnpm install jestpackage.json文件进行配置:"scripts": { "test": "jest" },然后就可以开始使用了:文件模块单元测试const db = require('../db')const fs = require('fs')jest.mock('fs') // mock一个fs文件describe('bd', ..原创 2020-09-01 21:11:55 · 289 阅读 · 0 评论 -
Node.js 文件模块
我们通过写一个基于node的todo-list任务清单,基本就能了解node的文件模块。cli.js入口文件需要引入commander(文档)npm installcommander#!/usr/bin/env node// 上述注释为了指定用node作为脚本的解释程序——称为shebangconst program = require('commander')const api = require('./index.js')const pkg = require(..原创 2020-08-28 18:27:17 · 168 阅读 · 0 评论 -
Node.js技术架构
Node.js是是什么?是一个平台,他将多种技术组合起来,让JavaScript也能调用系统接口、开发后端应用。Node.js用到了哪些技术?v8引擎,libuv,C/C++实现的相关库。bindings背景:C/C++实现了一个http_parser库很高效,你只会写js,但是你想调用这个库,直接调用肯定不能成功的,你需要一个中间的桥梁。Node.js用C++对http_parser进行封装,使它符合某些要求,封装的文件叫做http_parser_bindings.cpp..原创 2020-08-20 18:27:18 · 279 阅读 · 1 评论 -
node.js与浏览器中的EventLoop事件循环是一样的吗?
什么是EventLoop(事件循环)?这里从2个方向来讨论:node.js 浏览器node.jsnode.js中event loop 分为六个阶段: ┌───────────────────────┐┌─>│ timers ││ └──────────┬────────────┘│ ┌──────────┴───────...原创 2020-03-30 23:29:55 · 215 阅读 · 0 评论 -
项目中package.json文件是干什么的?
每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称/版本/许可证等元数据)。npm install命令根据这个配置文件,自动下载所需要的模块,也就是配置项目所需的运行和开发环境。下面是一个完整的package.json文件{ "name": "项目的名字", "version": "1.0.0", "d...原创 2019-07-31 10:10:57 · 6620 阅读 · 0 评论