为了账号安全,请及时绑定邮箱和手机立即绑定

推荐这个零运行时且支持 TS 的 CSS-in-JS 技术方案! 原创

以前如果使用 CSS-in-JS 编写项目样式文件,优先会考虑 styled-components,它的特点是使用模版字符串编写样式组件,使用方便、上手简单。一个被反对的声音主要是 styled-components 采用了运行时机制,增加了产物的体积也担心运行时的开销带来一些性能损耗问题。 前段时间在个人项目中使用了 Vanilla Extract,不同于其它 CSS-in-JS 方案,它可以在编译时期编译出 CSS 样式文件,实现了零运行时且支持 TypeScript。 下文,将为您介绍 Vanilla Extract 的特点及应用。 什么是

139浏览
1推荐
0评论

实战:React 18 + TS + Vite + Nest.js 开发一个文件压缩工具 原创

一款免费开源的文件压缩工具,Compressor 让您的文件体积更小! 项目地址:https://github.com/qufei1993/compressor 技术栈 项目前后端整体以 TypeScript 编程语言为主,服务端使用的 Node.js。 对于想学习 Node.js、React、TS 的朋友可以参考下,如果有帮助欢迎给个 Star 给予支持,以下为主要用到的技术选型。 前端: UI 框架:React 18 状态管理:redux/toolbox CSS 方案:@vanilla-extract/css 构建工具:vite 后端: Node 版本:Node.js v16.x 框架:Nest.js 长

188浏览
1推荐
0评论

v15.x 新 feature — Node.js timers 模块引入 setInterval 异步迭代器 原创

作者简介:五月君,Software Designer,公众号「Nodejs技术栈」作者。 timers/promises 提供了计时器函数的 Promise 版本,如果使用需要文件头部先加载,否则默认还是 callback 形式的计时器函数。 import { setInterval } from 'timers/promises'; setInterval 几个功能点 Node.js v15.9.0 版本在 timers 模块新增了基于异步生成器函数实现的 setInterval,拥有以下几个功能点: 返回一个以 ms 为单位的异步迭代器对象,可以使用 Promise 的方式管理 可以使用 for

1179浏览
0推荐
0评论

五月君 2020 年度回顾 — 缘起「Nodejs技术栈」 原创

写作是最能梳理自己途径的一种方式,有些事情看似懂了,但是让你讲出来,有时也并非真的能讲的清楚。通过写作也是潜移默化的帮你梳理思路,时间长了你会从中体会什么是突出重点、换位思考等。 经常关注我的朋友知道,日常更多是以技术文章交流为主,近一年里通过「Nodejs技术栈」自己也收获颇多,在这不平凡的一年 2020 即将流逝之际记录下这些点点滴滴。 我是谁? 五月君,一个热爱技术、喜欢分享的 90 后青年,之前我喜欢这样来介绍自己。也有一些小伙伴会问我一些问题,“大佬,你叫什

829浏览
1推荐
0评论

在 Node.js 中使用 Async Hooks 处理 HTTP 请求上下文 原创

作者简介:五月君,Software Designer,公众号「Nodejs技术栈」作者。 Async Hooks 一个实际的使用场景是存储请求上下文,在异步调用之间共享数据。 本节将会介绍如何基于 Async hooks 提供的 API 从零开始实现一个 AsyncLocalStorage 类(异步本地存储)及在 HTTP 请求中关联日志的 traceId 实现链路追踪,这也是 Async Hooks 的一个实际应用场景了。 何为异步本地存储? 我们所说的异步本地存储类似于多线程编程语言中的线程本地存储。拿之前笔者写过的 Java 做个举例

557浏览
0推荐
0评论

使用 Node.js 的 Async Hooks 模块追踪异步资源 原创

作者简介:五月君,Software Designer,公众号「Nodejs技术栈」作者。 Async Hooks 功能是 Node.js v8.x 版本新增加的一个核心模块,它提供了 API 用来追踪 Node.js 程序中异步资源的声明周期,可在多个异步调用之间共享数据,本文从最基本入门篇开始学习,之后会有在某些场景下具体应用实践篇介绍。 executionAsyncId 和 triggerAsyncId async hooks 模块提供了 executionAsyncId() 函数标志当前执行上下文的异步资源 Id,下文使用 asyncId 表示。还有一个 triggerAsync

793浏览
0推荐
0评论

使用 Chrome Devtools 调试您的 Node.js 程序 原创

