写点什么

前端每周清单第 1 期:PWA 将与安卓原生平起平坐、V8 团队致力于提高 ES2015 特性性能

  • 2017-02-20
  • 本文字数:5125 字

    阅读完需:约 17 分钟

前端每周清单专注前端领域内容,分为新闻热点、开发教程、工程实践、深度阅读、开源项目、巅峰人生等栏目。关注【前端之巅】微信公众号(ID:frontshow),及时获取前端每周清单。

新闻热点

国内国外,前端最新动态

  • 《PWA 将与安卓原生平起平坐》:自从谷歌提出 PWA 概念之后,它就持续受到移动开发界的关注。由于其可靠、快速、融入的特性,大大提升了网页应用的用户友好性。近日官方博客更进一步宣布将使 PWA 应用获得和原生应用同等的待遇与权限。
  • 《React Studio Public Beta 2 发布》:React Studio Public Beta 2 发布啦,React Studio 是能够基于类似于 React JS 这样的组件化库进行交互式 UI 设计的专业工具,能够同时满足设计师与开发者的需求。对于设计师而言,React Studio 彻底遵循了响应式与移动优先的原则,设计师能够方便地将组件设计与应用流导出为 ReactJS 风格的 HTML/JavaScript 代码。对于开发者而言,React Studio 是一个基于 create-react-app 模板创建的前端项目,它仅集成了必须的代码,并且遵循了现代的开发流程,能够辅助开发者快速构建 SPA 项目或者其他独立组件。
  • 《ECMAScript 中可选链提案》:相信每个 JavaScript 开发者都不会陌生于 Uncaught TypeError: Cannot read property 'property' of null 这个错误,对于空指针的检测,特别是对象嵌套属性的空检测成为了不可或缺的部分,譬如:var street = user.address && user.address.street
  • 《V8 团队致力于提高 ES2015 特性性能》:最近几个月以来 V8 团队一直致力于提升 ES2015 新特性的性能表现。目前现代 Web 开发中通行的做法时候用 Babel 这样的编译器将那些引擎尚不支持的语法编译为传统的 ES5 语法,譬如经常使用的扩展操作符会被 Babel 编译为Object.assign形式的语法组成,这样不可避免的会带来性能损耗与包体体积增大。传统的 Crankshaft 编译器难以直接优化for...of这样的语法特性,而最新的 TurboFan 编译流则从设计上就能够支持控制流、异常处理以及解构赋值这些特性。包括之前 Crankshaft 虽然支持但是尚未优化的生成器等等特性也都得到了优化,最后的结果表明整体的语法性能提升了两倍多。
  • 《Twitter 宣布移动 Web 技术栈迁移到 Node.js,Express,React PWA》:近日,Twitter 工程师 Nicolas 宣布 Twitter 几乎所有的移动流量迁移到了以 Node.js 为基础的服务中(Today we moved all of Twitter’s mobile web traffic (that’s like, a lot) to our new web stack – Node.js, Express, React PWA.)。在过去的两年中,Twitter 移动 Web 技术栈主要是基于 Scala,Google Closure Templates 以及少量的 JavaScript。后来 CharlieCroom 开始尝试将登出服务迁移到 JavaScript 技术栈中,并且进行了约 9 个月的线上测试,效果尚可,因此 Twitter 决定全部迁移到 JavaScript 技术栈中。同时,Twitter Web APP 还支持所谓的 PRPL 范式:主动推送首屏关键资源、仅渲染初始路由、预存其他路由、按需懒加载与创建剩余路由。

开发教程

