ourjs

node.js通过Error.prepareStackTrace获取上层调用函数的文件名地址和行数位置
by ourjs keys Node.JS JavaScript 1587526318956

node.js中可以通过 __dirname 获取当前文件的目录。那么如何在被调用函数中获取调用者的文件地址和函数名以及行数位置?可使用Error.prepareStackTrace来获取StackTrace数组对象,获取调用者文件信息。 

var getCallerPath = function() {
var orig = Error.prepareStackTrace;
Error.prepareStackTrace = function(_, stack) { return stack; };
var err = new Error;
var stack = err.stack;
Error.prepareStackTrace = orig;

// stack[0]为当前函数, stack[1]为调用者,stack[2]为上层调用者
return stack[2].getFileName()
}
JavaScript判断字符串是否为数字类型:Number.isInteger、isNaN、正则表达式比较
by ourjs keys JavaScript 前端 1587257865266

JavaScript中有Number.isInteger可以判断一个字符串是否为整数。不过目前JS没有内置的函数来判断一个数字是否为包含小数的数字,直接用isNaN即可:

function isNumber(val) {
return !isNaN(val);
}
webpack前端项目调试环境安装入门:webpack.config.js禁用UglifyJs只合并JavaScript不压缩混淆代码
by ourjs keys Node.JS JavaScript 前端 1585359029010

webpack是目前比较流行的前端build工具,本质上是一个模块打包器。合并压缩JavaScript,css,图片等。

目前有很多开源项目使用webpack进行打包。

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创建aria2代理服务器:使用net.socket转发rpc或http request请求,替换websocket
by ourjs keys Node.JS JavaScript 1585211369965

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

用node.js在Windows或Linux平台上高性能解压/压缩zip、tar大文件,输出到文件或Stream流
by ourjs keys Node.JS 1584703762929

 另外此方法还支持输出到流,比如说浏览器输出流,或命令行终端:

zip('./zip-util.js', process.stdout, function() {
console.log(arguments)
})
用CSS实现分页符,控制Web网页打印时自动强制分页:page-break-after教程
by ourjs keys css 前端 1584458417362


page-break-after可以实现强制分页,比如始终在<footer>元素后插入分页符, @media print 表示这段CSS只在打印时起作用。

@media print {
footer {page-break-after: always;}
}
SVG矢量图视窗viewBox,嵌套HTML综合实例:建立用户自定义相对坐标系统
by ourjs keys 前端 心得体会 1584406873551

在SVG绘制的任何一个时刻,你可以通过嵌套svg、foreignObject或者iframe来建立新的viewport和用户坐标系。在这篇文章中,我们将看一下我们如何这样做,以及这样做如何帮助我们控制SVG元素并让它们变得更加灵活

怎么通过OnceOA免费实现外网访问家庭、企业内网服务器网站、网盘、办公系统
by ourjs keys OnceOA OnceAI旺司NAS 1583308229354

OnceOA 是一款能够跨平台运行的网盘管理系统,个人用户永久免费。OnceOA 纯Web交互,无需安装任何客户端、APP就可使用。可创建SMB共享目录、SVN/Git数据仓库,在电视手机平板上播放或备份视频或照片,可实现NAS网盘管理,文档管理/同步、知识管理、配置各类企业管理软件等。

OnceOA 基于模块化开发,可安装免费的内网穿透模块 OnceAir,就可实现外网访问,即从公网访问家里的私有云网盘。

onceair_onething.png

Node.JS中回调嵌套和async/await执行空函数性能效率对比测试
by ourjs keys Node.JS C 1582204022881

执行测试文件,测试环境是 node v12.15.0。

$ node testPerformance.js
callback done 1
callback done 0
async done 13

可以看到,按顺序执行同一个空函数4千次,用时为0~1,即在1毫秒内完成。
用async/await方式执行,用时12~14毫秒之间。
不过如果只执行一次,对性能的影响微乎其微。不过在高并发场所,回调函数的性能要优于async/await


 近期热门 - 点击最多
  1. ZOT 极简而强大的 Docker OCI 镜像仓库
  2. 用podman代替docker更轻量更安全的云原生容器:替换国内镜像源web窗口管理及开机自动重新启动
  3. python基于asyncio实现 Redis 的异步操作哈希数据写入 / 读取、发布订阅消息中间件
  4. Node.js 打印vite react+go项目目录树
  5. Angular入门:用Signals状态管理和Bootstrap基础样式实现的用户登录注册实例教程
  6. 用Gitea搭建免费Git服务器自定义Actions配置CI/CD自动化部署和测试流水线
  7. FastAPI+SQLModel+PostgreSQL+React+Vite全栈项目文件结构说明环境搭建与初始化指南
  8. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  9. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  10. React Native为http网络请求添加timeout超时异常处理: 用XMLHttpRequest替换fetch发送的区别

  全端社区 - 最新回复
  1. 本地与云 MQTT通信:消息格式定义与配置
  2. MQTT 桥接(Bridging)介绍:解决弱网可靠传输、断网续传
  3. Mosquitto消息中间件简介与部署:本地MQTT服务器部署
  4. MediaMTX 摄像头部署与配置教程
  5. 在网页上播放摄像头RTSP视频流:实时摄像头在线播放的几种架构
  6. 让Docker在Gitea CI/CD流水线中登录http仓库:手写Docker认证信息
  7. ZOT 极简而强大的 Docker OCI 镜像仓库
  8. 用podman代替docker更轻量更安全的云原生容器:替换国内镜像源web窗口管理及开机自动重新启动
  9. 在无管理员权限的情况下,使用安装Python补全pip临时配置环境变量;即零权限使用node.js/npm
  10. Python鉴权方法:Depends 依赖注入;装饰器;与基于Proxy模式的Session状态管理自动计算脏属性;将用户数据存储在Redis中

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

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

OnceOA