javascript/typescript
文章平均质量分 75
javascript/typescript
过客猫2022
这个作者很懒,什么都没留下…
展开
-
阮一峰发布《TypeScript 教程》
TypeScript 教程》是一份 TypeScript 开源教程,介绍基本概念和用法,面向初学者。装饰器(Decorators)改用全新语法。因此他重写了这一章,于是装饰器现在就有。两章,因为 TypeScript 同时支持这两者。阮一峰表示,今年 3 月份快写完这份教程的时候,转载 2023-08-09 11:46:47 · 2678 阅读 · 0 评论 -
javascript支持带样式的excel导出库
之前一直使用node-xlsx这个来生成excel文件。大多数的情况下,这个完全胜任。前端时间,要求输出合并单元格,这个支持,然后要求居中,就嗝屁了~。没有办法,只好去找了。最后找到一个xlsx-js-style,符合要求,与node-xlsx一样,都是基于xlsx的库。但是我的代码都是使用node-xlsx的,批量替换会改很多代码。于是,我fork了node-xlsx,然后用xlsx-js-style替换了xlsx,再把xlsx-js-style全部导出,设置单元的时候,这样就可以用代码提示,不用盳猜了。原创 2023-04-19 10:45:04 · 528 阅读 · 0 评论 -
NodeJS V8引擎的内存和垃圾回收器(GC)
不同的语言 GC 实现都不一样,比如Java和GoJava:了解JVM(对应Node V8)的知道,Java也采用分代策略,它的新生代中还存在一个eden区,新生的对象都在这个区域创建。而V8新生代没有eden区。Go:采用标记清除,三色标记算法不同的语言的 GC 实现不同,但是本质上都是采用不同算法组合实现。在性能上,不同的组合,带来的各方面性能效率不一样,但都是此消彼长,只是偏向不同的应用场景而已。转载 2023-03-29 10:52:56 · 626 阅读 · 0 评论 -
WebStorm 2023.1 最新变化
这个版本中还有一项 Vue 特定的改进值得关注。现在,您将在 Vue 模板中获得自定义组件事件的代码补全。它在 JavaScript 和 TypeScript 中相同。转载 2023-03-29 09:35:03 · 664 阅读 · 0 评论 -
精通TypeScript:掌握20个提高代码质量的最佳实践!
TypeScript是一门使用十分广泛的非常适合开发现代应用的开源语言。得益于它先进的类型系统,开发者可以使用它来编写高鲁棒性,高可维护性和高可扩展性的代码。虽然是这样说,不过如果真的想发挥它真正的威力来编写出高质量的项目代码的话,理解和遵循一些最佳实践是必不可少的。因此在本篇文章中我将会带大家一起深入到TypeScript的世界来学习21个关于它的最佳实践,最后让大家可以精通这门语言。转载 2023-03-28 10:37:39 · 247 阅读 · 0 评论 -
nodejs的后端框架egg,thinkjs,nestjs,nuxtjs,nextjs对比
nodejs的后端框架egg,thinkjs,nestjs,nuxtjs,nextjs对比原创 2023-03-24 09:18:12 · 4255 阅读 · 0 评论 -
TypeScript 诞生 10 周年
当时微软意识到 JavaScript 未来将会被应用到无数场景,而且他们公司内部团队在处理复杂的 JavaScript 代码库时面临着巨大的挑战,所以他们觉得有必要创造强大的工具来帮助编写 JavaScript—— 尤其是针对大型 JavaScript 项目。它是 JavaScript 的类型化超集,可被编译成常用的 JavaScript。这些目标指导着 TypeScript 的发展方向:关注类型系统,成为 JavaScript 的类型检查器,只添加类型检查所需的语法,避免添加新的运行时语法和行为。转载 2022-10-10 09:12:38 · 127 阅读 · 0 评论 -
nest笔记十:typeorm使用经验小结
写这小结的时候,typeorm已经更新0.3.9了, 与之前0.2.x相比,变化蛮大的。这里的内容也是针对0.3.7及以上的版本原创 2022-09-24 13:51:35 · 4016 阅读 · 0 评论 -
一个使用typescript实现的excel转json的工具
基于typescript的实现的excel2json工具这个项目的目录:https://github.com/zdhsoft/excel2json_by_ts2010年的时候,我用python写了一个, 用了好些年。2022年用typescript重写了一下,简化很多 https://github.com/zdhsoft/excel2json_by_ts写的很匆忙,代码有点乱,注释比较少。原创 2022-09-09 11:33:21 · 812 阅读 · 0 评论 -
nest笔记九:参数校验使用延伸
默认的呢况下,参数校验只针对DTO中已经存在的参数,进行校验。而未在DTO中定义的属性,则会被忽略,不去校验。如果要校验参数,只能是DTO的属性,我们只要增加校验选项就可以了。原创 2022-08-30 00:08:42 · 781 阅读 · 2 评论 -
基于typeorm的nestjs项目使用@zdhsoft/tmg将数据库生成数据模型已更新到0.1.3版(2022-10-10)
【代码】基于typeorm的nestjs项目使用@zdhsoft/tmg将数据库生成数据模型。原创 2022-08-24 19:28:35 · 953 阅读 · 0 评论 -
nestjs系列实践笔记
nest笔记一:创建工程并配置vscode调试环境nest笔记二:使用log4js替换nest默认日志nest笔记三:使用全局拦截器打印请求日志nest笔记四:文件的上传与下载nest记笔五:使用TypeORM连接mysql原创 2021-12-06 14:28:23 · 1025 阅读 · 0 评论 -
# nest笔记八:使用apifox导入swagger
- apifox是一个很不错的类postman工具,除了它国内还有不少类似的工具,我一个偶然的机会,就用它了, 目前使用来看,还不错。- nestjs提供了对swagger的支持,我们只要按它的定义,就可以了- nestjs的官方文档:https://docs.nestjs.com/openapi/introduction...原创 2022-08-13 12:44:36 · 1659 阅读 · 2 评论 -
pm的报警告:“npm WARN config global --global, --local are deprecated
pm的报警告:“npm WARN config global --global, --local are deprecated原创 2022-07-20 13:57:53 · 620 阅读 · 0 评论 -
js笔记十七:typescript项目的jest项目配置全过程
typescript项目的jest项目配置全过程原创 2022-07-18 14:55:02 · 1252 阅读 · 1 评论 -
NodeJS加密算法
当发送方A向接收方B发送数据时,需要考虑的问题有:数据的安全性。数据的完整性,即数据不被篡改。数据的真实性,即数据确实来自于发送方,传输过程中没有被替换。数据的不可否认性,即验证发送方确实发送了数据。A 使用密钥加密数据A 将密文发送给 BB 收到密文后,使用相同的密钥对其进行解密,取得原始数据优点:速度快缺点:密钥被盗就被破解、密钥管理不方便(每个用户都要对应一个密钥)实现算法有:凯撒密码,AES(Advanced Encryption Standard)、DES(Data Encryption Stan转载 2022-06-17 09:43:41 · 3580 阅读 · 1 评论 -
Node.js 18 发布,引入全局 Fetch API 和核心测试运行器模块
来源: OSCHINA 编辑:罗奇奇Node.js 18已发布,该版本的亮点包括将 V8 JavaScript 引擎更新到 10.1、默认启用全局 Fetch API 以及核心测试运行器模块。Node.js 18 是未来 6 个月的“当前”版本,然后在 2022 年 10 月升级为 LTS ,升级为 LTS 后将支持到 2025 年 4 月。新的浏览器兼容 API全局 Fetch API(实验性)Node.js 18 默认提供一个实验性的全局 Fetch API,该实现来自 HTTP/...转载 2022-04-21 09:16:38 · 1332 阅读 · 0 评论 -
typescript的tsconfig中esModuleInterop的到底做了什么?
问题引入很多 react 使用者在从 JS 迁移到 TS 时,可能会遇到这样一个问题:JS 引入 react 是这样的:// jsimport React from 'react'而 TS 却是这样的:// tsimport * as React from 'react'如果直接在 TS 里改成 JS 一样的写法,在安装了 @types/react 的情况下,编辑器会抛出一个错误:此模块是使用 "export =" 声明的,在使用 "esModuleInterop" 标志转载 2022-03-28 00:21:40 · 4457 阅读 · 1 评论 -
TypeScript装饰器完全指南
装饰器让TypeScript的世界更好。 我们使用的许多库都基于这一强大特性构建, 例如Angular和Nestjs。 在这篇博客中我将介绍装饰器和它的许多细节。 我希望在读完这篇文章后,你可以理解何时和如何使用这一强的的特性。概览装饰器本质上是一种特殊的函数被应用在于:类 类属性 类方法 类访问器 类方法的参数所以应用装饰器其实很像是组合一系列函数,类似于高阶函数和类。 通过装饰器我们可以轻松实现代理模式来使代码更简洁以及实现其它一些更有趣的能力。装饰器的语法十分简单,只需要在想转载 2022-03-05 23:28:52 · 5704 阅读 · 2 评论 -
nodejs简单通用工具库 xmcommon 0.9.19发布
xmcommon一个js 通用库, 将一些常用的函数之类的,移到这里方便使用准备用typescript重写这个库,并计划正式发布它的1.0版本。第一个改写版0.9提交,一下就准备单元测试与兼容性测试警告:这个版本改动比较大,可能存在重大bug! 请使用0.1.9这个稳定版Warning: This version has changed a lot, and there may be major bugs! Please use the stable version 0.1.9当前的版本,是原创 2022-02-23 16:02:09 · 424 阅读 · 0 评论 -
2022,前端工具链十年盘点
前史:2009 - 20102009 年前,前端的工具链不由 JavaScript 编写,功能也较为简单,如 make、python、C# 等。2009 年起,前端工具链的前置要求被逐个满足。 模块定义:2009 年,CommonJS 模块定义规范被提出[2]; 语言:2009 年,ECMAScript 5 发布[3],JavaScript 标准更明确,功能更多; 执行环境:2009 年,Node.js 发布初始版本[4]; 包管理:2010 年,npm 发布[5];转载 2022-02-23 11:00:49 · 163 阅读 · 0 评论 -
Nodejs Passport 系列之四:Passport 源码剖析之 OAuth2 认证流程
前言本文是笔者所总结的有关Nodejs Passport 系列之一;本文将从源码分析的角度,来深入剖析 passport 的认证流程;本文为作者原创作品,转载请注明出处;综述OAuth2orize包模块扩展使得 Express 成为具备 OAuth 2 标准的 Authroization Server;本博文笔者仅对笔者目前所关注的 Resource Owner Password Credentials 的认证流程进行剖析,其它的方式可以触类旁通;Resource Owner Pas..转载 2021-12-08 20:36:40 · 835 阅读 · 0 评论 -
Nodejs Passport 系列之三:Passport 源码剖析之认证流程
前言本文是笔者所总结的有关Nodejs Passport 系列之一;本文将从源码分析的角度,来深入剖析 passport 的认证流程;备注,此部分流程依赖于Nodejs Passport 系列之二:Passport 源码剖析之类图及初始化流程剖析作为前置条件;本文为作者原创作品,转载请注明出处;Demo此部分将继续使用Nodejs Passport 系列之二:Passport 源码剖析之类图及初始化流程剖析中的 LocalStrategy 的 demo 来深入分析如何使用 passpo...转载 2021-12-08 20:34:47 · 706 阅读 · 0 评论 -
Nodejs Passport 系列之二:Passport 源码剖析之类图及初始化流程剖析
前言本文是笔者所总结的有关Nodejs Passport 系列之一;本文将从源码分析的角度,来深入剖析 passport 的初始化流程;本文为作者原创作品,转载请注明出处;备注,该系列的源码分析是基于 passport 版本 1.15.6demo笔者将使用这个 demo 来对 Local Strategy 的源码进行剖析;构建项目骨架首先构建 express 项目骨架,这部分内容参考Nodejs Express 系列之二:Express 骨架 Skeleton中小节“如何使...转载 2021-12-08 20:16:27 · 551 阅读 · 0 评论 -
Nodejs Passport 系列之一:基础概念
前言本文是笔者所总结的有关Nodejs Passport 系列之一,本篇文章主要是对其基本的构建原理进行梳理;本文为作者原创作品,转载请注明出处;概述Passport 构建得及其的简单,它被设计为 Nodejs 的中间件;具体的使用过程是将 passport 作为中间件嵌入到某 Express 的请求之前或者之后,用来验证用户的身份;而针对不同的验证方式,Passport 通过提供不同的验证策略(Strategies),通过这些不同的 Strategies 来提供不同的验证逻辑和方式,这些.转载 2021-12-08 19:57:41 · 1051 阅读 · 0 评论 -
javascript系列笔记
js笔记一:js中forEach,for in,for of循环的用法js笔记二:node.js的npm使用理解js笔记三:Setjs笔记四:node 6.9.x for gulp完整配置过程js笔记五:数组基础篇js笔记六:数组功能篇js笔记七:数组的解构与变参js笔记八:classjs笔记九:当运行脚本js笔记十:vscode代码提示js笔记十一:js监测变化并动态加载js笔记十二:利用await和async,将回调函数变成同步的处理的办法js笔记十三:nodejs 原生Big.原创 2021-12-06 14:29:52 · 554 阅读 · 0 评论 -
nest记笔五:使用TypeORM连接mysql
nest记笔五:使用TypeORM连接mysql这个比较简单,在之前的例子中,实际上已经连上了数据库了1. 连接配置TypeORM1.1 首先安装依赖包,@nestjs/typeorm, typeorm, mysql2npm install --save @nestjs/typeorm typeorm mysql21.2 在项目根目录下,生成一个ormconfig.json文件[ { "type": "mysql", "host": "127.0.0.1", "原创 2021-12-06 14:25:49 · 2929 阅读 · 0 评论 -
node一个很强大的命令行封装库,可以让你轻松写出强大的命令行命令
node.js command-line interfaces made easy转载 2021-11-24 11:46:17 · 493 阅读 · 0 评论 -
TypeScript 4.5 正式版发布,大量新特性和功能优化
11月17日,微软发布了 TypeScript 4.5正式版本 ,4.5正式版本和 RC 版本在功能上并没有什么改动,除了添加关于新 JSDoc 特性的注释,不过这个特性也是 RC 版本的新功能,只是当时没有写出来。TypeScript 4.5 正式版新特性:实验性功能:在夜间版本支持 Node.js 运行 ECMAScript 模块 从 node_modules 支持lib 新的Awaited类型和对Promise对象的优化 模板字符串可以用作判断符 引入 es2022 ...转载 2021-11-18 10:24:42 · 363 阅读 · 0 评论 -
nest笔记三:使用全局拦截器打印请求日志
nest笔记三:使用全局拦截器打印请求日志调试的时候,希望能看到每个请求URL和方法以及耗时时间,好像nest默认没有,我暂时没有找到。只好想,自己写一个。第一次是想使用中间件,结果比较尴尬的事情,它处理请求不是使用Promise同步的,不能正确获得请求处理的时间看到官网,说是有一个拦截器,照着实现,果然可以。下面是实现内容。这个就没有新建工程了,是基于nest笔记二:使用log4js替换nest默认日志的工程插件为了更好的编写nest,建议在家安装下面插件,然后就可以vscode的资源管原创 2021-11-18 09:42:49 · 1840 阅读 · 0 评论 -
nest笔记二:使用log4js替换nest默认日志(20220722更新)
nest笔记二:使用log4js替换nest默认日志个人比较喜欢log4js,nest自带的日志,时间格式又不是我想要的,所以我这里实现一个替换nest日志的日志基本上要求时间格式为: YYYY-MM-DD hh:mm:ss.ddd可以明确知道输出日志的是哪一个源文件日志文件支持数量配置,大小配置日志文件支持自动压缩有专门的普通的日志文件和错误日志文件以及彩色的控制台输出。基于上述几点,我这里选择了log4js配置说明log4js配置说明具体如下,我这里是放工程的config原创 2021-11-16 16:36:06 · 2824 阅读 · 3 评论 -
Node.js主流Web框架对比
Node.js是专注高性能服务器开发的javascript运行环境。我们将在这篇文章向大家介绍几款主流Node.js Web框架的特点及优缺点,希望给大家作为参考。作者:noder来源:今日头条|2019-08-29 10:58收藏分享Node.js是专注高性能服务器开发的javascript运行环境。我们将在这篇文章向大家介绍几款主流Node.js Web框架的特点及优缺点,希望给大家作为参考。主要参考的Node.js Web框架包括:express, koa, hapi, re...转载 2021-11-15 15:16:16 · 1409 阅读 · 0 评论 -
log4js为什么没有了replaceConsole
以前在node的版本用log4js是有replaceConsole配置项后,但是我最近给nestjs配置时候,发现他没有了。找到官网:说是引起了一些奇怪的错误,还破坏了核心。如果实在要替换了,也是有有办法的,就是手动绑定{ appenders: { log: { type: 'file', filename: './logs/log.log', maxLogSize: 1024 * 1024 * 50, encoding: 'utf-8', backups: 100, /*.原创 2021-11-13 22:36:31 · 768 阅读 · 0 评论 -
nestjs笔记一:创建工程并配置vscode调试环境
nestjs笔记一:创建工程并配置vscode调试环境环境准备1.准备好node环境去www.nodejs.org下载一个node版本安装。这里就不说了2.准备好nestjs环境在命令行输入:npm i -g @nestjs/cli完成后,nest的cli工具就可以用了创建工程# 在命令行下,创建一个叫demo的工程nest new demo# 在选择npm, yarn等时候,选择你喜欢的# 创建完成后,当就目录就多了一个demo目录,这样就完成工程的创建# 然后进入demo目录原创 2021-11-10 22:45:48 · 3410 阅读 · 0 评论 -
js笔记十六:Weak对象
weak相关的对象文章目录weak相关的对象WeakMapWhy WeakMap?使用理解WeakSetWeakRef历史笔记列表WeakMapWhy WeakMap?Why WeakMap在 JavaScript 里,map API 可以通过使其四个 API 方法共用两个数组(一个存放键,一个存放值)来实现。给这种 map 设置值时会同时将键和值添加到这两个数组的末尾。从而使得键和值的索引在两个数组中相对应。当从该 map 取值的时候,需要遍历所有的键,然后使用索引从存储值的数组中检索出相应的原创 2021-11-04 15:59:38 · 393 阅读 · 0 评论 -
JavaScript Reflect Metadata 详解
引言在 ES6 的规范当中,就已经存在 Reflect API 了。简单来说这个 API 的作用就是可以实现对变量操作的函数化,也就是反射。具体的关于这个 API 的内容,可以查看这个教程然而我们在这里讲到的,却是 Reflect 里面还没有的一个规范,那么就是 Reflect Metadata。Metadata想必对于其他语言的 Coder 来说,比如说 Java 或者 C#,Metadata 是很熟悉的。最简单的莫过于通过反射来获取类属性上面的批注(在 JS 当中,也就是所谓的装饰器)。转载 2021-10-29 11:12:33 · 1043 阅读 · 0 评论 -
reflect-metadata的研究
本文是基于 reflect-metadata库对ts的元编程模式的DI实现详细描述, 力求能将这个过程以及中间的难点讲清楚.reflect-matadata目的有很多设计模式, 比如组合, 依赖注入, 运行时类型断言, 反射/镜像, 测试等希望可以在保持原有class的一致性的前提下为class添加元数据. 一致性是很多工具和库使用元数据的原因 元数据产生的装饰器可以通过改变装饰器来进行组合 元数据不仅仅只能在对象上使用, 也应该被代理Proxy通过相应的traps所使用, 定义一个新的转载 2021-10-29 11:00:40 · 1136 阅读 · 0 评论 -
js笔记十五:Proxy
js笔记十五:Proxy文章目录js笔记十五:ProxyProxy说明语法Proxy构造函数接口的定义ProxyHandler接口的定义测试例子历史笔记列表Proxy说明Proxy 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。语法Proxy构造函数接口的定义// Proxy构造接口定义interface ProxyConstructor { // 创建可以取消的Proxy对象 revocable<T extends原创 2021-10-28 16:35:22 · 308 阅读 · 0 评论 -
js笔记十四:Javascript的笔记Reflect
js笔记十四:Javascript的笔记Reflect文章目录js笔记十四:Javascript的笔记ReflectReflect说明Reflect共有13个静态方法PropertyDescriptor 属性描述信息Reflect.get() 和 Reflect.set()分别是取属性与设置属性的值Reflect.apply() 应用指定的函数Reflect.construct(target,args[, newTarget])Reflect.defineProperty 给对像定义一个属性示例Refle原创 2021-10-28 14:54:16 · 553 阅读 · 0 评论 -
在Typescript项目中,如何优雅的使用ESLint和Prettier
对于Typescript项目的编码规范而言,主要有两种选择ESLint和TSLint。ESLint不仅能规范js代码,通过配置解析器,也能规范TS代码。此外由于性能问题,TypeScript 官方决定全面采用ESLint,甚至把仓库作为测试平台,而 ESLint 的 TypeScript 解析器也成为独立项目,专注解决双方兼容性问题。 最近在我的项目的编码规范中全量的用ESLint代替了TSLint,针对其中遇到的问题做一个记录。用ESLint来规范Typescript代码 用ESLint来规转载 2021-08-23 15:13:12 · 1604 阅读 · 0 评论