步步为营,掌握基础技能

  • 《HTMLReference: 在案例中学习 HTML》 htmlreference.io 是免费的 HTML 学习指南,它以实例的方式讲述各种元素的属性与用法,适合于入门级开发人员学习 HTML 的基本语法。
  • 《2017 前端开发手册》 Front-End Developer Handbook 2017 Cody Lindley 编写,面向每一个希望学习前端的开发者。该手册概括地讨论了前端工程化的相关实践:在 2017 年中我们应该使用哪些前端工具以及如何学习去使用这些数据。该手册的内容包含了 Web 技术的基础:HTML、CSS、DOM 以及 JavaScript,以及基于这些技术构建的优秀开源项目。
  • 《基于 Vue 与 DeepStream 构建实时 CRUD 应用》:Vue 是专注于 JavaScript UI 的渐进式库,它提供了开发现代 Web 应用的各种先进的特性。而随着移动互联网的发展,实时技术也愈发重要;各种各样的提供抽象接口的实时服务器扮演着越发重要的作用,其中 DeepStream 就是开源的、免费的并且性能表现相当优秀的实时服务器。而本文就利用 Vue 与 DeepStream 这两个开源工具构建实时交互的应用。
  • 《现代 JavaScript 概念纵览》:现代 JavaScript 开发在过去几年中经历了迅猛的变迁,并且这种变化的势头毫无停滞的预兆。对于很多前端开发者而言可能还不是很熟悉那些 JS 博客或者文档中提及的时兴的概念。此文讨论了很多起到媒介作用以及高级的概念,和这些概念是如何被适用于现代 JavaScript 开发中的。本文我们会讨论 Statefulness 与 Statelessness、Immutability 与 Mutability、Imperative 与 Declarative Programming、Higher-order Functions、Observables、以及 FP、RP、FPR 编程范式。
  • 《一系列优秀的 Angular 2 组件集锦》 Angular 2 是非常不错的前端开发框架,而本仓库则是一系列开源的 Angular 2 组件的集锦。这些组件包括浮层、通知、气泡、菜单、加载指示、表格、树、时间、图表、地图、无限滚动、音视频、SVG、PDF 以及各种各样会在表单中用到的组件。

工程实践

立足实践,提示实际水平

  • 《来自 MuseFinder 的 React 组件编写实践》:该指南来源于 MuseFind 在多年的产品开发中总结而来的 React 实践经验,其包含了对于组件声明方式、样式类的使用、初始状态声明、Props 声明、方法声明、Props 结构、装饰器的使用、函数式组件的声明等等多个方面。
  • 《Vue.js 组件样式指南》:该样式指南提供了一种统一架构 Vue.js 代码的建议,其目标是达成易于开发者与团队成员理解以及寻找东西、易于 IDE 来审查代码并且提供帮助、易于重用开发构建工具、易于独立地缓存与使用代码块。该指南借鉴了 RiotJS 样式指南,主要还包含了以下几个部分:基于模块开发 Vue 组件命名,等等。
  • 《关于 Node.js 存在反序列化远程代码执行漏洞的安全公告》:近日,国家信息安全漏洞共享平台(CNVD)收录了 Node.js 反序列化远程代码执行漏洞(CNVD-2017-01206,对应 CVE-2017-594)。攻利用漏洞执行远程执行操作系统指令,获得服务器权限。由于目前验证代码已经公开,极有可能诱发大规模网站攻击。Node.js 反序列化模块 node-serialize 库中的 unserialize() 函数未做安全处理,该漏洞通过传递调用 JavaScript IIFE 函数表达式的方式实现远程任意代码执行的效果。攻击者可通过远程攻击获得当前服务器运行环境权限,由于实际部署中 node.js 运行环境较多为操作系统 root 权限,因此可完全控制服务器主机。CNVD 对该漏洞的综合评级为“高危”。目前,相关利用方式已经在互联网上公开,近期出现攻击尝试爆发的可能。不过根据原作者表述,实际上这个库在 GitHub 上一共只有 20 个 star,还有几个是漏洞文章发布后引来的,而且下载量也是非常少。如果想要避免此类安全问题,需要解决的就是确保用户输入的安全。方法比如通过安全传输方式(内网 & 加密)传输序列化字符串、使用如 RSA 等签名算法对字符串进行完整化校验。
  • 《一次一个微优化,改进 Node.js 应用的吞吐量》:本文是多个提高 Node.js 应用吞吐量的小优化技巧介绍,包括尽可能地使用聚合 IO 操作,以批量写的方式来最小化系统调用的次数、需要将发布的开销考虑进内,清除应用中不同的定时器、CPU 分析器能够给你提高一些有用信息,但是并不能完整地反馈整个流程、谨慎使用 ECMAScript 高级语法,特别是你还未使用最新的 JavaScript 引擎或者类似于 Babel 这样的转换器的时候、要洞察你的依赖树的组成并且对你使用的依赖进行适当的性能评测。当我们希望去优化某个包含了 IO 功能的应用性能时,我们需要对于应用耗费的 CPU 周期以及那些妨碍到应用并行化执行的因素了如指掌。本文则是分享作者在提升 Apache Cassandra 项目中的 DataStax Node.js 驱动时的一些思考与总结出的导致应用吞吐量降级的关键因素。
  • 《Web APP 实现水平滑页翻页交互效果的要点解析》:本文是张鑫旭老师分享的起点中文网支持水平滑页阅读效果的实践,其核心是利用 CSS3 column 分栏布局。CSS3 column 多栏布局是支持比较早的 CSS3 布局方式,目前 IE10+ 以及其他所有现代浏览器都支持,IE 浏览器不需要私有前缀,FireFox 和 Chrome 虽然现在也不需要,但是,考虑到移动端以及可能一些用户浏览器升级不及时的现状,因此,-webkit- 以及 -moz- 前缀目前还不能省略。

