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进行打包。

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在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. python基于asyncio实现 Redis 的异步操作哈希数据写入 / 读取、发布订阅消息中间件
  2. Node.js 打印vite react+go项目目录树
  3. Angular入门:用Signals状态管理和Bootstrap基础样式实现的用户登录注册实例教程
  4. 用Gitea搭建免费Git服务器自定义Actions配置CI/CD自动化部署和测试流水线
  5. FastAPI+SQLModel+PostgreSQL+React+Vite全栈项目文件结构说明环境搭建与初始化指南
  6. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  7. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  8. React Native为http网络请求添加timeout超时异常处理: 用XMLHttpRequest替换fetch发送的区别
  9. React Native使用fetch发送http登陆验证请求失败:无法读取set-cookie并显示network request failed
  10. 克服Redux的缺点在React/Native中使用消息队列,pubsub-js更加简洁的组件间通信和状态传递方法

  全端社区 - 最新回复
  1. Angular入门:用Signals状态管理和Bootstrap基础样式实现的用户登录注册实例教程
  2. 用Gitea搭建免费Git服务器自定义Actions配置CI/CD自动化部署和测试流水线
  3. FastAPI+SQLModel+PostgreSQL+React+Vite全栈项目文件结构说明环境搭建与初始化指南
  4. Node.js 打印vite react+go项目目录树
  5. valtio基于Proxy代理比redux\zustand更简洁的react状态管理库
  6. Windows与Mac通过git ssh和rsync实现文件共享互传
  7. Windows与Mac通过git ssh和scp实现文件共享互传
  8. React结合vite使用vue3,在纯typescript的react hooks中使用vue
  9. 使用PubSub-JS时ReactNative在后台运行一段时间唤醒后,组件无法scribe到publish的事件,typescript实现一个事件订阅发布组件
  10. React Native为http网络请求添加timeout超时异常处理: 用XMLHttpRequest替换fetch发送的区别

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

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

OnceOA