浅谈script标签的defer和async

1. 什么鬼 今天在做一个小需的时候,忽然看到前辈一句吊炸天的代码 <script src="#link("xxxx/xx/home/home.js")" type="text/javascript" async defer></script> 卧槽,竟然同时有async和defer属性,心想着肯定是前辈老司机的什么黑科技,两个一块儿肯定会发生什么神奇化学反应,于是赶紧怀着一颗崇敬的心去翻书翻文档,先复习一下各自的定义。 2. 调查一番 先看看async和defer各自的定义吧,翻开红宝书望远镜,是这么介绍的 2.1 defer 这个属性的用途是表明脚本在执行时不会影响页面的构造。也就是说,脚本会被延迟到整个页面都解析完毕后再运行。因此,在<script>...

阅读全文

2017年,一个Node开发者的好习惯

原文链接:Habits of a Happy Node Hacker 2017 从我们之前发布的 Happy Node Hackers 算起,已经差不多一年了。尽管时间很短,但却已发生了很多变化,一些强大的新工具已经发布了。 Node.js生态系统持续迭代,已出现了更新的最佳实践。 以下是2017年Node开发者的8个新习惯。它们专门针对应用开发者,而不是模块作者,因为他们有不同的目标和约束: 1.锁定你的依赖树 在如今的许多Node应用程序中,你的代码通常只是冰山一角。即便是一个非常小的应用,也可能有数千行的Javascript代码隐藏在node_modules里。如果在package.json中,你的应用指定了确切的依赖项,而这些库可能并不存在。因为随着时间推移,你每次install都可能获得不同的代码,从而导致一些不可预期的潜在bug。 在过去的一年中,Facebook 发布了一种新的包管理器Yarn。它可以让你使用庞大的npm库中的将近50万个模块,并生成一个锁文件(lockfile)来保存你的依赖树中每个模块的精确版本。这意味我们在每次发布应用时都将下载完全相同的代码。 不过,npm也发布一个带锁文件(lockfile)的新版本。...

阅读全文