
Node.js
UsherYue
进入研发行业10年,曾任职与多家创业公司,负责核心研发工作,团队建设管理工作。
展开
-
Vue3+Ts各种错误整理
解决 Vue3项目编译出现 Could not find a declaration file for module 'module-name'. '/path/to/module-name.js' implicitly has an 'any' type原创 2022-08-05 15:01:00 · 2557 阅读 · 0 评论 -
Docker快速搭建Node.js Express运行环境
docker中包含三个概念 容器(Container)、镜像(Image)、仓库(Repository) ,我们可以在一台宿主机上创建 无数个容器用于运行 PHP、Node.js 等等服务, 这些容器都是以 镜像(Image) 为模板来创建的, 这些镜像统统存储与 仓库(Repository) 中。原创 2022-01-12 17:12:08 · 2072 阅读 · 0 评论 -
Node.js插件编写(9)-本地安全线程实现JS Promise
这篇文章来实现的是在C/C++插件中,实现Native Promise, 调用 Native Thread执行后台任务, 执行玩后台任务后,返回到JS前端, JS前端可以通过 await关键字等待返回。Promise实现原理下面一些封装是实现本插件的核心,没有什么文档具体只能去看源码案例分析。Napi::Promise::Deferred //Promise C/C++实现对象Napi::Promise::Deferred::Resolve() // 相对于js promise的resol原创 2022-01-07 16:59:18 · 3454 阅读 · 0 评论 -
Node.js插件编写(8)-插件代码通过Emit与js代码进行交互
我们在Node.js中经常用到的一个包是 events ,这个包下的 EventEmitter我们可以看到很多地方都用到了 , 基于这个事件机制我们可以在合适的新号到来的时候去做合适的事情。这种机制用在网络IO、文件读写、异步任务等等场景都非常合适。例如下面的代码const events = require('events');events.captureRejections = true;const ee1 = new events.EventEmitter();ee1.on('som原创 2022-01-06 16:34:47 · 1135 阅读 · 0 评论 -
Node.js插件编写(7)-异步AsyncWorker的代码实现
异步介绍我们在Node.js中经常用到异步机制, 比如异步改变一个文件的访问权限,然后任务完成之后我们收到一个回调通知:代码如下:import { chmod } from 'fs';chmod('chmod.txt', 0o775, (err) => { console.log('The permissions for file "my_file.txt" have been changed!');});原理实现这里我们用到了一个很重要的类,Napi::AsyncWo原创 2022-01-04 16:52:14 · 1044 阅读 · 0 评论 -
Node.js插件编写(6)-导出类对象作为参数传递
前面几篇文章我们写了如何通过C++ 为Node.js 导出 自定义类对象 。 这篇文章我们才更进一步操作一些这个自定义类, 这篇文章我们的目的是 将自定义导出的类对象作为导出函数的参数传递。功能伪代码如下:MyObject obj1=New MyObject(11);MyObject obj2=New MyObject(22);Var ret=Add(obj1,obj2) ; //重点是这里我们将两个对象作为参数传递相加下面我们来编写插件实现代码插件导出类的C++代码 Pa...原创 2021-12-31 15:03:14 · 1713 阅读 · 0 评论 -
Javascript Symbol之迭代器让对象支持for..of遍历
首先我们以数组为例, 我们要知道迭代器迭代的原理,也就是为什么可以支持类似于 for....of的循环语法。迭代器遍历对象原理,看一下下面这个代码,我们发现了迭代器这个玩意,整个过程很类似for...of的过程,只不过我们没有去循环而是一次一次的调用 迭代器.next() const arr1=[1,2,3,4,5];let ite=arr1[Symbol.iterator](); //重要的是这个迭代器console.log(ite.next())//{ value: 1, done:原创 2021-12-31 14:15:59 · 383 阅读 · 0 评论 -
Javascript 正则扩展之dotAll模式
正则表达式中点 (.) 是一个特殊字符,它可以匹配除 换行符(\n)、回车符(\r)、行分隔符、段分隔符、四个字节的UTF-16字符外的任意字符。为了使点(.)可以匹配任意字符,ES9 引入新的修饰符s(dotAll模式),就是让(.) 可以匹配一切字符。代码一,ES9——dotAll模式之前采用\s 类匹配回车、换行等字符let html = ` <ul> <li> <a>C++编程思想</a> .原创 2021-12-31 12:22:16 · 968 阅读 · 1 评论 -
Node.js插件编写(5)-创建类原型以及类工厂
我们前一篇文章写过通过C++为node.js 编写函数工厂和对象工厂的实现 ,这篇文章我们进一步完善,通过Node.js插件 导出类原型, 以及导出一个类工厂函数。我们要让编写的插件导出的类支持new关键字 ,以及可以通过函数直接返回对象,具体js代码如下:var addon = require('bindings')('my_node_addon.node');//通过原型创建对象var obj1 = new addon.MyObject(11);console.log(obj1.va原创 2021-12-30 16:19:24 · 306 阅读 · 0 评论 -
Node.js插件编写(4)-函数工厂与对象工厂的实现
这篇文章我们通过通过nodejs插件完成 函数工厂和对象工厂的例子。首先看下面这段node.js代码,我们引用的my_node_addon插件需要导出createFunc函数 和 createObject函数, 并且 createObject函数返回的对象包含add和addCallback 两个加法函数var addon = require('bindings')('my_node_addon.node');//函数工厂var func=addon.createFunc...原创 2021-12-28 15:39:45 · 880 阅读 · 0 评论 -
Node.js插件编写(3)-普通函数和回调函数的实现
前两节我们讲述了node插件的基础入门,以及需要的环境, 这一节我们来尝试写一个复杂一点的插件, 通过Node-Api 实现插件导出普通函数和回调函数。原创 2021-12-28 14:05:21 · 815 阅读 · 0 评论 -
Node.js插件编写(2)-通过NAN编写简单插件入门
上一篇文章我们介绍了通过Node-Api的方式编写一个插件,并且导出一个函数hello, 这篇文章我们介绍另一种插件开发方式NAN,NAN是出现在Node-Api之前的一种插件开发方式,采用的也是C++的封装。读本文内容仍然需要有C/C++开发基础,如没有请忽略。环境准备Python 3.x环境Node.js 15.x+gcc 8.2.x /VC2022MacOS /Windows编写项目代码创建插件文件夹,并创建package.json文件内容如下,依赖中我们引用了na原创 2021-12-27 15:18:49 · 2258 阅读 · 0 评论 -
Node.js插件编写(1)-通过Node-Api编写简单插件入门
Node.js插件编写(1)-通过Node-Api编写简单插件入门原创 2021-12-24 15:55:00 · 1198 阅读 · 0 评论 -
ES11中的可选链等语法
我们介绍ES11新特性 这个新特性在判断空值的方面非常简单,相关语法如下。1、可选链语法(?.)obj?.prop // 如果存在prop则返回属性 obj?.[prop] // 根据obj是否存在prop来执行[]内的表达式arr?.[index] // 获取arr中的元素当index对应元素存在func?.(args) // func存在调用可选链相关语法//当函数存在时候调用函数var func=(x)=>{ console.log(x);};func?原创 2021-12-18 09:56:49 · 1426 阅读 · 0 评论 -
Node.js与PHP之间通过RSA算法实现签名验证
Node.js与PHP之间通过RSA算法实现签名验证做过web开发的同学都知道我们经常在接口间交互的时候为了防止数据伪造并 且保证安全性我们会采用签名的方式进行验证, 签名的算法我们一般选择RSA非对称加密算法。想了解更多签名与RSA算法知识可以去查阅PKCS#1、PKCS#7相关资料。笔者在做利用Node.js做单点登录的时候涉及到了Node.js项目中产生的签名,然后需要到PHP项目中去验签,原创 2017-08-01 10:15:00 · 2017 阅读 · 0 评论 -
nodejs npm常用命令
npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准。有了npm,可以很快的找到特定服务要使用的包,进行下载、安装以及管理已经安装的包。1、npm install moduleNames:安装Node模块安装完毕后会产生一个node_modules目录,其目录下就是安装的各个node模块。node的安装分为全局模式和本地模式。一般情况下会以本地模式运行,包会被安装到转载 2017-01-07 15:13:49 · 421 阅读 · 0 评论 -
npm install --save 与 npm install --save-dev 的区别
npm install --save 与 npm install --save-dev 的区别以npm安装msbuild为例:npm install msbuild:会把msbuild包安装到node_modules目录中不会修改package.json之后运行npm install命令时,不会自动安装msbuildnpm install --save:会把msbuild包安装到node_modu转载 2017-01-07 15:14:25 · 1007 阅读 · 0 评论 -
谈谈 ES6 的 Promise 对象
开篇首先设想一个日常开发常常会遇到的需求:在多个接口异步请求数据,然后利用这些数据来进行一系列的操作。一般会这样去写:$.ajax({ url: '......', success: function (data) { $.ajax({ // 要在第一个请求成功后才可以执行下一步 url: '......',转载 2017-01-07 17:05:30 · 743 阅读 · 0 评论 -
nodejs的require语句,区别于requirejs
每日进步(25) 目录(?)[-]一require 的基本用法二Module 构造函数三模块实例的 require 方法四模块的绝对路径五加载模块如今的项目很多都是用require(‘http’)这种形式。之前还以为这是requirejs的内容。去查看requirejs的用法:require.config({ paths: { jquery: 'jquery-1.7.2'转载 2017-01-08 13:54:20 · 5779 阅读 · 0 评论 -
大白话讲解Promise(一)
去年6月份, ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范。作为ES6中最重要的特性之一,我们有必要掌握并理解透彻。本文将由浅到深,讲解Promise的基本概念与使用方法。 ES6 Promise 先拉出来遛遛复杂的概念先不讲,我们先简单粗暴地把Promise用一下,有个直观感受。那么第一个问题来了,Promise是什么玩意呢?是一个类?对象?数组?函数转载 2017-01-09 11:43:12 · 676 阅读 · 0 评论 -
nodejs开发 express路由与中间件
路由通常HTTP URL的格式是这样的:http://host[:port][path]http表示协议。host表示主机。port为端口,可选字段,不提供时默认为80。path指定请求资源的URI(Uniform Resource Identifier,统一资源定位符),如果URL中没有给出path,一般会默认成“/”(通常由浏览器或其它HTTP客户端完成补充上)。所谓路由,就是如何处理HTTP原创 2017-01-09 15:12:41 · 616 阅读 · 0 评论 -
prototype和__proto__的概念
一、prototype和__proto__的概念prototype是函数的一个属性(每个函数都有一个prototype属性),这个属性是一个指针,指向一个对象。它是显示修改对象的原型的属性。__proto__是一个对象拥有的内置属性(请注意:prototype是函数的内置属性,__proto__是对象的内置属性),是JS内部使用寻找原型链的属性。用chrome和FF都可以访问到对象的__proto转载 2017-01-16 11:27:35 · 523 阅读 · 0 评论 -
测试框架 Mocha 实例教程
测试框架 Mocha 实例教程作者: 阮一峰日期: 2015年12月 3日Mocha(发音"摩卡")诞生于2011年,是现在最流行的JavaScript测试框架之一,在浏览器和Node环境都可以使用。所谓"测试框架",就是运行测试的工具。通过它,可以为JavaScript应用添加测试,从而保证代码的质量。本文全面介绍如何使用Mocha,让你轻松上手。如果你以前对测试一无所知,本文也可以当作Java转载 2017-02-18 13:47:43 · 2162 阅读 · 0 评论 -
JS的prototype和__proto__
一、prototype和__proto__的概念prototype是函数的一个属性(每个函数都有一个prototype属性),这个属性是一个指针,指向一个对象。它是显示修改对象的原型的属性。__proto__是一个对象拥有的内置属性(请注意:prototype是函数的内置属性,__proto__是对象的内置属性),是JS内部使用寻找原型链的属性。用chrome和FF都可以访问到对象的__proto转载 2017-01-24 18:22:22 · 623 阅读 · 0 评论 -
SSO单点登录的实现原理是怎样的
单点登录在现在的系统架构中广泛存在,他将多个子系统的认证体系打通,实现了一个入口多处使用,而在架构单点登录时,也会遇到一些小问题,在不同的应用环境中可以采用不同的单点登录实现方案来满足需求。我将以我所遇到的应用环境以及在其中所经历的各个阶段与大家分享,若有不足,希望各位不吝赐教。 当用户第一次访问系统1的时候,因为还没有登录,会被引导到认证系统中进行登录,根据用户提供的登录信息,认证系统进行身份转载 2017-01-25 09:55:11 · 2717 阅读 · 3 评论 -
说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
前言:说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决?这两个问题目前都有不同的解决方案,比如数据可以用自定义字符串或者用XML来描述,跨域可以通过服务器端代理来解决。但到目前为止最被推崇或者说首选的方案还是用JSON来传数据,靠JSONP来跨域。而这就是本文将要讲述的内容。 JSON和JSONP虽然只有一个字母的差别,但其实他们根本不是一回转载 2017-01-25 11:14:57 · 537 阅读 · 0 评论 -
JavaScript 原型链、prototype、__proto__详解
1、背景 Javascript的继承模型、原型链等等概念比较晦涩难懂, 很多人过去在使用Javascript的时候并没有刻意去搞明白其中的原理,今天笔者一步一步分析一下JavaScript中的继承、原型链、prototype、__proto__。 笔者并不打算写过多的文字解释原理,而是希望将原理总结成代码片段更便于理解。2、JavaScript继承是如何实现的? 你只需要知道JavaScr原创 2017-02-22 15:58:51 · 617 阅读 · 0 评论 -
node 通过指令创建一个package.json文件及npm安装package.json
描述包的文件是package.json文件.一个这样的文件,里面的信息还是挺大的.我们可以放弃手动建立.为了练手我们有命令行来建一个这样的包;完成name,varsion....license项的信息填写后会出现这样一段话.上面是我们填写的信息,下面我们输入yes,就完成了package.json包的建立.现在我们去这个路径下去找我们的包.npm安装package.json时 直接转到当前项目目转载 2017-01-07 15:03:41 · 2766 阅读 · 0 评论