前端每周清单专一前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点;分为新闻热点,开发教程,工程实践,深度阅读,开源项目,巅峰人生等栏目。欢迎关注【前端之巅】微信公众号(ID : frontshow),及时获取前端每周清单。html
国内国外,前端最新动态
前端
Kotlin 1.2 发布: 本周 Kotlin 1.2 正式发布,继续了 Kotlin 走向跨平台现代应用开发的步伐。Kotlin 1.1 加入了对 JavaScript 的支持,能够将 Kotlin 代码编译为 JavaScript 而且在浏览器中运行。而该版本中,Kotlin 提供了在 JVM 与 JavaScript 之间复用代码的能力,容许开发者编写一次业务代码,而后运行在从服务端,到浏览器,到 Android 等跨平台的应用服务中。react
React 16.2.0 发布: React 16.2 提高了对于 Fragments 的支持,即容许在某个组件的 render 方法中返回多个子元素。在 React 16 中容许开发者以数组方式返回多个子元素,可是这种写法却与标准的 JSX 产生轻微混淆;而 Fragment 能够看作对于数组的透明封装,同时其也支持传入 key 属性,以在重渲染时进行判断。除此以外,该版本还为 React.Children 工具函数添加了实验性的 Call/Return 类型,修复了 React DOM,React Test Render 中的一系列问题。git
IPV6 要来啦:新华社北京 11 月 26 日电:近日,中共中央办公厅,国务院办公厅印发了《推动互联网协议第六版(IPv6 )规模部署行动计划》,并发出通知,要求各地区各部门结合实际认真贯彻落实。下一代互联网国家工程中心也宣布由该中心牵头发起的 “ 雪人计划 ” 已在全球完成 25 台 IPV6 根服务器架设。其中,中国部署了4台,打破了过去没有根服务器的困境。与此同时,下一代互联网国家工程中心正式宣布推出 IPv6 公共 DNS:240c::6666 。经过免费提供性能优异的公共 DNS 服务,为广大 IPv6 互联网用户打造安全 , 稳定 , 高速 , 智能的上网体验,助力《推动互联网协议第六版( IPv6 )规模部署行动计划》全面落实。github
步步为营,掌握基础技能
算法
重思:最佳的请求策略,就是没有请求: 鉴于浏览器的并发请求数与网络带宽的限制,Web 性能优化的一条策略就是尽可能减小请求的数目;咱们习惯将资源文件打包到少数的包体中。不过随着 HTTP/2 的普及,其多路复用的特性容许咱们可以更高效地传递文件,本文就着重讨论了在 HTTP/2 的背景之下是否还应该一味地减小请求数目。本文首先讨论了 HTTP/2 的特性,而后讨论了 HTTP/1.1 中的打包压缩,缓存策略等在 HTTP/2 中的实践技巧变动;更多 Web 性能优化相关资料参考这里。后端
Web 应用中的常见安全问题: 上期清单中笔者推荐了多篇网站应用渗透相关的文章,而本系列文章则是对于常见的 Web 应用安全问题进行介绍与分析。本文首先讨论了密码哈希存放的问题,做者认为应该使用 BCrypt 来替代 MD5 或者 SHA512 等传统哈希算法;而后介绍了 XSS 的基本概念与防护手段,最后讨论了 Session 存放于安全相关的问题。更多 Web 安全资料索引参考这里。数组
立足实践,提示实际水平
浏览器
来自 Pinterest 的 PWA 性能案例: 本文是 Addy Osmani 大神分享的,Pinterest 将其移动 Web 客户端进行 PWA 改造的案例;本文主要涵盖了如何减小 JavaScript 包体尺寸以提升加载速度,与使用 Service Worker 进行网络弹性恢复等内容。本文 首先对比了改造先后 Pinterest 移动端网站关键指标,以及与原生应用的性能对比;而后介绍了 Pinterest 的代码构成 , 使用的 Webpack 异步分割与优化插件等内容。接下来讨论了 React 应用的潜在性能痛点与动画优化,最后讨论了如何用 Service Workers 添加缓存功能与离线支持;更多 PWA 的使用案例参考这里。缓存
Service Worker 与页面刷新: PWA 的目标是为用户提供接近原生的体验,可是这也带来了某个使用场景的不一致性考量:当用户点击浏览器的刷新按钮时,网页自带的 Service Worker 可能未更新,以致于用户仍旧浏览旧版的网页。做者在首篇文章中以案例展现了 Service Workers 是如何 “ 破坏 ” 浏览器刷新按钮的功能,在第二篇文章中则讨论了如何避免这种不一致性。更多 PWA 实践能够阅读 Web 应用架构与性能调优。
深度思考,升华开发智慧
2017 ThoughtWorks 技术雷达 VOL.17: 技术雷达是 ThoughtWorks 技术顾问委员会(TAB ),基于 Thoughtwork s 的全球技术战略以及对行业有重大影响的技术趋势总结而来。本期技术雷达的精彩集锦关注了崛起的中国开源软件市场 , 容器编排首选 Kubernetes, 成为新常态的云技术以及各方对区块链的信任稳步加强;而在前端相关领域,本期技术雷达还讨论了 Headless Chrome, Cypress, Flow, Lighthouse, Rendertron, Yarn, CSS Grid Layout,CSS Modules , Jest,Kotlin, CSS-in-JS, Weex 等内容。
WebAssembly 的应用场景: 本文是 How JavaScript Works 系列文章的第六篇,着眼于介绍 WebAssembly 相关的内容,分析了其相较于 JavaScript 在加载时间 , 执行速度 , 垃圾回收 , 内存使用 , 调试 , 多线程 , 可移植性等方面的优点。本文首先介绍了 V8 引擎的 JavaScript 解析与执行,以及 TurboFan 优化的流程,讨论了引入 WebAssembly 的结合点;而后分析了 WebAssembly 内存模型等内容,最后以 SessionStack 中具体的使用案例分析了 WebAssembly 合适替代现有 JavaScript 的情景。更多 WebAssembly 的学习资料参考这里。
乐于分享,共推前端发展
stacks-cli: Wappalyzer 已是很是不错的用于分析网站技术构成的 Chrome 插件,不过对于那些喜欢使用命令行程序的开发者,stacks-cli 是个不错的选择;stacks-cli 可以识别反馈 CDN,Web 服务器 , 第三方插件 , 界面框架等内容。
Sampling Heap Profiler: Sampling Heap Profiler 目前仍是实验性的工具,其可以对于 V8 的堆存储进行随机抽样,来帮助开发者发现究竟是什么对象占据了大量的内存。它一样会追踪栈上某个指定对象的内容,从而了解对象的存活性与对应的依赖路径。
Joplin: Joplin 是免费 , 开源的笔记与待办事项类应用,其提供了 Windows,macOS , Linux,Android 以及 iOS 等不一样平台的客户端,从界面应用程序到命令行程序皆有涉及。Joplin 使用了 React Native 开发移动端应用,使用了 Electron 开发桌面端应用,其源代码仍是很值得借鉴阅读;其使用了 MIT 协议,也方便进行二次开发。
Reactopt: Reactopt 是用于检测 React 应用中,没必要要的重渲染的命令行工具,其能够看作 react-addons-perf 的替代工具。在启动 Reactopt 以后,脚本会自动地在浏览器中打开应用;开发者能够经过输入 done
来结束检测,Reactopt 会反馈那些触发没必要要的重渲染的事件,而且提示哪些组件可以经过 shouldComponentUpdate 来优化性能。
「前端之巅」是 InfoQ 旗下关注前端技术的垂直社群,加入前端之巅学习群请关注「前端之巅」公众号后回复 “ 加群 ”。投稿请发邮件到 editors@cn.infoq.com,注明 “ 前端之巅投稿 ”。