阿里雲前端周刊 - 第 25 期

推薦

1. Chrome 61 新特性介紹

developers.google.com/w

Chrome 61 中即將原生地支持 JavaScript 模塊,意味著開發者可以不用 Babel 等轉換器即直接在瀏覽器中運行模塊化代碼。除此之外,Chrome 61 還允許開發者使用 navigator.share 來觸發 Android 原生的分享對話框,並且引入了 WebUSB 介面來訪問受信的 USB 設備;

2. Yarn 1.0 發布

code.facebook.com/posts

著名的 JavaScript 包管理器 Yarn 終於發布了其 1.0 版本,目前已經有超過 175000 個 Github 上的項目包含了 yarn.lock 文件,每個月有超過三十億的下載量。在新版本中,Yarn 引入了工作空間、自動合併 lockfiles、可選擇的版本解決等特性,並且進行了其他一系列的性能提升與錯誤修復等工作。

3. TypeScript 與 Webpack 的激情碰撞

medium.com/webpack/type

本文是 ts-loader 的核心維護者之一,分享的多個能提升 Webpack 中 TypeScript 使用體驗的插件。fork-ts-checker-webpack-plugin 能夠利用子進程來進行類型校驗,HappyPack 則允許並發處理多個文件從而提升 Webpack 的編譯速度,thread-loader 與 cache-loader 還能進一步提升編譯速度;

4. V8 中的 Fast 屬性

zhuanlan.zhihu.com/p/29

在這篇博客中,我們想解釋 V8 如何在內部處理 JavaScript 屬性。從 JavaScript 的角度來看,屬性只有一些區別。JavaScript 對象主要表現為字典,字元串作為鍵名以及任意對象作為鍵值。然而,該規範在迭代過程中對整數索引(integer-indexed)屬性和其它屬性進行了不同的處理。

其它

1. 探索編碼的世界

imhjm.com/article/599fb

本文從二進位編碼講起,到整數到小數,再到字元編碼,中間穿插相應js代碼,希望通過這次探索,能讓讀者對js大數/精度、亂碼、node的Buffer等等有更進一步的理解,以及對計算機編碼的認識更加深刻。

2. 使用 CSS 的 font-size-adjust 屬性改善網頁排版

github.com/xitu/gold-mi

CSS 中的 font-size-adjust 屬性允許開發者基於小寫字母的高度指定 font-size ,這可以有效地提高網頁文字的可讀性。

3. CSS Filter 實現的融合動畫效果

cnblogs.com/coco1s/p/75

本文主要介紹 CSS 濾鏡的不常用用法,希望能給讀者帶來一些乾貨!通過使用 高斯模糊+對比度 濾鏡,實現有趣的融合效果,如隨機的火焰燃燒效果。

4. 浮點數的渲染

zhuanlan.zhihu.com/p/28

一個有意思的現象,當使用 sticky position 定位的時候,如果它的同層上面元素的高度是浮點數的話,該定位在滑動過程中將會產生一個小的空白間隙。不同的瀏覽器對於小數的處理並不十分一致,現代瀏覽器大多採用智能補償法來處理小數的布局。同時我們常用的 1px 並不是指的真實的 1 像素。比如在手機上 1px 渲染出來會比較粗,並不是手機解析度的 1 像素。可以通過縮放來呈現真實的 1 像素,理解了小數的渲染規則,希望以後如果碰到相似的問題對你有幫助。

5. 奇技淫巧學 V8 之八,常量字元串

zhuanlan.zhihu.com/p/29

V8 為了最佳性能與最少內存使用將某些(如字面量構造的)字元串常量化。內容相同的常量字元串具有相同的引用(共享同一塊老生代空間),在比較時直接比較引用(指針)是否相等即可,故擁有 O(1) 的比較性能。將字元串被設置為對象屬性名時,會被嘗試改造為常量化版本。V8 通過將字元串實例類型轉換為 ThinString 並引用常量字元串來實現隱式就地轉換。當缺少 ThinString 支持並且原始字元串又為引用類型表達時,會使用 ConsString(actual, empty_string) 來實現隱式就地轉換。


推薦閱讀:

V8 性能再升級,支持更多 ES2015+ 語法優化
chrome瀏覽器頁面渲染工作原理淺析
超大文件如何計算md5?
Chrome DevTools: 在 Profile 性能分析中顯示原生 JS 函數
Runtime, Engine, VM 的區別是什麼?

TAG:GoogleChrome | 前端开发 | V8 |