前端清单第 27 期:React Patent License 回复,Shopify WebVR 购物,原生 JS MVC 设计

前端每周清单第 27 期:React Patent License 回复,Shopify WebVR 购物,原生 JS MVC 设计,Flow 优化 React 支持

作者:王下邀月熊 编辑:徐川

前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点;分为新闻热点、开发教程、工程实践、深度阅读、开源项目、巅峰人生等栏目。欢迎关注【前端之巅】微信公众号(ID:frontshow),及时获取前端每周清单。

新闻热点

国内国外,前端最新动态

  • React 就开源许可证风波进行回复:数周前,Apache 基金会决定禁止旗下项目使用 React,因为其在标准的 BSD 许可证之外添加了专利声明;此举引发了社区的广泛讨论,希望 React 能够更新其开源许可证。经过数周的讨论,近日 Facebook 正式做出了回复,不过令人遗憾的是最终还是拒绝更新许可证,以避免未来可能遇到的专利冲突;Facebook 在开源许可证中声明,使用 React 进行开发的商业项目,不可以专利反诉 Facebook ,也可以查看此篇文章或者社区的讨论了解更多信息。
  • Bootstrap 4 Beta 发布:经过两年的开发,Bootstrap 4 Beta 版本终于发布;该版本中值得注意的变化包括,从 Less 迁移到了 Sass、布局系统几乎全部迁移到了 Flexbox、优化了卡片的使用体验、自定义了 Normalize.css、放弃了对于 IE8 与 IE9 的支持、复写了几乎所有的 JavaScript 插件、提升了 Tooltip 等使用体验等。
  • Node.js 8.4.0 发布:本周 Node.js 8.4.0 版本发布,其重要的特性变化包括,引入内建的 http2 实验支持、允许在 inspector 控制台中查看 require()、更新了 N-API、修复了 Stream 中存在的部分错误、util.format 提供了新的占位符等。
  • ESLint 4.5.0 发布:近日发布的 ESLint 4.5.0 版本是对于 ESLint 的小版本更新,引入了部分新的特征支持与错误修复。新版本完善了对于 indent 规则、new.target 表达式以及 NaN 的支持,并且修复了 junit 结果以及 verifyAndFix 参数的错误。

开发教程

步步为营,掌握基础技能

  • Preact:轻巧快速的 React 替代:Preact 是提供了兼容 React ES6 API 的轻量级前端库,Preact 本身选择了非常精巧的实现模式,避免了 React 中因为过度工程化带来的部分缺陷。本文着眼于介绍 Preact 的基础用法,从 Preact 与 React 以及常见的替代库的对比、Preact 与 React 在使用上的区别、如何使用 preact-compat 来无缝替换 React 到使用 preact-cli 快速开发项目等相关知识;更多 React 相关资料参考这里
  • React 基础概念纵览:本文并不会介绍 React 是什么或者为什么要学习 React,而是希望能够在单篇文章内,对实用的 React 相关概念进行介绍;让那些对 DOM API 有所了解的开发者快速上手开发 React。本文依次介绍了 React 组件化的设计理念、JSX 到底是啥以及在 JSX 中如何使用 JavaScript、如何利用 JavaScript 类来编写 React 组件、如何处理用户响应事件、如何为组件编写 Story、如何设置私有状态等内容;更多 React 相关资料参考这里
  • Chrome DevTools 进阶指南:Chrome DevTools 是非常强大的开发工具,而本文则是以数十张动图的方式细致生动地介绍了如何使用 Chrome DevTools 进行常见的开发调试。本文涉及的内容包括了如何进行 CSS 覆盖率分析、如何进行 CPU 使用率分析、如何不使用扩展而进行浏览器截屏、如何进行 Profiling、如何进行时间轴回溯等内容;更多 Web 调试相关资料参考这里
  • Flow 0.53.0 引入更完善的 React 支持:在早期的 Flow 版本中,其主要还是针对 React.createClass() 进行代码检测;在近日发布的 0.52.0 版本中,Flow 引入了更加完善的 React 支持,其最大的区别在于 Flow 开始完全支持基于 React.Component 类继承的组件定义方式。此外,本文还介绍了如何为 React Children、HoC 等实践模式添加静态类型检测;更多 Flow 相关资料参考这里
  • 将现有的 Angular 应用转化为 PWA:本教程将会介绍如何将现有的 Angular 应用逐步地转化为 Progressive Web App,该教程适用于任何基于 @angular/cli 命令行工具创建的项目。本文首先介绍了 Service Worker 的作用、如何在项目中集成 Service Worker、如何创建自定义的 App Manifest;然后讨论了如何管理离线特征,最后说明了如何利用 Google LightHouse 进行应用的性能、可用性与最佳实践的测试,以及如何提升应用的性能。

