OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

ourjs

Node.JS枚举统计当前文件夹和子目录下所有代码文件行数

分享 by ourjs 1566461572402
使用时将此脚本文件命名为lines.js,然后复制到需要统计的文件夹下,然后执行
node lines.js
然后会统计每一个代码文件的长度,和代码总行数:

$ node lines.js
lines.js 56
package.json 6
...
LINES: 40464

在Windows平台上用命令行创建tar.gz压缩包和解压

分享 by ourjs 1566385942005
如果在Windows上安装了Linux子系统,可以用Linux命令。 
创建.tar.gz
tar -czvf dwt.tar.gz dwt/
解压.tar.gz
tar -xzvf dwt.tar.gz -C tmp/

node.js函数如何获取调用者的文件目录路径: 用callsite获取错误堆栈的每一层文件名及路径

分享 by ourjs 1566375934210
在node.js中有时侯会想从被调用函数中获取调用者的文件位置和路径。可以用以下方法。使用这个模块可以获取调用堆栈的文件目录

var path = require('path'),
    callsite = require('callsite');

module.exports = {
  someFn: function () {
    var stack = callsite(),
        requester = stack[1].getFileName();

    console.log(path.dirname(requester));
  }
};

让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度

JavaScript by ourjs 1564566992527
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;
}

Node.JS的竞争对手?QuickJS入门教程,使用os模块读写文件,并将JavaScript编绎成可执行文件

Node.JS by ourjs 1563508084054
QuickJS 是一个完全由C语言编写的极小型JavaScript引擎,支持跨平台运行,并且有一些Java的特质,可将JS直接编绎成二进制文件。内置的系统模块还可以直接读写文件,动态加载脚本。目前还不支持net模块,不过已经有人在pull request中提交了merge请求。不久将可以直接使用系统Socket或发送http请求,构建web服务器。

由于非常精简,而且拥有JavaScript的全部功能,可以预见,QuickJS将是Node.JS在嵌入设备,尤其是低端设备上较强的竞争对手。

在嵌入式设备树莓派上编译QuickJS教程:一个C语言编写的极简JavaScript引擎

JavaScript by ourjs 1563508071005
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编绎成可执行文件,应用场景更加广泛。

树莓派4对比测试:性能提升3倍启动时间反而变慢?TF卡成最大瓶颈

分享 by ourjs 1561439601985
全新的第四代树莓派(Raspberry Pi 4)发布了,是有史以来最强的树莓派,性能可比主流电脑。但国外某位小哥在做完性能测试对比发现,相比3B,提升最大的是外接USB3.0的读写速度,提升了6倍。但其它性能提升并不是特别明显,启动时间反而变慢了。

道理很简单,目前RaspberryPi 只能从TF卡启动,TF卡的读写速度目前只有10~30M/s。因而完全无法发挥出树莓派4千兆网卡,USB3.0的速度优势。反而要加载更多的系统驱动,启动时间变慢也不足为奇。
 
树莓派3B+将原来100M网卡提升到了300M,而不是千兆也是出于这个原因,因为最大只能利用到30M/s的传输速度。未来树莓派要有质的提升,可能还需要更小,更便宜的固态硬盘出现了。不过目前接外一个USB3.0的移动硬盘也是个不错的选择。

GO有语法缺陷,缺少泛型、public/private、三元运算符?我不喜欢 Go 语言的十个理由

分享 by ourjs 1561089856627

Go 语言有多火爆?国外如 Google、AWS、Cloudflare、CoreOS 等,国内如七牛、阿里、知乎等都已经开始大规模使用 Go 语言开发相关产品,可以说它是近来风头最盛的编程语言之一。但再好的编程语言也不会是完美的编程语言,本文作者 Lawrence 使用了三年 Go 语言,并在这三年间参与了几个大型 Go 语言项目,但三年后他彻底放弃 Go 语言,而且不打算在新项目中使用它。

Go 语言带给他的总体印象是:“好的方面非常好,不好的方面实在令人无法忍受”。Lawrence 在一篇博客文章中列出了他不再喜欢 Go 语言的十大理由,这篇文章很快在 HackerNews 上引发热议,下面就让我们一起来看看这十个理由到底有哪些。

使用JavaScript的Proxy监听对象属性变化并进行类public/private的访问控制

JavaScript by ourjs 1559993279181
Proxy是ES6的引入的一个对象监听机制。可视为JavaScript对象的一个代理中间件。用户在访问对象时,会触发自定义行为。
Proxy最简单的用法是可以监听对象属性的变化,比如下面的,当 obj 的 visit 属性改变时,自动更新页面上相应的 input元素值。

var obj = {}

var handler = {
  set: function(target, name, value) {    
    //改变被代理对象的值,使之保持一致
    target[name] = value

    var input = document.querySelector('[name=' + name + ']')
    if (input) {
      input.value = value
    }
  }
}

var proxy = new Proxy(obj, handler);
proxy.visit = 100

JavaScript求一个字符串的字节长度

JavaScript by ourjs 1559182204215
某些场景可能会对输入内容的字节长度有限制,比如说RSA加密算法。但 String.prototype.length 只会统计字符串的字符个数,并不是字节长度。

同样的字符数,中文要比英文多占用1倍的空间。此时可以通过chartCodeAt来统计字符长度。


分享到