han's bolg - 年糕記

2019-05前端月报

新闻

  • Google开发者大会(全部视频)
  • QCon大会(PPT可下载)
    • 前端场里,百度amis还不错
  • 2019 new Javasscript
    • JS 解析快了 2 倍
    • async 执行快了 11 倍
    • 平均减少了 20% 的内存使用
    • class fileds 可以直接在 class 中初始化变量不用写在 constructor 里 私有变量前缀
    • string.matchAll 用来做正则多次匹配
    • numeric seperator 允许我们在写数字的时候使用 _ 作为分隔符提高可读性
    • bigint 新的大数字类型支持
    • Intl.NumberFormat 本地化格式化数字显示
    • Array.prototype.flat(), Array.prototype.flatMap() 多层数组打平方法
    • Object.entries() 和 Object.fromEntries() 快速对对象进行数组操作
    • globalThis 无环境依赖的全局 this 支持
    • Array.prototype.sort() 的排序结果稳定输出
    • Intl.RelativeTimeFormat(), Intl.DateTimeFormat() 本地化显示时间
    • Intl.ListFormat() 本地化显示多个名词列表
    • Intl.locale() 提供某一本地化语言的各种常量查询
    • 顶级 await 无需写 async 的支持
    • Promise.allSettled() 和 Promise.any() 的增加丰富 Promise 场景
    • WeakRef 类型用来做部分变量弱引用减少内存泄露
  • React Native还没完!
    • Facebook App 的改版使用了 React Native,进一步扩大了 React Native 的应用范围:视频
    • 在 Facebook 里面 RN 的使用很广泛,产品包括:Ads Manager, Oculus Companion, Marketplace, Dating, Jobs, Profile, Settings, Blood Donations, Crisis Response 等等
    • 去年 RN 的大规模重构,使用 C++ 重写了 RN 的核心部分:https://www.youtube.com/watch?v=UcqRXTriUVI
    • RN 得到了微软的大力支持,你可以用 RN 直接编写 Windows 平台的 UWP 应用
  • Flutter1.5来了!全平台制霸!
    • Flutter 1.5:新的 App Store iOS SDK 更新、iOS 与 Material 小工具更新、引擎对于新型设备的支持,Dart 2.3 带来的全新 UI-as-code 语言功能等等
    • 投资建立技术支持生态系统,目前 Flutter 项目拥有超过 2000 个可用的开源软件包
    • 从移动到多平台:Flutter for Web
    • 正尝试在各类嵌入式设备之上运行 Flutter 应用程序
  • svelte:又一个前端框架,类似 vue
    • 乍看结构很像vue,一个.svelte文件里包括了 script、style、html
    • 提供了一套全新的语法
    • Svelte不依赖于虚拟DOM,在构建时运行
  • Vuex3.1.1 更新:支持 jsDelivr,修复内存泄漏
    • 支持在 NativeScript 应用中调试 Vuex
    • 从uglify换成Terser&支持了type=module的直接加载方式
    • 支持jsdelivr
    • 修复内存泄漏

技术

  • HTTPS的页面发送不了HTTP请求
  • MPEG-DASH在bilibili的应用与实践
    • 自适应比特率串流技术, 2011 年 11 月成为国际标准
    • 自适应码率、无缝切换、降低卡顿率
    • B站在2018年9月将其全量,卡顿率对比 HTTP-FLV 有大幅降低
  • 微信,支付宝小程序实现原理概述
    • 对比了小程序和普通网页的区别
      • 运行环境不同,普通网页开发可以使用各种浏览器提供的 DOM API,进行 DOM 操作
      • 小程序渲染层和逻辑层运行在不同线程中,且渲染层存在多个WebView线程
      • 执行环境不同
    • 分析了小程序为何选择hybrid技术
      • 避免单线程阻塞,用户体验好
      • 方便发布新版本
    • 详细介绍了小程序的双线程模型
      • 线程之间相互独立,通过微信客户端进行通信
      • 渲染层模拟渲染层DOM树,当调用setData后通过Native层传递数据,渲染层对比新旧DOM树后更新。
    • 介绍了小程序的运行&更新&事件处理机制
    • 说明为什么我们要避免频繁的setData
      • setData会占用渲染层的js线程,从而阻塞事件传递到逻辑层。
      • setData会传递大量新数据

工具

每月金句

你要避免两个陷阱。一个是尝试自动化一个不完全理解的服务,另一个是盲目地相信别人的自动化,而不理解它在幕后做的事情。