9.3

前端每周清单第31 期: iOS 11 Viewport 解析,Preact PWA 性能优化案例,JS 内存泄露分析
作者:王下邀月熊
编辑:徐川
前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点;分为新闻热点、开发教程、工程实践、深度阅读、开源项目、巅峰人生等栏目。欢迎关注【前端之巅】微信公众号
新闻热点
国内国外,前端最新动态
-
Mastodon 1.6 发布:Mastodon 是免费、开源的去中心化的社会网络联盟,其已经覆盖了超过2000 个节点,拥有超过800000 名用户。Mastodon 1.6 版本是首个完全实践ActivityPub 协议的版本;ActivityPub 是由W3C 提出的新的联邦式通信协议,允许多个节点之间平等通信,交换数据。 -
Node.js 8.5.0 发布:今日发布的Node.js 8.5.0 版本中引入了一系列的新特性与错误修复,其中值得注意的是V8 重新支持Snapshots 、引入了console.group() 、新增了fs.copyFile 与fs.copyFileSync 以更高效地复制文件等特性;详细的特性变更列表请查看原文。 -
Vue 登陆OpenCollective 接受捐赠:随着Vue.js 社区的不断增长,越来越多的贡献者也参与到了项目的开发与维护工作中;Evan 也决定正式在OpenCollective 上开始面向Vue.js 的社区募捐,以更好地维护社区的日常工作。不同于面向个人的Patreon ,OpenCollective 会更加透明,欢迎积极支持Vue.js 。 -
Apollo Client 2.0 新特性介绍:Apollo Client 2.0 版本在保障API 的兼容性的同时带来了更加高效、灵活地使用体验;该版本添加了可修改的请求链、允许自定义生产环境下默认数据的存储等特性,详细地特性与接口变更可以查看原文。
开发教程
步步为营,掌握基础技能
-
基于
Vue.js 构建电影主页:很多人都习惯使用Netflix 这样的在线流服务来观看视频或者电影,而本文即循序渐进地介绍如何利用Vue.js 2.0 来实现简单的美观大方的电影主页。本文依次介绍了相关的数据结构定义与模拟数据创建、构建基于指令的组件、路由划分、数据绑定与状态管理等内容;更多Vue.js 相关资料参考这里。 -
实战中学习
Flexbox :本文是针对Flexbox 的实战提高,不过对于那些即使对Flexbox 一无所知的开发者,本文也提供了一系列的学习教程。本文依次介绍了如何使用Flexbox 构建画廊、卡片、网格、常见的网页布局、富媒体呈现、表单、移动应用布局等内容;更多CSS/SCSS 相关资料参考这里。 -
深入浅出
CSS Transforms :通过transform 属性,我们能够移动、渲染、缩放或者提升任何页面元素;本文即是从最基础的transform 语法开始讲起,介绍生动的案例来让读者体验CSS Transforms 各种不凡的用法。本文首先介绍了translate 、scale、rotate、skew 等常见的变换函数的用法,然后介绍了如何综合利用这些属性来实现复杂的动画,最后还介绍了CSS 中animation 的用法;更多CSS/SCSS 相关资料参考这里。 -
Angular 4 中使用Redux 进行状态管理:SPA 非常适合于构建复杂的现代Web 应用,而状态管理往往是开发中常见的痛点之一。像Angular 这样基于组件的应用划分与开发方式能够更好地架构项目,提升代码的可复用性;而本文即是介绍如何综合使用Angular 4 与Redux 来开发现代应用。本文首先介绍了Redux 中Store 、Actions、Reducers 这些基本的概念组成,然后用Angular CLI 创建简单的Angular 项目,并且引入Redux ;接下来本文详细地介绍了如何使用TypeScript 编写Redux 中的各个组件,从Store 到Action Types 等,最后将这些与组件结合为完整的TodoList 应用。更多Angular 相关资料参考这里。 -
快速构建基于
React 的CMS 系统:CMS 内容管理系统是现代常见的Web 应用形式之一,本文则是介绍利用Firebase 与React 快速开发简单的CMS 系统;Firebase 是云端的实时NoSQL 数据库,其提供了方便的数据操作接口,免去了开发者自行搭建服务器的烦恼。本文首先介绍了CMS 中界面组件的划分与纯组件的实现,然后介绍了CMS 中需要的接口逻辑以及如何用Firebase 实现这些接口;更多React 相关资料参考这里。
工程实践
立足实践,提示实际水平
-
来自
Treebo 的React 与Preact PWA 性能分析:本文是Addy Osmani 大神参与编写的,印度Treebo 公司使用的Preact PWA 性能优化案例;相较于旧版本的网站,新版本在首屏渲染上提高了70% ,初始交互等待时间减少了31% ,大部分的访客在3G 环境下只需要4s 即可以浏览完整内容。本文以React 单页应用为例,讨论了服务端渲染带来的首屏渲染的性能提升;然后讨论了基于路由的代码分割与懒加载,接下来还讨论了PRPL 模式、HTML Streaming、关键路径CSS 、离线静态资源缓存、从React 切换到Preact 等内容。更多PWA 相关资料参考这里。 -
Electron:那些令人烦恼的部分:绝大部分的跨平台编程语言或者框架都有其优势与缺陷,可能更多的开发者了解到的是
Electron 优秀的方面,本文则换个思路来聊聊Electron 中那些令人烦恼的部分。本文依次讨论了应用安装、持续集成与多平台构建、应用体积、局部更新、安全性、代码混淆与保护等内容; -
小米直达服务探秘:如何保证移动
Web 体验?:小米直达服务是小米推出的App 混合开发框架,它可以实现秒开,同时可以在浏览器、短信、微信等地方打开。本文即是小米直达服务Web 体验保障方面的实践分享,讨论了目前移动Web 体验的瓶颈、小米直达服务的机制与核心关键等内容。更多Web 性能优化相关资料参考这里。 -
理解
iOS 11 中WebView 的Viewport :iOS 11 为我们带来了新的状态栏,其刘海造型可能对于像Apache Cordova 或者Ionic 这样的混合式开发者造成一定的影响;特别是对于那些使用了fixed 来布局顶部栏的Web 应用,本文即是对于iOS 11 自带的WebView 的Viewport 属性进行详细解析。本文首先讨论了iOS 11 ,包括iPhone X 带来的改变,然后介绍了如何利用constant 或者calc 函数来优化顶部栏的显示效果。
深度阅读
深度思考,升华开发智慧
-
全栈
Web 学习路径:本文是针对全栈JavaScript 开发学习与进阶的指南,涵盖了从基础语法到React 、Node.js 等多方面的学习路径与资料推荐。本文涵盖了课程、项目、书籍等多种资源形式,介绍了语法基础、React 应用开发、Node.js 服务端应用程序开发等多个领域的内容;更多Web 开发相关资料参考这里。 -
现代
JavaScript 指南:本书覆盖了从语法基础到OOP 等复杂概念的各方面的JavaScript 相关的知识教程,包括了简介、语法基础、代码质量保障、Object、数据类型、函数与函数式编程、类与集成、异常处理、浏览器对象等多方面的内容;更多JavaScript 相关参考这里。 -
JavaScript 工作原理:内存管理与常见内存泄露分析:本系列文章皆着眼于深度解析JavaScript 内部运行原理,而本文则重点讨论编程语言中常见的内存管理问题;并且还提出了对于处理常见的内存泄露的建议。本文首先介绍了变量内存的生命周期、内存的定义、如何分配内存、垃圾回收的机制、内存泄露的定义以及常见的四种内存泄露的形式与应对手段;更多V8 相关资料参考这里。 -
对于
CSS-in-JS 的缺陷分析:本文作者从自己的角度阐述了对于CSS-in-JS 的看法,将其形容为:就像用坏掉的螺丝刀替换你最爱的工具;阅读的时候也可以看下评论区的回复,辨证地来看待作者的观点。随着React 等现代Web 框架的兴起,CSS-in-JS 也受到了很多的关注,人们期望用它来解决传统CSS 中全局作用域、代码难以管理的问题。不过本文作者确认为CSS-in-JS 本身就是反模式,他从代码的组织结构、耦合方式,CSS-in-JS 带来的界面一致性地破坏、代码可复用性地降低等角度来阐述自己的观点,最后提出了还是应该使用OOCSS 这样标准的CSS 工程实践来解决CSS 自身的问题。更多CSS/SCSS 相关资料参考这里。
开源项目
乐于分享,共推前端发展
-
src2png:
src2png 能够将源代码转化为语法高亮、 阅读性高的图片;其会首先启动包含热加载、Webpack、Babel 等多重特性的POI 开发服务器,然后加载Puppeteer 并在Headless Chrome 中将代码渲染截图。 -
best-resume-ever:
best-resume-ever 是基于Vue.js 开发的,简单、易用、美观的个人简历制作模板,其使用LESS 来定义样式,并且允许导出为pdf 等格式。 -
Nulis:
Nuils 是受到Gingko 启发,非常有意思的开源树状结构编辑器,其允许开发者将任何的想法表示为树状结构:从最抽象的想法开始,逐步添加包含更多细节的嵌套描述卡片。这种格式会非常有助于编写故事、文章、大纲、GTD 等等。 -
hiproxy
: hiproxy 是一个基于Node.js 开发的轻量级网络代理工具,主要目的是为了解决多个开发者在开发过程中遇到的hosts 管理和反向代理的问题。使得在开发时,不再需要修改系统hosts 和启动一个Nginx 服务。hiproxy 扩展了hosts 的语法,支持端口号。此外,hiproxy 还支持通过类似于nginx 配置文件的语法来配置代理。
巅峰人生
- 从新手村到史诗英雄,程序员的打怪升级之路:本文是
EGO 会员,饿了么北京研发中心总经理史海峰对于程序员成长之路的分享总结。文字依次讨论了大厂职级职等背后的神秘规律、新手村后的快速成长、如何看待跳槽,面试、专职怎么选等内容。
前端之巅
前端之巅是
