BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

前端每周清单第 17 期:大前端技术生命周期模型;WWDC 发布 Safari 11;面向生产环境的前端性能优化

| 作者 王下邀月熊 关注 33 他的粉丝 发布于 2017年6月14日. 估计阅读时间: 15 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

新闻热点

国内国外,前端最新动态

开发教程

步步为营,掌握基础技能

  • 《WebAssembly 初体验:重构简单游戏引擎》:WebAssembly 为我们提供了构建高性能的前端应用的途径,而本文则从零开始介绍如何使用 C 来覆写简单的 JavaScript 游戏引擎并且将其编译为 WebAssembly。本文依次介绍了如何搭建基础的 Emscription 工具链、使用 JavaScript 引入 wasm 模块、覆写并且优化某个小型游戏引擎、两个引擎的性能评测等等部分。( http://blog.openbloc.fr/webassembly-first-steps/ )

  • 《使用 Vue 与 NativeScript 开发跨端应用》:目前标准的开发 NativeScript 应用的方式是使用朴素的 JavaScript 或者 Angular,而本文介绍了如何结合使用 Vue 与 NativeScript 来开发跨终端应用。本文首先阐述了 Vue.js 相较于 React 或者 Angular 的优势,然后阐述了使用 Vue 语法来开发基础 NativeScript 应用的步骤。(https://www.nativescript.org/blog/a-new-vue-for-nativescript )

  • 《基于 Firebase 与 Vue.js 构建基于地理位置的聊天室》:本文介绍了基于 Firebase 与 Vue.js 构建某个基于地理位置搜索与配对的聊天室应用的过程,应用发布在这里,还是挺有意思的应用。本文除了介绍 Vue.js 项目的基础构建与语法之外,还介绍了所谓 Geohash 的知识与 Firebase 相关接口的使用。( https://parg.co/bLH )

  • 《Node.js 8 中 util.promisify 介绍》:Node.js 8 为我们提供了新的工具函数 util.promisify(),它能够将某个基于回调的函数封装为基于 Promise 的函数。本文介绍了 util.promisify() 的基本使用,首先介绍了对于文件读取写入相关接口的封装使用,然后讨论了如何引入 async 语法,最后还介绍了自定义 promisify 函数的用法。

  • 《你应该掌握的关于 Node.js 子进程的知识》:Node.js 最初以单进程单线程非阻塞方式提供了强大的性能表现,不过在目前多核时代下仅使用单进程已远远不能承载日益增长的应用压力。本文即介绍在 Node.js 中如何使用 spawn()、exec()、execFile()、fork() 等多进程相关模块的用法与各自的特点,依次介绍了使用 spawn 来创建实现了 EventEmit 接口的子进程、使用 exec 执行子命令、使用 fork 创建自带通信信道的子进程等。( https://parg.co/bLq)

工程实践

立足实践,提示实际水平

  • 《Medium网站的技术栈》:Medium是一个在线发布平台,最初由Twitter联合创始人Evan Williams开发。该平台于2012年启动,现在每个月有6000万独立访客。该网站部署在AWS上,使用NodeJS和Go作为应用程序和服务的开发语言,使用DynamoDB作为数据存储,并使用Amazon Redshift作为数据仓库。(http://www.infoq.com/cn/news/2017/06/medium-technology-stack )

  • 《Figma 利用 WebAssembly 降低三倍加载速度》:自 WebAssembly 推出之后,很多开发者都开始尝试在小型项目中实践 WebAssembly,不过尚缺大型真实案例比较。而 Figma 因为其产品主要基于 C++ 实现,可以方便地编译到 WebAssembly 中并且与原方案进行性能比较。本文中 Figma 介绍了它们在 Firefox 中使用 WebAssembly 之后带来的加载性能提升以及下载尺寸的优化,同时还提及了目前 WebAssembly 在实际项目使用中存在的一些问题与风险。( https://parg.co/biB )

  • 《利用 React Apollo 减少 Redux 代码量》:Redux 为人诟病的一点就是需要大量的模板代码,而更多的代码往往也意味着更多的潜在错误与更高的维护代价。本文则介绍了如何利用 Apollo 来接管应用中的数据加载与呈现逻辑,从而减少 Redux 实现方案中加载数据生命周期中所需要的代码。( https://parg.co/bLA )

  • 《CSS 局部作用域变量详解》:CSS 自定义属性或者所谓的 CSS 变量,为我们带来了真正的、不同于 SASS 等预处理框架中使用的类占位符的动态变量。本文介绍了 CSS 变量的基本定义语法与使用,以及如何使用 JavaScript 来动态修改 CSS 变量值从而动态地进行界面重渲染,最后阐述了目前浏览器对于 CSS 变量的支持情况以及可以使用的兼容方式。( https://parg.co/bLS )

  • 《面向生产环境的前端性能优化清单》:在 Web 前端开发中,产品经理更多的会关注于寻找优秀的设计与内容,而开发者同样需要关注于如何进行前端性能优化。作者在本文中则分享了多年经验累积的性能优化清单,包括常见的资源优化、CSS 优化中常用的工具、常用的性能检测工具等等。( https://parg.co/bLP )

  • 《渐进式图片渲染机制》:图片在网页中占据了重要的地位,合适的图片能够大幅提升用户体验,不过同样会占据大量的带宽;本文则着眼于如何综合利用懒加载与渐进式渲染等方式来优化带宽使用与用户体验。本文首先讨论了对于合适的图片格式的选择,然后介绍了常见的图片懒加载的技术,最后阐述了所谓渐进式编码与渐进式图片渲染的理念与实践。( https://parg.co/bLp )

深度阅读

深度思考,升华开发智慧

  • 《Mobdux:整合 MobX 与 Redux 中优秀的部分》:MobX 与 Redux 为我们提供了截然相反地管理前端应用状态的方式,而本文则细致地分析对比了 Redux 与 MobX 的优缺点,并且从自己的实践经验角度出发提出了结合二者优点的 mobdux 框架。( https://parg.co/bLd )

  • 《不会做动画的前端不是好开发》:自从有了前端开发这个概念以来,这个岗位所做的事情都是围绕着人机交互来开展的,主要包括展示信息给用户看,然后获取用户的意图并做出响应。随着终端设备以及业务的快速发展,前端工程也越来越复杂,所以分工也进一步精细化,有侧重做工具化与模块化架构的,有侧重无线体验或者 Web 与 Native 融合方面的,也有侧重复杂的商家后台或者数据可视化的,甚至有部分公司把 HTML+CSS 与 JS 的工作也分开的,所以出现了不同前端工程师会有不一样的侧重点。而目前越来越多的业务线有越来越高的动画类需求,而在动画方面能紧跟技术趋势的优秀前端实在是比较难找,本文则希望让那些想在动画方面有些提升的朋友有所帮助。(https://parg.co/bL0 )

  • 《Flow 与 TypeScript》:本文主要对比了 Flow 与 TypeScript 这两个常用的 JavaScript 静态类型检测工具,首先介绍了在简单项目中如何使用 TypeScript 与 Flow。然后对比了二者在类型覆盖率上的渐进对比,会发现使用 Flow 之后因为其较为严格的类型要求会相对较快地实现高覆盖,而 TypeScript 则相对较为松弛。(http://thejameskyle.com/adopting-flow-and-typescript.html )

  • 《JavaScript 中类的私有域定义》:目前对于类中的私有域定义已经达到了 Stage 2,本文即是详细介绍 #private 语法的使用以及设计理念。顾名思义,我们可以使用 #privateFieldName 方式来定义类中的私有域,该私有域仅允许该类的方法访问(包括静态方法)。本文还介绍了使用这种 HashTag 方式而不是其他语言中常见的 private 关键字来定义的考量。( http://thejameskyle.com/javascripts-new-private-class-fields.html )

  • 《CSS 的现状》:毫无疑问我们正在见证着 JavaScript 社区与生态的极速变化,而与此同时可能很多人没有关注到 CSS 社区的进展,本文作者则是对于 CSS 的现状进行了综述并且提出了个人的观点。本文作者主要提出了五个论点:我们可以使用 CSS Module 来替代原有的 BEM 等命名方案、使用 Flexbox 来替代 float、使用 CSS Grid 来替代第三方网格库、使用 CSS 内置的变量、计算函数等特性来替代 SASS 等预处理库,乃至于最终我们完全可以使用 CSS-in-JS 来替代 CSS。本文具有极强的主观色彩,请批判性阅读。( https://parg.co/bLZ )

开源项目

乐于分享,共推前端发展

前端之巅

「前端之巅」是InfoQ旗下关注前端技术的垂直社群,加入前端之巅学习群请关注「前端之巅」公众号后回复“加群”。投稿请发邮件到editors@cn.infoq.com,注明“前端之巅投稿”。


感谢韩婷对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT