
前端每周清单第 51 期: React Context API 与模式变迁, Webpack 与 Web 优化, AI 界面生成
做者:王下邀月熊
编辑:徐川
前端
前端每周清单专一前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点;分为新闻热点、开发教程、工程实践、深度阅读、开源项目、巅峰人生等栏目。欢迎关注【前端之巅】微信公众号(ID: frontshow),及时获取前端每周清单。git
新闻热点
国内国外,前端最新动态
github
- Chrome 即将标识全部的 HTTP 站点为非安全: 近日,Google Chrome 宣布,他们将会在 2018 年七月左右发布的 Chrome 68 版本中,开始把全部的 HTTP 站点标识为非安全;此举也可能标志着非 HTTPS 站点的终结。开发者可使用最新版本的 Lighthouse Node.js 命令行工具来检测某个网站中是否存在了基于 HTTP 协议加载的资源,而且可以自动地判断是否已经有了相对应的 HTTPS 版本。
- Rollup 开始支持代码分割: 在近日发布的 0.55 版本中,JavaScript 模块打包工具 Rollup 终于引入了代码分割,这个千呼万唤始出来的特性。一直以来,Rollup 都是 React, Vue, D3, Moment, Three.js, Ember, Angular, Babylon, Jest, Bootstrap, Leaflet, Prettier 这样的工具库的首选,而该特性的加入也意味着其逐步成为了应用打包工具的候选之一。
- Microsoft Edge 与 Windows 10 进一步拥抱 PWA: Edge 17 即将内置 Service Workers 与 Push Notifications,同时 Microsoft Store 将会把那些手动提交的 PWA 应用于原生应用同等对待。本文便是 Microsoft Edge 技术团队对于 PWA 的介绍,对于它可以解决的问题的畅想以及将来如何在 Windows 10 中保证 PWA 的表现。
开发教程
步步为营,掌握基础技能
web
- React 16.3 新特性介绍: React 16.3-alpha 近日登录 npmjs,而且可以引入到项目中,本文便是对于 16.3 版本中的新特性进行介绍。该版本引入了新的 Context API,容许开发者使用 React.createContext() 生成两个关联组件;重构了生命周期回调,废除了 componentWillMount, componentWillUpdate, componentWillReceiveProps,引入了 getDerivedStateFromProps;提供了 StrictMode,以保证代码符合最佳实践;更新了 React Developer Tools 等。更多相关资料参考 React Reference。
- Service workers 介绍与使用: Service workers 能够看作 Progressive Web Apps 的核心组成,提供了资源缓存与通知推送的功能,这也是 Web 应用与原生应用当前的区别之一。 本文会包含 Service Worker 的基本概念与使用,具体讨论了后台处理、离线支持、资源预抓取、网络请求缓存、安装与基础使用等内容。更多相关资料参考 PWA Reference。
- React’s ⚛️ new Context API: 本文将会详细介绍 React 16.3 版本中提供的新 Context API,它主要包含了三个部分:React.createContext 容许输入初始值,而且返回包含 Provider 与 Consumer 的对象。Provider 组件被放置在组件树中的较高层,容许传入名为 value 的属性,而 Consumer 属性则能够放置在组件树的任意位置,经过传入渲染回调函数的方式来接收 value 参数。更多相关内容参阅 React 与前端工程化实践系列。
工程实践
立足实践,提示实际水平
面试
- GraphQL 应用中的五个常见问题与规避方案: 本文中,咱们将会讨论如何尽量地发挥 GraphQL 的长处而绕过其中的坑。做者在本文中讨论了如下内容:Schema duplication, Server/client data mismatch, Superfluous database calls, Poor performance and Boilerplate overdose 等。对于每一个问题,做者首先进行了描述,而后介绍了在 Vulcan 的开发过程当中是如何定位,而且解决的。更多相关内容参考 GraphQL Reference。
- Redux 模块与代码分割: Twitter Lite 一直在使用 Redux 做为其状态管理框架,而且在不断地寻找合适的模块与代码风格方案。虽然 Redux 默认的接口风格并不是面向那种持续加载的情形,本文便是介绍了 Twitter Lite 如何经过合理的代码风格来支持渐进式代码加载,该模式已经在生产环境下经受了数年的检验。更多相关内容参考 Web 开发基础与工程实践系列。
- Addy Osmani: 使用 Webpack 进行 Web 性能优化: 现代 Web 应用经常会使用所谓的构建工具来建立部署到生产环境的包体,该包体每每是被优化的、压缩的,尽量减小用户的消耗。本文则是 Addy Osmani 编写的,基于 Webpack 的 Web 性能优化教程,讨论了如何利用代码分割等特性来移除不用的代码片,而且尽量压缩包体,来保证最小的网络消耗与处理时间。更多相关内容参考 Web 开发基础与工程实践/性能优化系列。
深度阅读
深度思考,升华开发智慧
算法
- React 模式演化: 本文将会深度探讨 React 生态圈中流行的架构模式,这些架构模式可以提高代码的可读性,清晰性,而且保障代码的可组合性与可重用性。本文将会依次介绍 Conditional Render, Passing Down Props, Destructuring Props, Provider Pattern, High Order Components, Render Props, 等等模式。更多相关内容参阅 React 与前端工程化实践系列。
- 前端面试手册: 不一样于传统的软件工程师的技术面试,前端工程师的面试可能较少地关注算法,更多地瞩目于交互相关以及 HTML,CSS,JavaScript 这些领域相关的知识。本文做者在遍寻了现存的面试手册以后,未发现有彻底满意的,前端相关的面试手册;所以编写了此文,以共享本身在前端工做中的知识积淀,本文也能够看作对于著名的 Front-end Job Interview Questions 的回答。更多相关内容参考 Awesome Web Reference。
- 如何训练可以将设计稿转化为 HTML 与 CSS 的 AI 程序: 随着人工智能与深度学习技术的发展,咱们也能够预见它们将逐步地改变前端开发中的一些领域。AI 可以帮助咱们提高原型构建的速度,下降软件构建的门槛。这两年来,随着 Tony Beltramelli 的 pix2code paper 以及 Airbnb 开源 sketch2code,咱们能够逐步地使用 AI 来帮助咱们构建简单的页面。不过,目前前端开发自动化方面最大的瓶颈可能就是计算能力,可是这并不妨碍咱们来学习了解相关的深度学习基础算法,以及如何训练数据,如何使用模型来进行界面转换。本文中,做者会按部就班地带领读者来构建基础的,可以将某个设计稿转化为 HTML 与 CSS 代码的神经网络。更多相关内容参阅 Awesome Web Reference。
- 2018-有货移动 Web 端性能优化探索实践: 在移动互联网的时代里,对于一个 Web 站点来讲,移动端的用户体验尤其重要。现代 web 站点的设计和开发都是以移动优先做为第一原则,咱们也专门为了移动端的 Web 站点作了相应的优化和提高。这个过程当中任何一个环节的延迟都会形成性能瓶颈,下降用户继续访问的可能性,因此咱们在服务器端,浏览器端,网络加载,多个方面作了一系列的优化工做。
开源项目
乐于分享,共推前端发展
npm
- Automerge: Automerge 是相似于 JSON 的,可以用于构建协同 JavaScript 应用的数据结构。其核心特性在于容许多个用户并发修改,而且会进行自动地合并;目前,不少的 JavaScript 应用会将状态保存在 JSON 文档这样的模型中,Automerge 便可以保证这种使用的一致性,还可以提供原子化同步与合并等扩展功能。
- winamp2-js: winamp2-js 是利用 HTML5 与 JavaScript 对于 Winamp 2.9 的覆写,包含了以下特性:支持动态换肤,支持经过拖拽的方式加载本地皮肤文件或者资源文件,支持自定义操做按钮等。
- Rekit: Rekit 是完整的,开发基于 React,Redux,与 React Router 应用的工具集与解决方案。Rekit 首先提供了包容万象的编辑器,帮开发者自动进行了项目构建与文件布局,从而使得开发者可以更加专一于业务逻辑,而不是无止境的库、模式、配置文件等等。Rekit 提供了 opinionated 的架构模式,经过面向特性的分割方式,来保证应用的可扩展性、可测试性与可维护性。
- WebAssembly Studio: WebAssembly Studio 是在线学习、实践、运行 WebAssembly 的工做台,它提供了基于 Web 的 IDE,支持用户将 C++ 或者 Rust 编译为 WebAssembly。同时,用户也能够本地运行该 Studio,只须要安装 Node.js 与 Webpack 而后运行便可。
巅峰人生
- N26 是如何利用 JavaScript 构建面向银行业的微服务系统: N26 是来自德国的银行业初创项目,其 CTO Patrick Kua 在 ThoughtWorks 工做了十三年,积累了丰富的软件相关经验,并成功地带领技术团队为数十万用户提供优质的银行业服务。本文以对话的方式,注重于讨论 Patrick 的团队时如何选择语言与框架,若是处理测试、DevOps 以及持续集成等操做,若是部署微服务并提供高可用的服务。
前端之巅
「前端之巅」是 InfoQ 旗下关注前端技术的垂直社群,加入前端之巅学习群请关注「前端之巅」公众号后回复 “ 加群 ”。投稿请发邮件到 editors@cn.infoq.com,注明 “ 前端之巅投稿 ”。redux
