
灵活的Javascript
UsherYue
进入研发行业10年,曾任职与多家创业公司,负责核心研发工作,团队建设管理工作。
展开
-
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 评论 -
js解析php格式的表单到json对象
/** * JsonParse * Created by usher.yue. * User: usher.yue * Date: 17/9/7 * Time: 13:50 */class JsonConvert { /** *是否可合并 去除特殊类型和 日期类型 * @param value * @re原创 2017-09-08 13:19:00 · 1366 阅读 · 0 评论 -
利用js解析php的表单数据
利用js解析php的表单数据/** * JsonParse * Created by usher.yue. * User: usher.yue * Date: 17/9/7 * Time: 13:50 * 心怀教育梦-烟台网格软件技术有限公司 */var obj = { 'data[][classid][0]': '1000150097620084286', 'da原创 2017-09-07 21:50:11 · 748 阅读 · 0 评论 -
JavaScript 原型链、prototype、__proto__详解
1、背景 Javascript的继承模型、原型链等等概念比较晦涩难懂, 很多人过去在使用Javascript的时候并没有刻意去搞明白其中的原理,今天笔者一步一步分析一下JavaScript中的继承、原型链、prototype、__proto__。 笔者并不打算写过多的文字解释原理,而是希望将原理总结成代码片段更便于理解。2、JavaScript继承是如何实现的? 你只需要知道JavaScr原创 2017-02-22 15:58:51 · 617 阅读 · 0 评论 -
过目不忘 JS 正则表达式
正则表达式,有木有人像我一样,学了好几遍却还是很懵圈,学的时候老明白了,学完了忘光了。好吧,其实还是练的不够,所谓温故而知新,可以为师矣,今天就随我来复习一下这傲娇的正则表达式吧。为啥要有正则表达式呢?其实就是因为计算机笨(这话不是我说的),比如123456@qq.com,我们一看就是邮箱,可是计算机不认识啊,所以我们就要用一些计算机认识的语言,来制定好规则,告诉它符合这个规则的就是个邮箱,这样计转载 2016-07-19 12:34:52 · 2565 阅读 · 0 评论 -
灵活多变的Javascript
最近看到一篇文章写到灵活的 Javascript ,甚是感叹Javascript的强大。 Number.prototype.add=function(x){ return this+x ; }; Number.prototype.subtract=function(x) { return this-x ; } ; Number.pr原创 2015-02-11 10:01:13 · 956 阅读 · 0 评论