工程实践

立足实践,提示实际水平

  • React Native 中可共享的元素变换:本文着眼于讨论如何构建能够同时运行在 Android 与 iOS 应用中的 React Naive 动画;以常见的列表详情页动画切换为例,首先介绍了动画过程中帧的设计,然后介绍了 Animated 库及基础的语法,并且讨论了潜在的性能瓶颈以及如何使用 useNativeDriver;最后介绍了如何在变换过程中隐藏源与目标图像,以及如何实现返回按钮的功能。更多 React Native 相关资料参考 这里
  • 探索 ReactJS 中的 CSS 架构:本文着眼于讨论 React 开发中常用的 CSS 架构,从 BEM 命名开始谈起,介绍其对于 CSS 模块分割的意义以及实际场景下增强型的 BEM 用法;然后介绍了 React 中 BEM 的实践。接下来本文讨论了 CSS Modules,如何配置与使用 CSS Modules,以及如何进行组件分层的解决方案。该结构背后的理念是通过以一种可伸缩的方式保持 CSS 架构创建更好的 ReactJS 项目,可以支持成千上万的组件和开发人员协同工作;然而本文的真正关键点在于打开你的思维,去适应新事物。更多 React 相关资料参考这里
  • Windows Edge 引入独立渲染来保证顺滑的 Web 体验:独立渲染能够允许浏览器选择性地将部分图像渲染的工作分配给其他的 CPU 线程处理,从而保证用户界面线程只需要分配最短的时间片来进行渲染操作。本文即是 Windows Edge 团队分享它们利用独立渲染来提高 Edge 浏览器性能体验的经验分享,首先以图片形象地比较了 EdgeHTML 15 与 EdgeHTML 16 在渲染流程上的异同,然后分析了图片、SVG、Canvas 等界面元素在新的渲染机制下的表现。更多 Web 开发相关资料参考这里
  • 构建混合渲染的 PWAPWA Directory 最初是采用了纯粹服务端渲染的 PWA 应用,它对于搜索引擎地支持比较好。不过这种应用并无法很好地进行客户端路由跳转,反而会带来一些额外的性能损耗;本文则依次介绍了如何使用 JavaScript 来托管路由跳转、如何利用 Service Worker 来进行数据缓存或者后台操作等内容。更多 PWA 相关资料参考这里
  • 构建基于 Web Speech API 与 Node.js 的简单 AI 聊天机器人:语音控制正在变得越来越流行,越来越多的智能手机使用者习惯使用 Siri 或者 Cortana 这样的指南辅助工具来进行方便地命令操作。同时,Web 平台也在变得不断完善,我们也可以用 Web Speech API 来创建最小可视化的交互友好的应用。本文首先介绍了如何在浏览器中使用 Web Speech API,然后介绍了如何使用 Socket.io 以及 WebSocket 来进行实时通信与数据传输,最后介绍了如何在 Node.js 中集成来自 api.ai 的语音解析功能来将客户端传来的语音转化为文本。更多 Node.js 相关资料参考这里

深度阅读