俗话说:“工欲善其事,必先利其器”,调试是每一个开发人员都要遇到的问题,选择一个合适的调试工具也尤为重要。 在 Node.js 开发过程中除了万能的 console.log 之外,本节介绍一个 Node.js 与 Chrome Devtools 结合的调试工具,以后你可以选择使用浏览器来调试 Node.js 应用程序了。启动调试器创建测试代码const fs = require('fs'); const path = require('path'); const filePath = path.resolve(__dirname, 'hello.txt') console.log('filePath: ',...

833浏览
0推荐
0评论

使用 Mongoose 关联非 _id 字段查询的两种实现方式 原创

本文源自工作中的一个问题,在使用 Mongoose 做关联查询时发现使用 populate() 方法不能直接关联非 _id 之外的其它字段,在网上搜索时这块的解决方案也并不是很多,在经过一番查阅、测试之后,有两种可行的方案,使用 Mongoose 的 virtual 结合 populate 和 MongoDB 原生提供的 Aggregate 里面的 $lookup 阶段来实现。 文档内嵌与引用模式 MongoDB 是一种文档对象模型,使用起来很灵活,它的文档结构分为 内嵌和引用 两种类型。 内嵌是把相关联的数据保存在同一个文档内

1696浏览
0推荐
0评论

跨域(CORS)产生原因分析与解决方案,这一次彻底搞懂它 原创

Cross-origin Resource Sharing 中文名称 “跨域资源共享” 简称 “CORS”,它突破了一个请求在浏览器发出只能在同源的情况下向服务器获取数据的限制。 本文会先从一个示例开始,分析是浏览器还是服务器的限制,之后讲解什么时候会产生预检请求,在整个过程中,也会讲解一下解决该问题的实现方法,文末会再总结如何使用 Node.js 中的 cors 模块和 Nginx 反向代理来解决跨域问题。 文中使用 Node.js 做一些 Demo 的演示,每一小节之后也会给予代码的 Demo 地址。 浏览器还是

8603浏览
12推荐
0评论

JavaScript 中 this 的错误认识、绑定规则、常见问题讲解 原创

相信 Javascript 中的 this 会使很多同学在工作学习中产生困惑,笔者也同样是,经过阅读各种资料及实际工作中的应用,做了以下梳理,主要内容包括长期以来大家对 this 的错误认识及 this 的绑定规则,箭头函数、实际工作场景中遇到的问题,希望对于有此困惑的你能有所帮助。 两种错误认识 指向自身 this 的第一个错误认识是,很容易把 this 理解成指向函数自身,其实 this 的指向在函数定义阶段是无法确定的,只有函数执行时才能确定 this 到底指向谁,实际 this 的最终指向

5776浏览
1推荐
0评论

Node.js + Socket.io 实现一对一即时聊天 原创

实现一对一即时聊天应用,重要的一点就是消息能够实时的传递,一种方案就是熟知的使用 Websocket 协议,本文中我们使用 Node.js 中的一个框架 Socket.io 来实现。 效果预览 先看下,我们实现的最终效果,如下所示: 你也可以在浏览器分别输入以下两个 URL 地址进行体验: http://120.27.239.212:30010/?sender=赵敏&receiver=聂小倩 http://120.27.239.212:30010/?sender=聂小倩&receiver=赵敏 技术选型 前端:HTML + CSS + JS 还用到了 Boostrap 来实现我们的页面布局和

9434浏览
9推荐
1评论

如何处理 Node.js 中出现的未捕获异常? 首发

Node.js 程序运行在单进程上,应用开发时一个难免遇到的问题就是异常处理,对于一些未捕获的异常处理起来,也不是一件容易的事情。 未捕获异常的程序 下面展示了一段简单的应用程序,如下所示: const http = require('http'); const PORT = 3000; const server = http.createServer((req, res) => { if (req.url === '/error') { a.b; res.end('error'); } else { setTimeout(() =>...

7614浏览
4推荐
0评论

使用 Nodejs 开发的 SpaceX-API 开源了! 原创

上面是这个图片不是从网上随便找的,来自于 SpaceX-API 项目的 Github 网站,想起了之前说的一个玩笑 “面试造火箭” 这次是真的造火箭了。。。 SpaceX-API 是什么? SpaceX-API 是一个用于火箭、核心舱、太空舱、发射台和发射数据的开源 REST API。 https://docs.spacexdata.com 展示了所提供的 API 接口,还包括多种语言的接口调用,下图右侧展示 Nodejs 的调用示例及相应返回值。 技术栈是什么? 部署在美国中部 Linode 服务器上。 使用了 Nodejs 的 Koa 框架。

9552浏览
6推荐
1评论

Nodejs 中 ES Modules 入门使用讲解 原创

2020-05-26 Nodejs v12.17.0 LTS 版发布,去掉 --experimental-modules 标志。 虽然已在最新的 LTS v12.17.0 中支持,但是目前仍处于 Stability: 1 - Experimental 实验阶段,如果是在生产环境使用该功能,还应保持谨慎,如果在测试环境可以安装 n install v12.17.0 进行尝试。 删除标志也是将 ESM 变为稳定性而迈出的重要一步,根据 Nodejs 官方的发布说明,有望在今年下半年(10 月左右)删除 Nodejs 12 中的警告,届时 Node 14 将会成为 LTS。 ES Modules

8589浏览
0推荐
0评论

Nodejs v14.3.0 发布支持顶级 Await 和 REPL 增强功能 首发

本周,Nodejs v14.3.0 发布。这个版本包括添加顶级 Await、REPL 增强等功能。 REPL 增强 通过自动补全改进对 REPL 的预览支持,例如,下图中当输入 process.ver 之后,不需要输入剩下的实际内容,它帮我们生成了自动补全的输入预览。 顶级 Await 支持 不再需要更多的 "async await, async await..." 支持在异步函数之外使用 await 关键字。 REPL 环境下应用 在 REPL 环境下做了一个测试,似乎并没有正常工作,得到了一些错误,这是为什么呢? 根据规范,仅支持在 E

1872浏览
1推荐
0评论

使用 TypeScript 快速开发 Serverless REST API 首发

这是一个对于 AWS Lambda Functions 的简单 REST API 项目,使用 TypeScript 语言编写,数据存储采用 MongoDB Atlas 云数据库,从编码到 AWS Lambda 下的单元测试,再到部署、日志调试完整的介绍了如何快速编写一个 FaaS 函数。 本文你将学习到 REST API with typescript MongoDB Atlas data storage Multi-environment management under Serverless Mocha unit tests and lambda-tester interface test AWS lambda...

6951浏览
1推荐
0评论

TypeScript 入门篇使用介绍 首发

TypeScript 是 JavaScript 的超集,在学习本文前希望你能先掌握 JavaScript、ES6 等基础语法的使用并有一定的实践,本文相对基础,从为什么使用 TS、开发环境搭建、参数类型声明几个方面介绍。 说明:TypeScript 下文会简称 TS。 为什么要使用 TS 类型安全,可以类比 Java。 TS 面向对象理念,支持面向对象的封装、继承、多态三大特性 类似 babel,ES6 ES7 新语法都可以写,最终 TS 会进行编译。 生产力工具的提升,VS Code + TS 使 IDE 更容易理解你的代码。 开发

6482浏览
0推荐
0评论

TypeScript 面向对象程序设计(OOP) 原创

在 JavaScript 中 ES6 之前我们使用函数(构造器函数)和基于原型来创建一个自定义的类,但这种方式总会让人产生困惑,特别是习惯了 Java、PHP 等面向对象编程的同学来说更加难以理解。 抽象一个类 面向对象编程的基本单位是对象,但对象又是由类实例化的,所以我们第一步需要先知道怎么去声明一个类。 类的声明 类的声明使用 class 关键词,类名与变量、函数等命名规则类似,这里要首写字母大写,类名后跟上一对花括号可以理解为的类的主体,类的主体三部分组成:成员属性、构造函

5348浏览
0推荐
0评论

Nodejs Stream pipe 的使用与实现原理分析 原创

通过流我们可以将一大块数据拆分为一小部分一点一点的流动起来,而无需一次性全部读入,在 Linux 下我们可以通过 | 符号实现,类似的在 Nodejs 的 Stream 模块中同样也为我们提供了 pipe() 方法来实现。 1. Nodejs Stream pipe 基本示例 选择 Koa 来实现这个简单的 Demo,因为之前有人在 “Nodejs技术栈” 交流群问过一个问题,怎么在 Koa 中返回一个 Stream,顺便在下文借此机会提下。 1.1 未使用 Stream pipe 情况 在 Nodejs 中 I/O 操作都是异步的,先用

2072浏览
1推荐
1评论

Nodejs 中基于 Stream 的多文件合并实现 首发

本文先从一个 Stream 的基本示例开始,有个初步认识,中间会讲在 Stream 中什么时候会出现内存泄漏,及如何避免最后基于 Nodejs 中的 Stream 实现一个多文件合并为一个文件的例子。 一个简单的 Stream 操作 创建一个可读流 readable 一个可写流 writeable,通过管道 pipe 将可写流绑定到可读流,一个简单的 Stream 操作就完成了。 const fs = require('fs'); const readable = fs.createReadStream('./test1.txt'); const writeable =...

2210浏览
0推荐
0评论
首页上一页123456下一页尾页
意见反馈 帮助中心 APP下载
官方微信