标签: JavaScript

十个PM2中冷门但实用的功能

PM2发布于2013年,是使用JavaScript开发,主要用于Node.js业务持久化的进程管理器。相对于Systemd、Supervisord等通用进程管理器,PM2对JavaScript的业务更为友好,且使用更为简单,有着丰富的可扩展性,对非JavaScript业务的管理同样出色。可惜的是许多PM2用户对PM2的了解并不多,大部分用户都只掌握了基础的进程管理,其实PM2的能力绝不止于此,充分使用PM2能够让业务开发和维护的效率大大提升。本文就来列举这样十个PM2中冷门但实用的功能,希望能够帮助读者对PM2有新的认识。

继续阅读 十个PM2中冷门但实用的功能

浅谈setTimeout与setInterval函数『不为人知』的第三个参数

提到JavaScript下的setTimeout()setInterval()函数,接触过JavaScript的读者一定非常熟悉:两个函数都接收一个函数和一个延时两个参数,前者用于设置超时,后者用于设置定时执行。但其实这两个函数除了以上两个参数外还有第三个参数。

继续阅读 浅谈setTimeout与setInterval函数『不为人知』的第三个参数

JavaScript实现点击contenteditable的span标签后全选标签文字,类似于this.select()方法

在JavaScript中,我们通常使用this.select()实现可编辑文本框中的全选操作,但对于通过添加contenteditable="true"参数来实现可编辑的span标签,这个方案却并不能奏效,需要多写一些代码来实现相同的功能。这篇文章为大家分享一种在可编辑的span标签内实现全选的方法。

继续阅读 JavaScript实现点击contenteditable的span标签后全选标签文字,类似于this.select()方法

[源码级解析]分析并解决JavaScript里RegExp类中test()方法结果不固定的情况及其源码解析

在开发一个前端表单过程中,我使用了正则表达式对用户填写的内容进行校验,却在使用过程中发现了奇怪的现象:RegExp类的test()方法对同一字符串,在不同时间竟有不同的结果。本文将为读者分享我解决这一问题的方法及其背后的原理。

继续阅读 [源码级解析]分析并解决JavaScript里RegExp类中test()方法结果不固定的情况及其源码解析

三行JavaScript代码屏蔽浏览器的DevTools,保障前端页面的基础安全

尽管大多数浏览器中内置的DevTools为日常开发和调试带来了巨大便利,但在某些需要保证『安全性』的场合,例如在线考试、在线教育、或是一些行业应用,我们也对DevTools『恨之入骨』:抓包、修改数据、插入恶意代码、查看源码、Debug深入原理……
但其实屏蔽DevTools的方法非常简单,简单到只需要三行代码。

继续阅读 三行JavaScript代码屏蔽浏览器的DevTools,保障前端页面的基础安全

如何使用JavaScript判断一个值是否在一个数组中(续)—— JavaScript&TypeScript中的迭代器

『如何使用JavaScript判断一个值是否在一个数组中』一文里,我提到了使用Array.prototype.includes()Array.prototype.indexOf()两种方法来实现这一需求,但其实对于JavaScript这样一门极为灵活的语言来说,实现方法远不止以上两种。

继续阅读 如何使用JavaScript判断一个值是否在一个数组中(续)—— JavaScript&TypeScript中的迭代器

使用轻量插件,轻松美化prompt()与alert()

由于prompt()在不同浏览器下的实现有着巨大差异,甚至有个别浏览器不提供对prompt()的支持,因此定制这个对话框在对用户体验有较高要求的场景下显得非常重要。然而通常用于实现这个功能的库要么过于庞大、要么配置复杂、要么侵入性强,需要对现有的网页进行较多改动,但有一个小众的库却脱颖而出,体积小(gzip后仅4.5kb),效果好。这就是这篇文章要介绍的Prompt-Zepto
继续阅读 使用轻量插件,轻松美化prompt()与alert()

该暴力时必暴力——论alert()及其不知名的两个兄弟

尽管由于工作需要,我不得不写大量的前端代码,但我依旧没有胆量自诩『前端程序员』,也并未花多数精力在钻研前端上。当alert()与其不甚知名的两个兄弟走入我的世界之时,我竟然有点惊喜,因为我又学到了更多的Tricks,又可以“偷懒”了!
继续阅读 该暴力时必暴力——论alert()及其不知名的两个兄弟