AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

前端每周清单第 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:004159
用户头像

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

关注

评论

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

Java教程百度云最新版,极客时间vip年卡,Java开发者面试如何系统复习

Java 程序员 后端

Java程序员如何有效提升学习效率,如何化身BAT面试收割机

Java 程序员 后端

Java程序员必会!开课吧java高级架构师课程,Java开发大厂面试经验

Java 程序员 后端

Java排序算法面试,黑马java项目一,springboot实战项目源码

Java 程序员 后端

Java日常开发的12个坑,你踩过几个,一招让你拿下seata分布式事务框架

Java 程序员 后端

Java框架,黑马java视频教程,面试资料分享

Java 程序员 后端

Java数据处理的常用技术,springboot源码解读与原理分析

Java 程序员 后端

Java春招实习面试经验汇总,图灵学院诸葛,Java微服务架构视频下载

Java 程序员 后端

Java知识体系!java黑马视频和达内,链表反转的两种实现方法

Java 程序员 后端

Java程序员面试笔记,极客时间vue开发实战,Java进阶教程视频

Java 程序员 后端

Java爬虫爬取视频,尚硅谷笔试答案,最全面试考点与面试技巧

Java 程序员 后端

Java月薪过万要掌握的技能,javajdk下载教程,高级Java工程师面试问题

Java 程序员 后端

Java架构师必备技能,java程序设计实用教程第五版答案,掌握这个提升路径

Java 程序员 后端

云栖发布|企业级互联网架构全新升级 ,助力数字创新

阿里巴巴云原生

阿里云 云原生 产品升级 云栖大会

Java百度云资源,java基础案例教程黑马程序员在线阅读,美团Java面试流程

Java 程序员 后端

Java程序员全套,百度三面牛客网猿生活,疯狂膜拜

Java 程序员 后端

阿里云重磅发布业务中台产品 BizWorks,中台发展进入下一个阶段

阿里巴巴云原生

阿里云 云原生 业务中台 云栖大会 BizWorks

Java教程百度云最新版,java写脚本教程视频,程序员必须要了解的知识点

Java 程序员 后端

Java架构师进阶之路,马士兵的java教程,大厂Java面试总结+详细解答

Java 程序员 后端

Java百度云教程,深入java虚拟机百度云,附详细答案

Java 程序员 后端

Java百度云,springboot实例教程,面试大厂应该注意哪些问题

Java 程序员 后端

Java的Io模型你了解多少?尚硅谷大厂学院课,Java开发面试笔试题大汇总

Java 程序员 后端

Java研发岗面试复盘总,4面技术5面HR附加笔试面

Java 程序员 后端

Java技术基础知识总结,菜鸟教程mysql,Java重要知识点

Java 程序员 后端

Java技术成长,kafka学习教程,Java开发者面试如何系统复习

Java 程序员 后端

Java知识体系!极客学院黑马程序员,BIO和NIO有啥区别

Java 程序员 后端

Java研发岗必问30+道高级面试题,腾讯,字节等大厂面试真题汇总

Java 程序员 后端

Java程序员面试中最容易答错的8道面试题,tomcat面试题及答案

Java 程序员 后端

Java教程视频百度网盘,小甲鱼数据结构百度云,腾讯Java面试题

Java 程序员 后端

Java数据结构面试题,java架构师指南下载百度,Java工程师面试题及答案

Java 程序员 后端

Java程序员最新职业规划,尚学堂高琪300集,初级Java工程师面试题

Java 程序员 后端

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