深度阅读

深度思考,升华开发智慧

  • 《Google 是如何构建 Web 框架的?》:众所周知 Google 使用单一仓库来存放与共享代码,其中存放了超过 20 亿行的代码,并且其使用了基于 Trunk 的开发范式。对于很多其他公司的开发者而言,这一点可能非常不可思议,而本文即是以构建著名的 AngularDart 项目为例,介绍 Google 是如何构建大型开源的 Web 框架的。
  • 《并发与并行:理解 Node.js 中 IO 底层机制》:本系列希望能帮助开发者深入了解开发并发应用的相关知识,而本文则是着眼于相对基础的操作系统级别的调度、应用的 IO 这些知识。
  • 《JavaScript 启动性能瓶颈分析与解决方案》:随着现代 Web 技术的发展与用户交互复杂度的增加,我们的网站变得日益臃肿,也要求着我们不断地优化网站性能以保证友好的用户体验。本文作者则着眼于 JavaScript 启动阶段优化,首先以大量的数据分析阐述了语法分析、编译等步骤耗时占比过多是很多网站的性能瓶颈之一。然后作者提供了一系列用于在现代浏览器中进行性能评测的工具,还分别从开发者工程实践与 JavaScript 引擎内部实现的角度阐述了应当如何提高解析与编译速度。
  • 《验证码工作原理》:相信每一个 Web 开发者都对于验证码(CAPTCHA)的概念不陌生,它是卡内基梅隆大学提出的全自动公开的区分人类和计算机的图灵测试技术,全称为 Completely Automated Public Turing Test to Tell Computers and Humans Apart。而本文则是先介绍了验证码存在的价值与实际案例,继而介绍了近年来常见的验证码的形式,从原始的数字、文字到最新的交互式验证码等等。同时也介绍了 Google 最新的自动行为检测机制,有助于更加智能地进行人机区分检测。

开源项目

乐于分享,共推前端发展

  • 《svgo: 基于 NodeJS 的 SVG 向量图优化工具》:SVG Optimizer 是基于 NodeJS 的 SVG 文件优化工具,其允许用户选择需要的插件来进行相关的文件优化操作。SVG 文件,特别是那些经过协同编辑的文件,往往会包含大量冗余的无用信息,譬如编辑器元数据、注释、隐藏元素、默认值等等;这些冗余信息会占用额外的空间,而 SVGO 就是将这些冗余信息移除。
  • 《FuseBox: 下一代模块打包工具》:FuseBox 是一个集成了 Webpack、JSPM 与 SystemJS 优势的新一代打包工具。它的最大优势在于其速度非常快,基本上只要 50~100 毫秒进行重打包,从而对于开发者非常友好。并且对于 babel-core这样常用的工具 FuseBox 都集成在内,对于开发者而言直接零配置就可以使用了。FuseBox 并且内置支持 TypeScript 而不需要任何的其他配置,它能够在数秒内就将你的代码编译打包完毕,并且提供了丰富的 Loader API 支持。
  • 《Jasonette: 基于 JSON 标记快速构建跨平台移动应用》:Jasonette 是一个新型的构建原生 iOS 与 Android 应用的方式,它允许使用简单的 JSON 标记来声明完整的原生应用。我们可以通过远程修改 JSON 的方式来动态地实时修改应用,而整个应用的逻辑并不需要再硬编码写入到设备中。任何时刻你在服务端更新完 JSON 之后再次打开应用的时候,整个应用就会和服务端的声明保持同步。
  • 《GraphicsJS: 轻量级绘图库》:目前 Web 开发中最常用的创建交互式图片的技术选型当属 SVG 与 Canvas,传统的 Flash 与 Silverlight 已经慢慢淡出历史的舞台。而对于 SVG 与 Canvas 的对比也显示,如果是想创建与操作简单的交互性图片,那么 SVG 当属首选。SVG 本身是基于 XML 的向量图,任何通过svg标签载入的图片都会成为 SVG DOM 中可操作的对象。而 GraphicsJS 正是基于 SVG 的简单易用的 JavaScript 绘图库。
  • 《redux-query:React/Redux 中查询与管理网络状态的库》:对于很多开发者而言,同步本地状态与网络状态会是一件很麻烦的事情。其中需要太多的妥协与考量,甚至于面对不同的问题需要使用不同的技术栈。而 redux-query 即是 AmplitudeEng 的工程师在实践中的总结与应用,它可以被当做基于 React/Redux 以及 RESTful API 的应用的很好的辅助工具。它允许将网络状态链入到当前的 Redux Store 中,并且提供了删除、乐观更新、响应缓存、删除重复等等优秀的功能。

