Simple is Happiness
Less is more
JavaScript
node.js创建aria2代理服务器:使用net.socket转发rpc或http request请求,替换websocket
by ourjs keys Node.JS JavaScript 1585211369965

Aria2 BT下载可通过网页端访问,网页站通过RPC与Aria程序通讯。
Aria2通过websocket来调用aria2的rpc服务,实现状态查询、创建下载任务,这样可以解决ajax的跨域问题。不过这样NAS服务器要新开一个端口,而且旧浏览器并不支持。此时可使用代理服务器。

request停止维护:用node.js实现http网页爬虫抓取,模拟ajax\post请求,大文件上传下载
by ourjs keys Node.JS JavaScript 1585183607496

最近 node.js 一个比较出名的 http request 模块停止维护了。其实这个模块已经变得非常臃肿,模块依赖过多,体积过大,接口不统一。

其实现在node.js的http模块已经非常完善,几行代码就能自己写一个。模拟post指定 data 即可:

request({ url: 'http://ourjs.com/home', data: { abc: 1 } }, function(err, response, data) {
console.log(data)
})
Node.JS如何按顺序调用async函数,如何判断是否为async函数,在mocha中自动化测试async/await代码
by ourjs keys Node.JS JavaScript 1582084017734

在Node.JS中,如果你即不喜欢回调代码嵌套,也不喜欢promise的链式写法,可以使用async/await将程序改造成顺序执行的。那么调用时和普通函数调用有何不同? 因为 await 只能在async中调用,因此可以:

(async () => {
await asyncCall()
console.log(2)
})();
node.js将回调函数嵌套,用promise改造成async/await顺序执行:异常处理和返回多个参数
by ourjs keys Node.JS JavaScript 1582014789067

在ES6语法中,可以通过async/await将上面的回调函数按顺序执行。

首先将原来的方法 promisify 化,引用 util 库将 step 函数即可:

const util = require('util')

var stepAsync = util.promisify(step)

然后用 async/await 顺序执行,注意 await 只能在 async 函数中使用

var test = async function() {
let result1 = await stepAsync(0)
let result2 = await stepAsync(0)
console.log(result1, result2)
}

test()
使用node.js和oAuth2协议集成Github/LinkedIn第三方登录以OnceOA模块源码为例
by wx_15922 keys JavaScript Node.JS OnceOA 1579175459634

OAuth 2.0 是一个行业的标准授权协议。它的最终目的是为第三方应用颁发一个有时效性的令牌 token。使得第三方应用能够通过该令牌获取相关的资源。常见的场景就是:第三方登录。登录流程大致如下:

image

JavaScript在Array数组中按指定位置删除或添加元素对象
by ourjs keys JavaScript 1574084865071

JavaScript的数据中可通过splice/slice在指定位置添加或删除元素。另外还有slice、delete等方法实现。

splice方法向/从数组中添加/删除项目,然后返回被删除的项目。该方法会改变原始数组。

arrayObject.splice(index, howmany, item1, ..., itemX)

node.js含有%百分号时,发送get请求时浏览器地址自动编码的问题
by ourjs keys JS学习 JavaScript 1570672932287
目前浏览器会对地址,进行编码,比如这个文件名:
sales\报表.png
在发到后台时,会自动编码成:
/file/view/sales/%E6%8A%A5%E8%A1%A8.png
让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度
by ourjs keys JS学习 JavaScript 1564563777511
pre显示文本内容时是不会自动换行的,此时可以添加一些CSS来解决:HTML中pre和textarea可以显示预格式化的文本。即保留空格和换行符。而不必添加<br>和&nbsp;等HTML元素来添加换行和打印空格。

pre {
    word-wrap: break-word;
    white-space: pre-wrap;
    padding: 9.5px;
    background-color: #f5f5f5;
    border: 1px solid #ccc;
}
Facebook发布全新JavaScript引擎Hermes:越来越像Java字节码,JS要统一全端?
by newghost keys JS学习 JavaScript 1563509511352
Facebook在Chain React 2019 大会上发布的一个崭新JavaScript引擎: Hermes,比传统JavaScriptJIT,即时运行的方式不同,Hermes需要先将JavaScript编绎成字节码,这一点很像是Java的方式。比测试可观察,Hermes引擎提升性能较为明显,使用预编绎,很容易得知这些提升所产生的原因。

  • 在应用程序可用的时间上,Hermes能提升一倍的时间效率(减少即时执行的语言解释过程)
  • 在安装包下载大小下,Hermes能减少50%的大小(JS被压缩成了字节码)
  • 在内存利用率上,Hermes能节省30%的内存使用(不需要在解释执行时额外产生的临时内存使用)
  • 在嵌入式设备树莓派上编译QuickJS教程:一个C语言编写的极简JavaScript引擎
    by ourjs keys JS学习 JavaScript 1563211266482
    QuickJS 是一个完全由C语言编写的极小型JavaScript引擎,作者是大名鼎鼎的FFmpeg和QEMU的创建者Fabrice Bellard以及C专家Charlie Gordon。QuickJS采用开源MIT协议,不限制商业用途。它是一个“小而完整的JavaScript引擎”,支持最新的ES2019语言规范。
    因为其复杂度要远远低于用C++编写的Google的V8和Mozilla的SpiderMonkey,因此非常适合在嵌入式设备上使用。
    因为完全由C语言编写,可以很方便地集成到一些著名的C语言程序比如,替换掉Redis和Nginx中的Lua脚本。
    由于可以单独将JS编绎成可执行文件,应用场景更加广泛。

     近期热门 - 点击最多
    1. node.js用activex/com+自动化读写excel时查询接口、参数的调试方法
    2. TypeScript定义数字范围类型即仅包含【小时:分钟】的时间类型,每天指定时间点执行任务
    3. 比较测试:用百度文心一言和阿里通义千问写删除文件目录并且是async/await代码
    4. node.js使用TensorFlow入门教程二:什么是张量神经网络运算与矩阵的关系及基本入门代码
    5. node.js使用TensorFlow入门教程一:简介及工作原理环境安装及初始化
    6. node.js用saml2连接Identity Provider服务器完成Azure AD/Active Directory域帐号身份认证
    7. node.js中用typescript连接mongodb数据并设置断开后自动重启连接
    8. git 将本地仓库关连并push远程
    9. 在Windows10上创建node.js开机启动脚本服务Task Scheduler failed to start: Error Value: 2147943711.
    10. Windows和MacOS获取当前Active Directory域的用户名和AD服务器域名

      全端社区 - 最新回复
    1. 如何通过 winax 的 ActiveXObject 或 Excel.Application 往 excel 中插入一张图片
    2. 如何用JavaScript获取某个元素copy selector的CSS选择器
    3. 青否数字人5.0上线,支持真人接管实时驱动!
    4. 遥遥领先!青否数字人直播系统5.0发布,支持真人接管实时驱动!
    5. 比fs.watch更加优秀的Chokidar文件变化检测库
    6. HTML页面嵌入部分使用Vue3,在jQuery应用中用类似Vue2使用Vue3
    7. 克隆自己的数字人形象需要几步?
    8. Node.JS中Fetch/Axios连接Strapi服务器端localhost,Next.JS后端SSR请求返回connect ECONNREFUSED,但客户端CSR正常
    9. node.js用activex/com+自动化读写excel时查询接口、参数的调试方法
    10. TypeScript定义数字范围类型即仅包含【小时:分钟】的时间类型,每天指定时间点执行任务

      开源的 OurJS
    OurJS开源博客已经迁移到 OnceOA 平台。

      关注我们
    扫一扫即可关注我们:
    OnceJS

    OnceOA