推荐
1. Chrome 61 新特性介绍
developers.google.com/web/updates…
Chrome 61 中即将原生地支持 JavaScript 模块,意味着开发者可以不用 Babel 等转换器即直接在浏览器中运行模块化代码。除此之外,Chrome 61 还允许开发者使用 navigator.share 来触发 Android 原生的分享对话框,并且引入了 WebUSB 接口来访问受信的 USB 设备;
2. Yarn 1.0 发布
code.facebook.com/posts/27451…
著名的 JavaScript 包管理器 Yarn 终于发布了其 1.0 版本,目前已经有超过 175000 个 Github 上的项目包含了 yarn.lock 文件,每个月有超过三十亿的下载量。在新版本中,Yarn 引入了工作空间、自动合并 lockfiles、可选择的版本解决等特性,并且进行了其他一系列的性能提升与错误修复等工作。
3. TypeScript 与 Webpack 的激情碰撞
本文是 ts-loader 的核心维护者之一,分享的多个能提升 Webpack 中 TypeScript 使用体验的插件。fork-ts-checker-webpack-plugin 能够利用子进程来进行类型校验,HappyPack 则允许并发处理多个文件从而提升 Webpack 的编译速度,thread-loader 与 cache-loader 还能进一步提升编译速度;
4. V8 中的 Fast 属性
在这篇博客中,我们想解释 V8 如何在内部处理 JavaScript 属性。从 JavaScript 的角度来看,属性只有一些区别。JavaScript 对象主要表现为字典,字符串作为键名以及任意对象作为键值。然而,该规范在迭代过程中对整数索引(integer-indexed)属性和其它属性进行了不同的处理。
其它
1. 探索编码的世界
本文从二进制编码讲起,到整数到小数,再到字符编码,中间穿插相应js代码,希望通过这次探索,能让读者对js大数/精度、乱码、node的Buffer等等有更进一步的理解,以及对计算机编码的认识更加深刻。
2. 使用 CSS 的 font-size-adjust 属性改善网页排版
CSS 中的 font-size-adjust 属性允许开发者基于小写字母的高度指定 font-size ,这可以有效地提高网页文字的可读性。
3. CSS Filter 实现的融合动画效果
本文主要介绍 CSS 滤镜的不常用用法,希望能给读者带来一些干货!通过使用 高斯模糊+对比度 滤镜,实现有趣的融合效果,如随机的火焰燃烧效果。
4. 浮点数的渲染
一个有意思的现象,当使用 sticky position 定位的时候,如果它的同层上面元素的高度是浮点数的话,该定位在滑动过程中将会产生一个小的空白间隙。不同的浏览器对于小数的处理并不十分一致,现代浏览器大多采用智能补偿法来处理小数的布局。同时我们常用的 1px 并不是指的真实的 1 像素。比如在手机上 1px 渲染出来会比较粗,并不是手机分辨率的 1 像素。可以通过缩放来呈现真实的 1 像素,理解了小数的渲染规则,希望以后如果碰到相似的问题对你有帮助。
5. 奇技淫巧学 V8 之八,常量字符串
V8 为了最佳性能与最少内存使用将某些(如字面量构造的)字符串常量化。内容相同的常量字符串具有相同的引用(共享同一块老生代空间),在比较时直接比较引用(指针)是否相等即可,故拥有 O(1) 的比较性能。将字符串被设置为对象属性名时,会被尝试改造为常量化版本。V8 通过将字符串实例类型转换为 ThinString 并引用常量字符串来实现隐式就地转换。当缺少 ThinString 支持并且原始字符串又为引用类型表达时,会使用 ConsString(actual, empty_string) 来实现隐式就地转换。