巅峰人生

一览众山,聆听巅峰故事


感谢韩婷对本文的审校。

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

2017-02-20 18:004171
用户头像

发布了 60 篇内容, 共 18.0 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

和细胞一样优雅的 TiDB Region 设计

TiDB 社区干货传送门

TiDB 底层架构

软件测试/测试开发丨Web自动化总卡在文件上传和弹框处理上?

测试人

软件测试 自动化测试 测试开发 selenium

如何通过Java代码在PowerPoint 幻灯片中插入公式

在下毛毛雨

PowerPoint 公式 java‘

龙蜥 Node.js/WebAssembly SIG 重磅发布 Node.js/Noslate 性能优化白皮书

OpenAnolis小助手

node.js Web 白皮书 龙蜥社区 sig

软件测试/测试开发丨利用 pytest 玩转数据驱动测试框架

测试人

软件测试 自动化测试 测试开发 pytest

集群3副本丢失2副本-unsafe-recover

TiDB 社区干货传送门

实践案例 管理与运维 6.x 实践

基于TiDB Binlog架构的主备集群部署及数据同步操作手册

TiDB 社区干货传送门

管理与运维

Hologres技术揭秘:JSON半结构化数据的极致分析性能

阿里技术

json 半结构化数据

TiDB Operator常见问题和解决步骤(二)

TiDB 社区干货传送门

故障排查/诊断

〖产品思维训练白宝书 - 认知篇①〗- 产品思维能够为我们带来多大的价值?

哈哥撩编程

产品经理 产品思维

火山引擎A/B测试产品——DataTester 私有化架构分享

字节跳动数据平台

私有化部署 ab测试 A/B 测试 企业号 3 月 PK 榜

熹微~~~基于Vue开发的昏暗风格的响应式网页!

京茶吉鹿

前端 项目 vue cli

网心科技多项边缘计算成果亮相第十届中国网络视听大会

网心科技

数据擘画资产全景 AI诊断故障真因

用友BIP

TiDB Operator常见问题和解决步骤(一)

TiDB 社区干货传送门

实践案例 集群管理 管理与运维 故障排查/诊断

GitHub开源2小时Star破10万,阿里Java高并发集合手册终是被公开

做梦都在改BUG

Java 高并发 集合框架

你的收藏不能少的Spring笔记,阿里十年架构师手写Spring笔记

小小怪下士

Java spring 程序员

2023年广州堡垒机采购选哪家好?咨询电话多少?

行云管家

等保 堡垒机 等级保护 广州

三种Web通信技术之间的差异

郑州埃文科技

HummerRisk 使用教程: 多云检测

HummerCloud

云安全

TiDB × 阿里云试用体验(随迟但到)

TiDB 社区干货传送门

版本测评

bytebase让你爱上tidb的开源审核神器。

TiDB 社区干货传送门

6.x 实践

审计录像是什么意思?堡垒机有审计录像功能吗?

行云管家

堡垒机 审计 审计日志 审计录像

基于TiDB+Flink实现的滑动窗口实时累计指标算法

TiDB 社区干货传送门

应用适配 HTAP 场景实践 大数据场景实践 实时数仓场景实践 OLTP 场景实践

数据丢失不用怕,火山引擎DataLeap 提供排查解决方案

字节跳动数据平台

大数据 数据治理 数据研发 企业号 3 月 PK 榜

都想成为架构师,那架构师需要掌握哪些知识体系呢?

做梦都在改BUG

GitHub开源几分钟被下架!神作《Spring Boot实战项目》竟昙花一现

做梦都在改BUG

Java 微服务 Spring Boot 框架

Java:如何在PowerPoint幻灯片中创建散点图

在下毛毛雨

图表 PowerPoint java‘

TiDB 数据库大版本升级-基于TiCDC异机升级

TiDB 社区干货传送门

迁移 版本升级

ChatGPT也BUG?带你走进ChatGPT背后的网络基础设施

郑州埃文科技

人工智能 ChatGPT

Redis缓存穿透/击穿/雪崩以及数据一致性的解决方案

做梦都在改BUG

Java 缓存 穿透 击穿 雪崩

前端每周清单第1期:PWA 将与安卓原生平起平坐、V8 团队致力于提高 ES2015 特性性能_语言 & 开发_王下邀月熊_InfoQ精选文章