写点什么

前端每周清单第 20 期:Angular 2/4 是否为时已晚?React 组件解耦之道;基于 Headless Chrome 的自动化测试

  • 2017-07-04
  • 本文字数:4946 字

    阅读完需:约 16 分钟

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

新闻热点

国内国外,前端最新动态

  • TypeScript 2.4 发布:TypeScript 是提供了静态类型和很多先进特性的 JavaScript 语言超集;而在最新发布的 2.4 版本中,新增了动态 import 语法、字符串枚举类型等特性,并且提高了泛型推导等功能。(  https://parg.co/bem  )

  • Node v8.1.3 发布:近日发布的 Node v8.1.3 版本包含了一系列的错误修复与文档内容提升。( https://nodejs.org/en/blog/release/v8.1.3/  )

  • Preact CLI 1.3.0 发布:Preact CLI 是快速创建 Preact 应用的工具,在近日发布的 Preact CLI 1.3.0 版本中,开发者可以自定义 Webpack 配置文件与 .babelrc 配置文件。该版本还转向了使用 Webpack 进行预渲染,同时还修复了之前版本遗留的一系列错误;最后该版本还引入了完整的测试用例以提高整个代码的鲁棒性。(  https://parg.co/bXx  )

  • MDN 被 Mozilla 重造,将更关注 Web 文档:MDN 的权威性以及文档的高质量一直广受 Web 开发人员的认可,开发人员在搜索 HTML 和 JavaScript 的文档时,通常会发现 MDN 的点击率很高。基于此,Mozilla 决定“押宝”在提升 Web 文档体验,正式宣布将使 MDN 的工作重心侧重于 Web 文档。(  https://parg.co/bXT  )

  • Twitter Lite PWA 显著提升用户活跃度并且降低了数据流量:Twitter 是主要的社交网络平台之一,其 80% 的用户访问来源于移动端。为了提高移动端网页版体验效果,Twitter 整合了现代 Web 与原生特性的优点,开发了 Twitter Lite Progressive Web App,并且在四月份正式面向所有用户开放。而近日统计数据显示新版本网页带来了 65% 的用户停留时长提升、75% 的用户发文提升与 20% 的回退率降低。(  https://parg.co/bX7  )

开发教程

步步为营,掌握基础技能

  • 基于 Headless Chrome 的自动化测试:本文介绍了如何在 Headless Chrome 环境中使用 Karma 作为测试驱动运行基于 Mocha 与 Chai 的自动化测试用例。Headless Chrome 允许我们在无界面环境下,使用特性完备的 Chrome 来执行 JavaScript 脚本并且渲染网页。本文首先介绍了使用 karma-chrome-launcher 来搭建本地启动 Chrome 环境,然后介绍了使用 Mocha 与 Chai 来编写基础测试用例,最后还讨论了如何自定义 Headless Chrome 启动器并且集成到 Travis CI 环境下。(  https://parg.co/beo  )

  • Angular 2+ 项目实战系列:本系列文章包含了八个不同的章节,从零开始介绍如何利用 MongoDB、Express、Angular 2+ 以及 Node.js(MEAN Stack)来构建某个真实的应用项目。第一部分着眼于进行基础环境的搭建,包括搭建 Angular 应用开发环境、本地搭建 MongoDB、在 Auth0 申请账户与开发者密钥、搭建 Node.js 服务器并且为 Angular 应用添加基础的组件等等。第二部分着眼于添加基础的权限验证功能,并且构建数据模型等。 ( https://parg.co/beA  )

  • 利用树莓派、Node 与 React 打造智能家居:作者自小就喜欢倒腾电路与计算机,而本文则简要记述了作者如何利用树莓派来将自己的电子家居变得智能可控。作者主要是由了 React Native 来开发客户端应用,并且通过 WebSocket 来与 NodeJS 后端进行数据通信,并且使用  pi-blaster  与  wiringPi  等库来保证 NodeJS 后端控制树莓派并且获取实时数据。另一方面,作者利用树莓派作为中控枢纽,分别将其连接到不同的控制器中,作者在本文中还给出了详细的电路图设计,全部的代码参考这里。(  https://parg.co/bXB  )

  • VueConf 观后感:首届官方举办的 Vue.js 大会刚刚落幕,本文即是作者对于自己参会之后的感想进行的简要阐述。作者首先介绍了自己参与的数个 WorkShop 与演讲,从 Evan You 对于 Vue.js 发展历史与现状的介绍,到基于 Vuex 的状态管理、服务端渲染、代码分割等多个具体的技术实现。本文是非常不错的对于 VueConf 的回顾,如果没有参会或者尚未了解过议程的同学可以一看,并且选择自己感兴趣的议题查看对应的胶片与演讲视频。 ( https://parg.co/ber  )

  • Webpack 中的作用域提升简介:近日发布的 Webpack 3 中引入了所谓的 Scope Hoisting 新特性,从社区的反馈来看该特性已经在很多项目中成功地帮助开发者减少包体大小,提高首屏加载效率;本文则是简要地介绍了 Webpack 3 中作用域提升的基础原理。本文假设你对于 JavaScript 中闭包与模块语法有所了解,首先介绍了在老版本 Webpack 中采用的作用域分割机制及其存在的额外的性能损耗,然后对比呈现了在引入作用域提升机制之后,打包而成的文件的形式,与其带来的性能提升原理。(  https://parg.co/beE  )

工程实践

立足实践,提示实际水平

  • React 组件解耦之道:React 的组件非常地灵活可扩展,不过随着业务复杂度的增加和许多外部工具库的引入,组件往往也会显得浮肿;作者在本文中阐述了常见的几种,遵循单一职责原则的,组件分割与解耦的方法。 本文首先介绍了基础的分割 render 函数的使用范式,然后讨论了将元素以属性方式传入,最后还介绍了部分高阶组件相关的用法与知识;更多 React 相关资料参考  https://parg.co/bM1  。(  https://parg.co/bXz  )

  • 为什么我们选择 TypeScript :本文是 Reddit 工程师 Niranjan Ramadas 记述在前端技术选型时选用 TypeScript 的考虑过程。作者认为任何语言都有其优缺点,不过合适的语言应该具备如下特点:强类型、完备的工具链支持、能够用于生产环境等。作者还特地比较了 TypeScript 与 Flow,TypeScript 是能够编译到 JavaScript 的超集语言,而 Flow 则是提供了一系列额外的注解来实现类型系统。Flow 能够保证较好的类型覆盖,但是其对于多态性的支持并不是很好,并且 TypeScript 的社区也相对活跃。(  https://parg.co/beb  )

  • 基于 Prometheus 的 Node.js 应用性能监控:本文致力于帮助已有生产环境下 Node.js 应用的开发者,了解如何利用开源应用 Prometheus 搭建监测平台;Prometheus 为我们提供了强大的数据压缩与针对时序数据的快速查询功能。本文首先讨论了 Node.js 应用监控的设计理念与指标,然后对比了当前存在的几种监控解决方案的优缺点。最后介绍了如何在项目中引入 Prometheus,并且集成 Kubernetes、Grafana 等第三方插件;更多 Node.js 相关资料参考  https://parg.co/be0  。(  https://parg.co/bed  )

  • 我认为的 React Native 开发最佳实践分享:React Native 问世已愈两年,也为越来越多的团队用来开发性能表现不输原生的应用;尽管 React Native 还不算完全成熟(未发布 1.0 版本),但是围绕它已经产生了一个庞大的社区和许多的开发实践。作者编写本系列文章即是希望与大家共享个人在多年的 React Native 开发中总结而来最佳实践,第一篇文章首先介绍了 Redux 的概念与引入的积极意义,然后讨论了如何编写可复用的组件以及如何尽可能地提取公共代码与变量等内容;更多 React Native 相关资料参考  https://parg.co/bV4  。(  https://parg.co/beC  )

深度阅读

深度思考,升华开发智慧

  • 选择与支持 Vue.js 的理由:本文是来自 Monterail 的前端工程师、Vue.js 资深开发者 Damian Dulisz 分享他选择与支持 Vue.js 的理由。本文不仅仅从开发者的角度阐述了 Vue.js 对其的吸引力,还从产品经理的视角、Vue.js 社区发展的角度阐述了 Vue.js 的巨大潜力。本文是一篇不错的介绍 Vue.js 最新变化与进展,并且对常见的 Vue.js 的部分误解进行了阐述的文章;更多 Vue 相关资料参考  https://parg.co/byL  。(  https://parg.co/bX2  )

  • TC39,ECMAScript 与 JavaScript 的未来:本文是 Nicolás Bevacqua 在腾讯前端大会上发表的同名演讲的总结,介绍了 TC39 与 ECMAScript 的含义,概述了 ECMAScript 中提案的步骤以及部分代表性提案,同时还畅谈了 JavaScript 的未来发展方向。作者介绍了 Stage 0、Stage 1、Stage 2、Stage 3 这四个提案处理进度的具体含义与要求,并且列举了 Array#includes、Named Captures 等具体的例子来阐述 JavaScript 不断衍化的语法特性;作者还介绍了未来社区会持续关注的代码转译与适配、代码质量保证、代码打包与发布等多个领域。( https://parg.co/bXD  )

  • 为何 Angular 2/4 为时已晚(* 本文仅代表原作者个人意见):时光回溯到 2012,那时的 Angular 还是不断崛起的前端新星;而在 2017 年里,当年的 Angular 已不能再满足 JS 生态对于完备性、灵活性与生产效率的要求。而 Angular 2/4 长达三年的开发周期、不向后兼容的架构要求让许多公司望而却步;作者在本文中首先回顾了 2012 年中 Angular 为何名噪一时,2013 年里 React 又是如何重塑了前端开发的技术栈与理念,2015 年里 React Native 的登场又带来了哪些变化,以及现代前端开发中如何使用 Webpack、NPM 这些工具辅助 React、Vue.js 这些轻量级的前端框架来维护大规模、可扩展的单页应用。(  https://parg.co/bXn  )

  • JavaScript 中的函数式编程就是反模式(* 本文仅代表原作者个人意见):作者在本文中对比讨论了 JavaScript 与 Clojure,并且介绍了 ClojureScript 的基础用法与优势所在。作者首先讨论了他认为的函数式脚本语言应该包含的特性,包括充分的 API、内建的不可变数据结构等;然后阐述了 lodash、fp、Rambda 这样的单个库存在的不足,譬如 ImmutableJS 虽然能较好地解决部分问题,但是却会割裂使用者的开发体验。最后笔者介绍了 ClojureScripe 的特性与优点,包括能够在编辑器中单行运行、内建的大量转化函数、较好地性能与代码可读性保证等等。( https://parg.co/beH  )

开源项目

乐于分享,共推前端发展

  • bundlesize :bundlesize 是轻量级的用于检测项目打包生成包体体积的工具,可以方便地集成于 Travis CI、Circle CI 等持续集成工具中,以确保生成的库或者应用体积不会超过预期;目前 React、styled-components、emotion 等诸多流行库都已采用该工具。(  https://github.com/siddharthkp/bundlesize  )

  • kittenTricks :kittenTricks 是超过 40 屏的 React Native 应用开发中常见的精美界面集锦,包括应用加载、权限验证、社交资料、资讯浏览、聊天通信等多个领域。kittenTricks 还提供了内置的应用主题热加载,并且其本身的代码库也是相当干净整洁,值得一读。(  https://github.com/akveo/kittenTricks  )

  • PicoGL.js :PicoGL.js 是基于 WebGL 2 的轻量级辅助库,适用于任何了解 WebGL 2 渲染管道流并且打算使用它的开发者。PicoGL.js 提高了更为方便地流式接口,典型的使用场景即是创建 Vertex Buffers、Vertex Arrays、FrameBuffers 等。(  https://github.com/tsherif/picogl.js  )

  • vue-table-component : vue-table-component 提供了轻量级、易于使用的 Vue.js 组件;该组件的一大特性在于其能够自动缓存用户的筛选与排序结果,即使用户刷新了页面该数据仍然可以保留使用。( https://github.com/spatie/vue-table-component  )

  • react-hold : react-hold 能够自动地为纯组件创建加载提示,它能够自动地根据纯组件不同的形状与类型创建不同的占位提示符。(  https://github.com/toplan/react-hold  )

巅峰人生

二十年IT 老兵:年轻程序员如何规划成长路径?:康德胜,万惠集团(旗下拥有 PPmoney 理财、及贷、一步购车、挖牛等品牌)副总裁及 CTO,拥有 20 多年软件开发与管理经验,其中 15 年着重于 FinTech 领域;曾任英国渣打集团市场风险与流动性风险全球高级技术总监、工商银行总行海外特聘金融市场业务架构专家、美国房利美公司投资组合与风险管理资深开发经理、国内数家软件公司 CTO 等职位。本文是他做客大咖说的主题分享回顾——年轻程序员如何规划成长路径?( https://parg.co/bek

前端之巅

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


感谢韩婷对本文的审校。

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

2017-07-04 19:003246
用户头像

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

关注

评论

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

接口测试学习之json

测试人生路

json 接口测试

DataPipeline CTO 陈肃:构建批流一体数据融合平台的一致性语义保证

DataPipeline数见科技

数据融合

公众号高频被调整,它不是企业生产文章的机器

Linkflow

客户数据平台 CDP 私域流量

合约跟单源码案例,合约跟单模式开发

13530558032

面试官问:如何排除GC引起的CPU飙高?我脱口而出5个步骤

田维常

cpu飙满

架构师训练营第九周作业

_

极客大学架构师训练营 第九周作业

MySQL主从数据库没有同步怎么办?

冰河

MySQL 数据库 分布式 微服务

区块链社交即时通许系统开发,区块链社交app开发价格

13530558032

微信官方将打击恶意营销号:自媒体不可过度消费粉丝

石头IT视角

万字图文 | 聊一聊 ReentrantLock 和 AQS 那点事(看完不会你找我)

马丁玩编程

架构 AQS ReentrantLock JUC CLH

11月阿里Spring全家桶+MQ微服务架构笔记:源码+实战

小Q

Java 学习 程序员 面试 微服务

OpenFeign和Consul爱恨交织的两天

编号94530

Spring Cloud Consul OpenFegin spring 5

一致性hash算法

天涯若海

深入理解h2和r2dbc-h2

程序那些事

响应式编程 R2DBC 程序那些事 响应式架构 r2dbc-h2

区块链数字钱包系统开发方案,区块链钱包APP源码

13530558032

媲美物理机,裸金属云主机如何轻松应对11.11大促

京东科技开发者

云计算 容器 服务器 云主机

架构师训练营第九周作业

我是谁

极客大学架构师训练营

数字货币交易所开发有哪些模式?区块链交易平台

13530558032

《JAVA多线程设计模式》.pdf

田维常

多线程

DataPipeline CPO 陈雷:实时数据融合之道,博观约取,价值驱动

DataPipeline数见科技

数据融合

DataPipeline CPO 陈雷:实时数据融合之法,稳定高容错

DataPipeline数见科技

数据融合

Istio 1.8 发布——用户至上的选择

Jimmy Song

开源 云原生 Service Mesh istio

DataPipeline CPO 陈雷:实时数据融合之法,便捷可管理

DataPipeline数见科技

数据融合

Springboot过滤器和拦截器详解及使用场景

996小迁

Java 编程 架构 面试 springboot

UNISKIN COO Kevin|营销数字化:数据沉淀和数据系统化运营一定要趁早!

Linkflow

营销数字化 客户数据平台 CDP

阿里达摩院副院长亲自所写Java架构29大核心知识体系+大厂面试真题+微服务

Java架构追梦

Java 学习 阿里巴巴 架构 面试

快进收藏吃灰!字节跳动大佬用最通俗方法讲明白了红黑树算法

小Q

Java 学习 架构 面试 算法

Scrum指南这么改,我看要完蛋!

华为云开发者联盟

Scrum 敏捷 改版

深入浅出 Go - sync.Once 源码分析

helbing

Go 语言

深入浅出 Go - sync.Map 源码分析

helbing

Go 语言

强化学习入门必看之强化学习导识

Alocasia

人工智能 学习

前端每周清单第20期:Angular 2/4 是否为时已晚?React 组件解耦之道;基于 Headless Chrome 的自动化测试_语言 & 开发_王下邀月熊_InfoQ精选文章