前端技术的发展日新月异,新技术的不断出现推动着前端应用的规模和场景不断向原生桌面... 展开 >
于航,曾在阿里巴巴本地生活、Tapatalk 等国内外企业工作,现在 PayPal 上海负责 Global GRT 平台相关的技术研发工作;FCC (FreeCodeCamp China) 上海技术社区负责人;多次 QCon、GMTC 大会讲师;WebAssembly 技术布道者,2017 年注册成为 W3C 官方 CG 成员,定期参与 CG 组织的各种在线视频研讨会议,在跟进 Wasm 最新发展情况的同时也为 Wasm 的标准化提出自己的建议和意见。2018 年深度参与到 Emscripten 编译器工具链项目的研发工作中,同年出版名为《深入浅出 WebAssembly》的国内第一本 Wasm 技术书籍,为推动国内 Wasm 技术的发展和落地实践做出了微小的贡献。研究领域主要为前端基础技术架构、 Serverless、WebAssembly、LLVM 及编译器等。
前端技术的发展日新月异,新技术的不断出现推动着前端应用的规模和场景不断向原生桌面应用靠拢。WebAssembly、WebRTC、前端微服务、Deno 以及 HTTP-over-QUIC (HTTP3) 等新技术方案/模式/产品的出现,定会在未来某时,在背后默默影响着人们的智能生活体验。
TC39 is the committee which defines the JavaScript standard. JavaScript developers have been telling us for many years that they need weak references and finalizer callbacks: These capabilities let programs hook into garbage collection to free up related resources. After several years of debate and refinement, TC39 has settled on a design for WeakRefs and FinalizationGroups which has reached Stage 3 in its process and will likely soon be shipping in browsers and Node.js. In this talk, I will explain how to use WeakRefs, as well as how TC39 works and how to get involved, so that we can work together for the future of JavaScript.
1. Use cases for WeakRefs and FinalizationGroups
(1) In-memory cache
(2) Triggering errors on stranded resources
(3) Using WebAssembly memory from JavaScript
(4) In-memory cache with tombstone cleanup
2. How TC39 develops JavaScript
(1) What is TC39?
(2) Development of the JavaScript standard
(3) TC39 stage process
(4) Some recent TC39 proposals
3. Details of WeakRefs in TC39
(1) History of this proposal in TC39
(2) WeakRef and FinalizationGroup APIs
(3) Weak guarantees in WeakRef/FinalizationGroup behavior
(4) Scheduing interactions with deref() and FinalizationGroup callbacks
4. Participating in TC39
(1) Giving feedback on proposals via GitHub
(2) Helping with tests and documentation
(3) Creating implementations in Babel, tools, JS engines, etc
(4) Joining Ecma to be a TC39 delegate
Audience benefits:
1. Learn to use the new JavaScript WeakRefs feature
2. Get involved in shaping the future of JavaScript through TC39
Frontier highlights:
WeakRefs and FinalizationGroups can lead to more precise, efficient memory consumption in modern JavaScript
Knowledge reserve:
1. Know simple JavaScript
2. Understand what garbage collection is
参考翻译:
Javascript Weakrefs 和 TC39 标准化
演讲提纲:
TC39 委员会负责制定 JavaScript 标准。多年来,JavaScript 开发人员一直告诉委员会,他们需要弱引用和 Finalizer 回调:这些功能使得程序可以连接到垃圾收集中,以释放相关资源。经过几年的争论和改进,TC39 已经确定了 WeakRefs 和 FinalizationGroups 的一种设计方案,目前已经到了第3阶段,可能很快就会在浏览器和 Node.js 中发布。在本次演讲中,我将解释如何使用 Weakrefs,然后介绍 TC39 是如何工作的,以及如何参与其中,以便大家能够为 JavaScript 的未来共同努力。
1. WeakRefs和FinalizationGroups的用例
(1)内存缓存
(2)滞留资源触发错误
(3)使用 JavaScript 中的 WebAssembly 内存
(4)带逻辑删除的内存缓存
2. TC39 如何开发 JavaScript
(1)什么是 TC39?
(2)JavaScript 标准的发展过程
(3)TC39 阶段流程
(4)近期 TC39 的一些建议
3. TC39 中的 WeakRefs 细节
(1)TC39 中本提案的历史
(2)WeakRef 和 FinalizationGroup API
(3)WeakRef/FinalizationGroup 行为中的弱保证
(4)调度与 deref
(5)和 FinalizationGroup 回调的交互
4. 参与TC39
(1)通过 GitHub 反馈提案
(2)帮助测试和文档
(3)在 Babel、工具、JS 引擎等中创建实现
(4)加入 Ecma 成为 TC39 代表
听众收益:
1. 学习使用新的 JavaScript WeakRefs 特性
2. 通过 TC39 参与塑造 JavaScript 的未来
前沿亮点:
WeakRefs 和 finalizationgroup 可以使现代 JavaScript 中的内存使用更精确、更高效。
知识储备:
1. 了解简单的 JavaScript
2. 了解什么是垃圾收集
随着 Web 技术的不断发展, WebAssembly 非常有技术前景。尽管很多公司已经在尝试并落地 WebAssembly,但仍很多公司以及开发者处于观望状态,并不了解如何将 WebAssembly 融入到现有的项目中。本次演讲我将通过 coupang 的两个实际落地的项目来深入探讨 WebAssembly 的性能及保密相关的优势,包括两个项目不断演进的具体过程及未来的发展方向。通过本次演讲,希望大家能有所启发,可以根据项目需求去引入 WebAssembly 技术,提升自身的开发效率和产品体验。
演讲提纲:
1. 问题背景
(1) 如何更好的保护前端的核心代码
(2) 如何更好的适配 Mobile 端播放器
2. 代码保护方案调研及探索
(1) 常规的代码保护方案
(2) Google reCAPTCHA 所采用的方案调研
(3) 结合 WebAssembly 的落地方案
(4) 各方案优劣势对比
(5) 与 QuickJS 的结合 - 提升性能、缩小生成体积、增强编码体验
(6) 未来规划 - 小程序支持、DevTools Protocol 支持
3. 适配 Mobile 播放器
(1) 如何在 Mobile 端实现一个"抖音"
(2) 遇到的问题
(3) 商用/开源方案的调研对比
(4) 摆脱 FFmpeg ,更灵活的 WASM 音视频软解方案
(6) 如何进行多 WebWorker 解码,提升软解性能
(7) 增加多种解码格式支持( H265/AV1 /VP9 )
(8) 针对移动端的软解优化和延迟降低
(9) 各方案优劣势对比
(10) 未来的计划
4. 展望与总结
听众收益:
1. 刷新前端加解密方案的新认知
2. 了解并使用 WebAssembly 保护核心前端代码逻辑
3. 了解如何使用 WebAssembly 在 Mobile 端提供统一的播放器体验
知识储备:
1. WebAssembly 的基础认知
2. 了解前端的一些混淆/加密工具及方案
3. 了解播放器的基本原理
4. 了解编解码和编译相关技术更佳
2018年,Ryan在JSConf EU上做了主题为 “10 Things I Regret About Node.js” 的分享,Ryan回顾了在他看来当初开发Node.js时留下的十大遗憾。由于Node.js现在已经广泛应用于各个领域,为了保证兼容性,对Node.js底层进行大规模改造已经不现实。于是Ryan宣布他决定开发一个全新的JavaScript Runtime以解决当初的种种缺陷,这便是 Deno。
演讲提纲:
1. 为什么开发 Deno?
(1) 当前 JavaScript 生态存在的问题
(2) Deno 的目标
(3) Deno 的哲学
(4) Deno 的生态
2. 深入理解 Deno
(1) Deno 的底层架构
(2) Deno 的高层 API 和内部细节
(3) Deno 的性能
3. 未来展望
听众收益:
1. 了解 Ryan Dahl 为什么在 Node.js 发布十周年后又开发了 Deno
2. 从底层原理对比 Node.js 和 Deno 的异同
3. Deno 的内部实现细节
4. Deno 为前端和后端带来了哪些新的可能性
前沿亮点:
深入讲解 Deno 的底层原理
知识储备:
1. 对 Node.js、npm 有所了解
2. 有过 TypeScript 使用经验
自从2015年第一个跨端框架 React Native 诞生以来,之后涌现出大量各式各样的跨端框架。这些用前端语法来进行跨端 App 开发的框架,大多数都忽略了一个基本的问题,就是前端开发使用的框架采用了和浏览器不同的设计标准,导致使用者上手难度增加,在开发过程中又因为双平台不一致的问题,需要重新开发具有平台针对性的代码,复杂程度进一步加深。
腾讯手机 QQ 浏览器在跨端开发中,从实际痛点出发,通过实践提出多端一体化研发框架 Hippy,该框架使启动和运行性能达到了业内的领先水平。在这次演讲中,我将分享腾讯 Hippy 的设计思路、核心架构和使用方法,希望能为你解决多端体验不一致问题,提高研发效率。
演讲提纲:
1. 前端开发的前世今生
2. 传统开发难以解决的问题
(1) 离线能力
(2) 性能
(3) 平台扩展
3. 跨端框架业内现状
(1) React Native
(2) Flutter
4. 跨段框架现存问题
(1) 上手难度高
(2) 平台一致性差
(3) 性能存在的问题
5. 腾讯给出的解决方案 - Hippy
(1) Hippy 整体框架
(2) Hippy 优势
(3) Hippy 开源
(4) Hippy 上手
(5) Hippy 未来的规划
听众收益:
1. 可以了解目前跨端框架的主流动态
2. 可以了解到腾讯对于跨端框架设计的思考
3. 可以了解 Hippy 是如何承载腾讯过亿用户的访问量
前沿亮点:
腾讯多端一体化框架方案 Hippy 开源
知识储备:
1. 需要对跨端框架现状有基本了解
2. 大致了解过 React Native、Weex、Flutter 的基本情况
3. 对终端开发有一定了解
4. 对跨端开发抱有浓厚兴趣