深度思考,升华开发智慧

  • FreeWheel 前后端分离改造实践:在现代前端应用的工程实践中,前后端分离的架构会为两端带来更多的灵活性,已成为主流趋势。与之相对的,传统的单体 Web 应用(Monolithic Web Application)则将前后端代码放在一起,虽然耦合性较强,但在产品研发的特定阶段仍具有较强的优势,早期的 ASP.NET、Java Spring MVC,以及 Ruby On Rails 都是单体应用的代表性框架。 本文将以 FreeWheel 从单体应用改造为前后端分离的实践为例,着重介绍其间前端所遇到的挑战和解决方案。
  • 原生 JavaScript 中的 MVC 设计模式:近些年各种前端框架争妍斗艳,百花齐放,每个前端框架都有其自身的设计理念与模式,并且使得开发者更多的关注于上层应用开发;本文则返璞归真,讨论了如何基于原生的 JavaScript 去实现 MVC 模式。本文首先介绍了 MVC 模式的概念,然后讨论了展示一只企鹅需要分成几步:构建用于连接视图与模型的 Controller、构建用于处理数据的 Model 以及构建用于将数据渲染到界面上的 View 层。更多 JavaScript 相关参考这里
  • 构建 Web VR 虚拟购物体验的实践:本文是来自 Shopify 的工程师,分享的如何使用 WebVR 提供交互式虚拟购物体验的实践。本文首先分析了目前 VR 技术的发展现状以及主流的 VR 设备,然后介绍了如何将现有的产品转化为 3D 形式,接下来分享了目前 WebVR 的开发体验,以及对于 A-frame、Clara.io 以及 PlayCanvas 等常见的 VR 开发框架工具的技术选型考量。最后,本文还讨论了 3D/AR/VR 等技术发展的未来;更多 WebVR 相关资料参考这里
  • 为什么我们选择了 GraphQL:本文是来自 Universe 的工程师分享的其内部进行服务端应用程序开发的技术选型考量,主要是对于选择 GraphQL 之后的实践优劣分析。本文依次讨论了对于强客户端协议产生的问题与解决方案、如何进行领域层抽象、类型化的请求与响应接口、如何使用 Apollo Optics 进行请求划分优化、如何合理地构建接口文档等内容;更多 GraphQL 相关资料参考这里
  • 理解 V8 字节码:V8 是由 Google 开源的 JavaScript 引擎,目前在 Chrome、Node.js 等许多的应用程序中得到广泛应用,本文着眼于介绍 V8 中使用的字节码格式。本文首先介绍了字节码的基本概念与 V8 的执行流程,然后介绍了典型的 V8 字节码的组成:LdaSmi、Star r0、LdaNamedProperty、Add r0 等常见的指令语句;更多 V8 相关资料参考这里

开源项目

乐于分享,共推前端发展

  • Spikenail:Spikenail 是面向 Node.js 的支持 GraphQL API 语法的框架,它允许开发者便捷地构建 GraphQL 接口;Spikenail 内置了对于 ES7 语法特性以及 GraphQL 的支持,允许通过实体类的方式快速描述嵌套关系、隔离域、自定义角色等访问控制。
  • esprint:esprint 借鉴了 flow 的设计理念,允许以多线程方式运行 linting 引擎而提升 eslint 的效率。esprint 会启动服务端进程来缓存每个文件的 lint 结果,使用 watcher 来监控文件的变更情况,以保证只对发生变化的文件进行检测;更加详细的介绍也可以参考这篇博客
  • Backpack:Backpack 是受到 create-react-app、Next.js、Nodemon 启发的,面向 Node.js 项目的最小化构建工具。Backpack 允许我们创建零配置的 Node.js 项目,并为其添加文件监控、热加载、编译以及打包等常见的功能;Backpack 还允许我们方便地添加自定义的 Babel 等配置。
  • Puppeteer:Puppeteer 是 Google Chrome 团队开源的面向 Node.js 的,基于 DevTools 协议的远程 Headless Chrome 控制库,它可以生成网页截图、PDF、抓取单页应用与网页内容、进行自动化表单提交、界面测试与模拟键盘输入等功能。

