当前标签

JavaScript

JavaScript 是一种跨平台、面向对象的脚本语言。它是一种小巧轻量级的语言。在主机环境(例如,Web 浏览器)中,JavaScript 可以连接到其环境的对象,以提供对它们的编程控制。 -MDN

JavaScript里如何避免使用可能为null对象的属性

2021-09-20大约8分钟

在JavaScript里,访问一个外面传入的对象的属性前,先判断这个对象是否为 或者 会是个很好的习惯。 勤快人的写法 一看这个代码,就知道写代码的人很严谨,为了获取 ,把整个属性链上的对象都判断了一下是否为空,可以有效地防止程序出错。 有点懒的人的写法 但是,上面的写法有点要人太勤快了点,要敲好多代码来判断,并且一堆的 语句,看着不怎么爽。那怎么省事呢?我有 lodash 啊!这么写: 看起来是...

如何在Mobx里实现一个异步的action?

2021-09-11大约5分钟

使用Mobx的时候,store里的状态的改变,默认情况下,必须经过action来操作,这可以让状态修改的操作在代码里面更加明确,也可以更好地组织代码。 对于普通同步的action,这个参考最简单的Mobx例子就可以了。但是对于异步的action,这点需要留意一下。 如果是用 ,那么 函数里传入的应该是一个action;如果是用 / , 之后的代码在运行时实际上仍旧是一个类似callback的一个...

Jest的VSCode插件

2021-09-10大约7分钟

VSCode的扩展里面有不少很好的Jest插件。在VSCode的扩展里面搜jest,就会看到安装下载最多的那些插件。比如: 这些插件里面,尤其是前两个值得考虑一用。 Jest 这个是Facebook官方的插件,功能最强大,有这些功能: 打开项目时,Jest会自动跑所有的测试。 内联显示单个失败/通过。 在问题检查器中显示失败的测试。 突出显示 函数旁边的错误。 为快照文件添加语法高亮。 失败快照的...

如何避免HTML里面的JSON数据导致XSS安全问题?

2021-09-01大约12分钟

在HTML里面,在 节点里面输出页面上需要用到的状态数据是个很常见、标准的用法,比如: 这样,在网页里面运行的JS就可以很容易读取这些数据,然后为UI加上更动态的功能。 但是,这样安全吗? 之前我以为是的,但是后来因为在页面上加了这样一段示例代码,整个页面就乱了。 页面变成了这样: 很明显,是页面的HTML结构被破坏了,并且是JSON里面的数据导致的。 把页面上有问题的JSON检查了一下,发现浏览...

如何用JavaScript里校验字符串?

2021-08-31大约3分钟

为了保证程序能正常运行,及安全运行,我们通常都需要记得要校验用户的输入。在JavaScript里, validator 这个库可以很容易做好这件事情。 在Node.js里,可以这么写: 在ES6里,可以这么写: 这种方式可以方便webpack等打包工具使用tree-shaking的功能,来减少打包出来的JS文件的体积。 在浏览器里,可以这么写: 详细内容,可以参考文档: https://www.n...

如何用JavaScript爬取一个网页?

2021-08-30大约6分钟

爬取一个网页是一个网络爬虫的一个最基本的操作,那么如何用JavaScript来实现这个呢? 简单来说,爬取一个网页,需要以下三步: 1. 根据URL下载一个网页 我们使用 axios 库来下载我们的网页。Axios是一个非常简单易用、符合标准,又支持Promise的一个HTTP客户端的库,因此用它来开始我们的示例非常容易。 在上面的例子里,我们实现了一个 函数,这个函数会下载通过参数 传入的网址。...

如何在JavaScript里面mock时区?

2021-08-30大约8分钟

在做JavaScript测试的时候,如果我们的代码里有用到日期,那么可能在某些情况下会导致测试不能稳定跑。比如:对包含日期显示的UI做了Snapshot测试,但是测试代码可能会在本地、远程服务器等环境跑,时区却不一样。 这种情况下,我们就希望执行测试的时候,代码获取的是一个固定的时区,而不是运行电脑设置的时区。我找了一些资料,发现有一些办法: 1. 使用环境变量来设置Node.js代码的时区。 可...

如何在Node.js里发送电子邮件?

2021-08-30大约2分钟

发送电子邮件是个软件系统里很常用的一个功能,虽然目前短信通知也很流行,但是邮件仍然是一个不可缺少的部分。 在Node.js里发送电子邮件,也很简单,我们只要用 Nodemailer 这个库就能实现了。 我们只需要把上面 里需要替换的部分用配置里的值,然后 里的发件人( )、收件人( )、主题( )等内容替换成自己的内容就可以了。...

如何解决Hapi.js因为第三方cookie导致的400错误?

2021-08-29大约3分钟

网站使用百度统计的时候,如果访问了百度站长平台,等和百度有关的网站,那么可能会导致cookie里面被加入了一些重复或者不规范的cookie。 这时候,使用Hapi.js的网站就会报400错误的页面: 如果出现这个问题,如何解决? 问题原因是Hapi.js对这种不规范的cookie做了严格的检验处理,解决的话,只要配置一下它的server的state选项 就好了。 这种方式会忽略请求里面有问题的co...

如何在Chrome里获得console.timeEnd()的值?

2021-08-28大约4分钟

在写上一篇示例代码《 如何在JavaScript里拼接字符串? 》的时候,我想让最后一个例子里的代码里 的值能够在运行结果框里面显示,但是却无法找到解决的办法。 因此,专门想一下如何解决这个问题,网上搜索了一下,建议是这样的:使用 来计时,代码可以这么写: 这样做,实际上是不再用 / 来计时,而是使用了 这个API已经在 主流的浏览器 都有支持,可以放心使用。 为什么不用 的方式呢?原因是其不如 ...