巅峰人生

  • 要怎样努力,才能修炼成一个架构师?:本文是七牛云高级副总裁、首席架构师李道兵在大咖说的分享,讲述了自身对于架构师养成之路与自我修养的认知。本文讨论了未来的编程学习、自身从化学专业到软件行业切换的感想、年轻程序员应该如何成长、如何在团队中脱颖而出、如何做好架构等内容。

前端之巅

「前端之巅」是InfoQ旗下关注前端技术的垂直社群,加入前端之巅学习群请关注「前端之巅」公众号后回复“加群”。投稿请发邮件到editors@cn.infoq.com,注明“前端之巅投稿”;或者可以阅读往期文章:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如果组件之中有复用的代码,需要重新创建一个父类,父类中存储公共代码,返回子类,同时把公用属性...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例如我们的 setState 函数式同步执行的,我们的事件处理直接绑定在了 dom 元素上,这些都跟 re...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom 转为真实 dom 进行挂载。其实函数是组件和类组件也是在这个基础上包裹了一层,一个是调...
react 本身提供了克隆组件的方法,但是平时开发中可能很少使用,可能是不了解。我公司的项目就没有使用,但是在很多三方库中都有使用。本小节我们来学习下如果使用该...
mobx 是一个简单可扩展的状态管理库,中文官网链接。小编在接触 react 就一直使用 mobx 库,上手简单不复杂。
我们在平常的开发中不可避免的会有很多列表渲染逻辑,在 pc 端可以使用分页进行渲染数限制,在移动端可以使用下拉加载更多。但是对于大量的列表渲染,特别像有实时数据...
本小节开始前,我们先答复下一个同学的问题。上一小节发布后,有小伙伴后台来信问到:‘小编你只讲了类组件中怎么使用 ref,那在函数式组件中怎么使用呢?’。确实我们...
上一小节我们了解了固定高度的滚动列表实现,因为是固定高度所以容器总高度和每个元素的 size、offset 很容易得到,这种场景也适合我们常见的大部分场景,例如...
上一小节我们处理了 setState 的批量更新机制,但是我们有两个遗漏点,一个是源码中的 setState 可以传入函数,同时 setState 可以传入第二...
我们知道 react 进行页面渲染或者刷新的时候,会从根节点到子节点全部执行一遍,即使子组件中没有状态的改变,也会执行。这就造成了性能不必要的浪费。之前我们了解...
在平时工作中的某些场景下,你可能想在整个组件树中传递数据,但却不想手动地通过 props 属性在每一层传递属性,contextAPI 应用而生。
楼主最近入职新单位了,恰好新单位使用的技术栈是 react,因为之前一直进行的是 vue2/vue3 和小程序开发,对于这些技术栈实现机制也有一些了解,最少面试...
我们上一节了了解了函数式组件和类组件的处理方式,本质就是处理基于 babel 处理后的 type 类型,最后还是要处理虚拟 dom。本小节我们学习下组件的更新机...
前面几节我们学习了解了 react 的渲染机制和生命周期,本节我们正式进入基本面试必考的核心地带 -- diff 算法,了解如何优化和复用 dom 操作的,还有...
我们在之前已经学习过 react 生命周期,但是在 16 版本中 will 类的生命周期进行了废除,虽然依然可以用,但是需要加上 UNSAFE 开头,表示是不安...
上一小节我们学习了 react 中类组件的优化方式,对于 hooks 为主流的函数式编程,react 也提供了优化方式 memo 方法,本小节我们来了解下它的用...
开源不易,感谢你的支持,❤ star me if you like concent ^_^
hel-micro,模块联邦sdk化,免构建、热更新、工具链无关的微模块方案 ,欢迎关注与了解
本文主题围绕concent的setup和react的五把钩子来展开,既然提到了setup就离不开composition api这个关键词,准确的说setup是由...
ReactsetState的执行是异步还是同步官方文档是这么说的setState()doesnotalwaysimmediatelyupdatethecomponent.Itmaybatchordefertheupdateuntillater.Thismakesreadingthis.staterightaftercallingsetState()apotentialpitfall.Instead,usecom