2022前端技术趋势解读.pdf
《2022前端技术趋势解读.pdf》由会员分享,可在线阅读,更多相关《2022前端技术趋势解读.pdf(320页珍藏版)》请在咨信网上搜索。
1、序演讲人:姜凡(展炎),阿里巴巴前端委员会委员长,大淘宝前端团队负责人,推进前端工程化、端架构演进来不断提升用户体验,致力通过 Node、智能化、产品平台能力建设,演进&定义“新前端”。正文:大家好,我是阿里巴巴前端委员会委员长姜凡,花名展炎。首先感谢大家一直以来对 D2前端技术论坛的关注和支持。今年第十六届 D2 前端技术论坛的 slogan 是“精心”,所谓“精”是指对体验的精益求精,“心”则是指回归用户体验的初心。根据这个 slogan,本次大会组委会拟定了六个主题方向,包括:语言框架、跨端技术、前端体验、Node/Serverless、低代码、多样化。下面,我分别引用一句话,来描述这六
2、个方向。1、语言框架“形而上者谓之道,形而下者谓之器”易经系辞语言框架是 D2 一直保留的专场,有些人可能觉得它有些生涩或实用性不高,而随着技术体系和生态的发展,前端是技术领域里生态最繁华的,究其原因是跟前端语言框架的发展和形态有很大关系。我们希望今天在具体的研发、工程框架、解决方案之外,能够站在更高的视角来看待其背后的演进和发展思路到底是什么,这也是我们一直以来保留语言框架这个专场的原因。2、跨端技术“不可陷之楯与无不陷之矛,不可同世而立”韩非子今天在各个端之间,各个厂商之间,都希望建立起一个高墙,就像一个盾一样把自己的商业和生态圈起来;而从研发角度则希望能够敏捷、快速试错、低成本,就像矛一
3、样去打破这个壁垒。其实我们知道,不可能有一个盾把某个商业完全隔离,也不可能有一个方案能够把这些高墙全部击碎,二者之间就是不断在寻找一个动态的平衡的过程,来解决商业壁垒或商业鸿沟与通用性之间的平衡。3、前端体验“不忘初心,方得始终”华严经前端体验专场是今年独立设定的,这也是今年 D2 论坛的 slogan“精心”的缘起之一,重新声明了用户体验再次回归的价值。4、Node/Serverless“行而不辍,未来可期”荀子修身Node/Serverless 专场在 D2 也是延续了很长时间,我们对它的发展投入了大量工作。因为Node 的历史并不长,存在比如多语言的问题,比如原来仅仅是基于高并发、而今天
4、要回归到弹性扩缩容的问题,以及并不是那么完备的线上运维的问题等等。客观来讲,相比虚拟机和容器的市场份额,Serverless 的市场份额并不是很大。但无论是从技术研发角度还是从云原生厂商角度,都非常看好 Serverless 的前景和市场价值。5、低代码“旧时王谢堂前燕,飞入寻常百姓家”乌衣巷这段话的原意是表达的旧贵族的落寞,但我在这里想表达的是:低代码除了我们今天关注的效能和成本之外,它一方面解决了在不懂技术或没有技术资源的情况下,有一个好的 idea 就可以通过低代码实现,就像我们今天使用电脑的办公软件一样;另一方面,低代码降低了很多门槛,让更多的人有机会进入到社会数字化大升级的战役当中来
5、。换句话说,过去只有少部分人可以做的事情,今天低代码让更多的人可以使用,让他们的产出变得更加有价值,这是一个“普惠”的思想。6、多样化“乱花渐欲迷人眼,浅草才能没马蹄”钱塘湖春行今天的多样化非常繁华,其实多样化的场景完全是因为前端在工程效能上已经做到非常的极致,极致到今天很多技术领域为了工程化的落地,就一定会去考虑和前端大的技术生态的连接。另外,这句话描述的是杭州的自然景观,我也希望疫情能够早点散去,未来能够邀请大家来杭州做一些面对面的交流。好的,以上是本次 D2 大会主题的六大方向以及我本人的一些看法。最后,希望本次 D2 大会能够给大家带来一些收获,引发大家的思考。谢谢大家!。目录语言框架
6、6ReScript:JavaScript 平台上高质量大规模程序构建的秘密武器62022 年 Deno 的生态状况介绍16跨端技术28使用跨端方案 Rax 编写鸿蒙应用28V8 JS AOT 化的探索与实践42浅谈 web component 实践与应用55Serverless67云原生 WebAssembly 与 Serverless67Node.js Web 框架再进化 面向前端与未来标准81用 Rust 和 Node-API 开发高性能 Node.js 模块94前端体验112基于大数据的前端页面异常结果检测112用户行为链路的识别、挖掘及诊断123适老化&无障碍的前端体验探索 为更多人提
7、供便利和自由141低代码165腾讯低代码引擎建设思考和实战165ESM Bundleless 在低代码场景的实践188面向中后台复杂场景的低代码实践思路203多样化219解读千万级关系网络下的数据探寻可视化技术219向量到墨水:从绘画视角解析三维模型的漫画风格渲染技术238开源表单方案 Formily 的核心设计思路252协同文档工作机制简介266CRDT 实时协作技术在稿定编辑器中的应用279虚拟偶像诞生记 数字人行业和技术探究287Web 端短视频编辑器的设计与实现 像做 PPT 一样做视频309语言框架6语言框架ReScript:JavaScript 平台上高质量大规模程序构建的秘密武器
8、摘要:ReScript 是第一个完全由中国人主导、并在世界范围内有广泛用户的通用程序语言。它放弃了对 JavaScript 语法的完全兼容,保证了单个模块级别兼容。它专注于解决实际问题,优化工具链的性能和用户体验,其编译器和构建系统的性能超出了 TypeScript 一到两个数量级,其类型信息也用于辅助生成更高效的代码。分享人:张宏波,ReScript 编程语言作者,前 OCaml 程序语言的唯一中国核心开发人员。Meta 唯一一位在华特聘的软件工程师。本科毕业于清华大学电子工程系,在 MSRA 实习期间对函数式程序语言产生了浓厚的兴趣,被沈向洋院士推荐赴宾夕法尼亚大学就读程序语言的博士学位。
9、博士第二年受 Bloomberg 破格邀请以硕士毕业的身份负责领导该公司函数式语言编译器的开发和维护工作。在该公司工作期间开源的 BuckleScript 编译器是当时该公司最受欢迎的开源软件,多次被公司官方报道。目录:一、ReScript 简介和发展史二、ReScript 基于数据的编程三、示例:红黑树一、ReScript 简介和发展史ReScript 是在放弃对 JavaScript 的语法完全兼容,同时保证单个模块级别的兼容的情况下一门JavaScript 平台上的函数式语言,其类型系统和模块化编程的思想积累了学术界近三十年的研究经验。和传统的学术语言不同的是,ReScript 摒弃了一
10、些学院派的思维,专注于解决实际问题,优化工具链的性能和用户体验,其编译器和构建系统的性能超出了 TypeScript 一到两个数量级,其类型信息也用于辅助生成更高效的代码。ReScript 是第一个完全由中国人主导并在世界范围内用于商业开发的通用程序设计语言。1、ReScript:一种静态类型的函数式语言ReScript 用来解决 JavaScript 大规模代码可依赖的重构问题。JavaScript 是脚本语言,大规模代码的重构是很有挑战性的问题,而解决重构的经典方案就是引入一个静态的类型系统。下图针对与 JavaScript 的互操作性(横轴)和类型性可依赖性(纵轴)把 ReScript
11、和其它编程语言进行了对比:Elm 或 PureScript 完全放弃了与 JavaScript 的互操作,设计一个封闭的语言;TypeScript(TS)是另外一个极端,兼容了所有的 JavaScript,然后慢慢变得更安全;ReScript 则属于折中的方式,即在不牺牲类型性可依赖性的前提下与 JavaScript 的互操作越来越好;语言框架语言框架多,在巴西甚至还开设了培训班。韩国 Rescript 网站:https:/green-labs.github.io/有人曾在知乎上提问:为什么中国出了那么多厉害的互联网公司,但没有自己设计过编程语言?我认为创造一个编程语言并不难,但让大众信任和使
12、用这个编程语言是一项很困难的任务。ReScript 最初的 demo 也只用了六个周末,但将它做成一个具有生产价值的编辑器却用了六年时间,而且到现在还有很多需要改进的地方。5、ReScript 的特性下图是一个简单的 ReScript 示例,左边是 ReScript 代码,右边是生成的 JavaScript,通过示例可以看到 ReScript 的特性包括:支持给函数名加 label,提高可读性;自动进行函数类型推断,用户无需标注类型;编辑器自动优化;语言框架语言框架下图是一个相对复杂一点的示例,数据是 1,2,3,有三个函数 map、keep、reduce,open 相当于 JavaScrip
13、t 的 import。2、模式匹配首先定义一个 type schema,然后通过模式匹配解析数据,最后生成新数据。type schema 相当于一个数据描述语言,其表达能力决定了数据处理能力;pattern match 相当于对数据的解析,通过解析将要素重新绑定生成新数据。下图是一个 type schema 示例,白色框中是对应的 TypeScript 的定义,左侧是 ReScript。对比 ReScript 和 TypeScript 的写法有点类似,但二者最大的区别在于 TS 不可将任意类型进行union,这个示例中如果类型有交集就不能用 number 和 undefined 这样定义,而
14、ReScript 则支持任何类型的 union。语言框架语言框架模式匹配三、示例:红黑树1、如何定义:type红黑树是一个平衡二叉查找树,分左右两边,其节点有红黑两种颜色,首先要定义颜色 R 和 B,节点中有叶子节点和中间节点两种分别定义;下图是对比 TypeScript 的定义语言框架语言框架另外,AVL 树也可以用 ReScript 通过模式匹配实现,有兴趣的朋友可以参考知乎文章20 行ReScript 代码实现 AVL 树。20 行 Rescript 代码实现 AVL 树网址:https:/ 是一个很有深度的语言,本次仅分享了其中一部分,感兴趣的朋友欢迎到官网了解更多内容。ReScrip
15、t 官网:https:/rescript-lang.org/语言框架语言框架7、Deno 默认有一个称为安全执行的东西,这意味着您的程序不能访问文件系统、网络连接,除非你明确允许,否则它们无法暂停子进程或访问环境变量。例如我们从远程 URL 运行一个程序:deno run https:/deno.land/std/examples/welcome.tsWelcome to Deno这是 Deno 的功能之一,也很有趣,你无需事先下载资源,这一切都有运行时为你完成。在这里我们正在下载一个名为 Welcome 的程序,这也是我们标准库的一部分,Deno 会下载资源,并从 TypeScript 转换
16、成 JavaScript,然后执行它。如果要允许 Deno 可以访问文件系统、互联网连接、子进程或环境变量,你需要通过提供所谓的允许标准来让 Deno 可以这样做:allow-read=/tmpallow-net=allow-read=/tmp,意味着你的程序现在可以读取您的文件系统中的/tmp 目录;allow-net=,是指 Deno 能够访问互联网连接,但只能连接到 G 域。8、Deno 可以从 URL 访问资源,无需事先在本地下载它们,在这里你可以看到,我们使用了一个名为 magenta 的函数(它也来自 Deno 标准库):import magenta from“https:/den
17、o.land/std/fmt/colors.ts;它来自一个名为 fmt color 的模块,URL 解析实际上是与浏览器相同的,因此,这与使用 ES 模块时,浏览器将使用的 URL 解析算法完全相同。9、Deno 没有像 Node 那样的 node_modules 或 index.js 概念,所以它不会让您的文件系统寻找匹配的包,这并不完全正确,我们稍后讨论。语言框架语言框架onload,prompt(),confirm(),alert()many more.Deno 也支持标准的 Web Workers API,支持 AbortController,甚至提供了完整的 WebGPU支持,因此
18、您实际上可以直接在 Deno 中运行您的机器学习模型,并在显卡上非常高效的运行。为了确保所有的这些 API 的实际工作方式与它们在浏览器中的工作方式相同,Deno 使用了一种叫做 Web Platform Tests 的东西,对所有浏览器进行大量测试,以确保它们正确的符合标准。因此,Deno 现在被列在 MDN 的兼容性表中,任何时候,您去 MDN 寻找一些 JavaScript API的适用性时,如果 Deno 也支持它,您会在右侧表中看到它的适用信息。Deno 现在被列在 MDN 的兼容性表中13、Deno 不仅仅是一个 runtime,它实际上是一个完整的工具链,在一个二进制文件中提供了
19、整个工具链,当您开始一个新项目时,不需要去寻找测试器或格式化工具,也不需要单独安装它们,创建项目时,可能所需的一切都已经存在在 Deno 里了。SUBCOMMANDS:bundle Bundle module and dependencies into single filecache Cache the dependencies语言框架语言框架let res=await fetch(url);let server=res.headers.get(server)!;console.log(server:,magenta(server);在打印之前,我们会为标题名称着色,首先我们从导入 mage
20、nta 函数开始,同样,这次我们使用 Deno 标准库的 fmt colors 模块,这是一个标准的 ES 模块语句,其工作方式与在浏览器中的工作方式相同;然后我们获取传递给程序的第一个命令行参数,在这里您可以看到我们用到了这个 Deno 命名空间,因此,访问命令行参数不是您可以在浏览器中所做的事情,有没有可以复用的 WebAPI,这就是为什么会需要 Deno 命名空间。在获取 URL 后,我们将需要获取资源,在这里我们使用了 fetch API,同样,fetch 在浏览器中可用,所以 Deno 复用了这个 API,而不是引入一个新的 API;在这里你还可以看到我们使用了 await 关键字(
21、置于 fetch 前),所以 Deno 支持前置的 await;在获取 URL 的资源后,我们需要取得响应的标头,响应的标头,这又是一个 Web 兼容的 API,就像你在浏览器中所做的,在 Deno 中所做的就应该一样;最后我们将服务器标头记录到控制台,但首先,这个 magenta 函数会先执行。下面是一些你在运行这个程序的示例参考:$deno run-allow-net curl.ts https:/Server:nginx$deno run-allow-net curl.ts https:/Server:cloudflare$deno run-allow-net curl.ts https
22、:/Server:GitH可以注意到,-allow-net 这个没有值的标志,告诉 Deno 它可以访问互联网上的任何东西,当然我们可以在每个示例中将其限制,例如-allow-net=,然后 Deno 将只能访问 域的 URL。语言框架语言框架我们使用的是 TLS 实现的 Rustls,类似于 OpenSSL;使用 wpgu,它是 WebGPU API 的后端,你可以在显卡上执行的所有操作实际上都是在此 API之上实现的;对于代码格式化 Deno fmt,我们使用 dprint,dprint 是一个与 Prettier 非常相似的项目,但同样,它不是在 JavaScript 中实现的,它是在
23、Rust 中实现的,所以它会更快。二、Deno 2022 年的生态状况Deno 的发布非常频繁,我们用称为“火车模型”的方式来发布,每周都有发布,如果您错过了合并某些东西的时间,那么不需要担心,因为下周就会有另一个版本发布。我们通常每个月发布 2-4 个补丁版本和一个次要版本,从 2020 年 5 月的 1.0 开始,每个月实施一个次要版本,所以到目前为止有 17 个次要版本。我们发布了大量功能和这些次要版本,以及近 100 个补丁版本,2022 年的计划是继续专注于 Web 兼容性,希望添加更多 Web API 工作,以运行更多功能和已支持的 Web API,例如 Web Crypto;我们
24、也希望与 TypeScript 有更好的集成,虽然 Deno 已经能使用 TypeScript,但我们想进一步改进它,您可以在 IDE 中获得一流的 IntelliSense 和建议。我们还想迭代我们的安全模型,可能会为其提供更多功能。正如我们在一些示例中看到的那样,Deno 有一个叫做标准库的东西,它是我们团队官方支持的一组模块,我们自己会进行审核和审查,并且保证这些 API 可以和 Deno 一起使用。标准库也会源源不断更新和增加新功能,因此希望我们能够在 2022 年稳定 Deno 的发布版本 1.0 以及所有标准库。采用 Deno 的项目每月数据都在增加,例如有一个名为 Flat Da
25、ta 的项目,那是一个 GitHub 项目,它使用 Deno fetch 来载入 URL 资源,基本上,它允许您在 GitHub 中运行 CI 期间执行单个文件(JavaScript)。因此在 GiHub 操作中,您可以拥有操作数据的工作流,这些数据提供给您的 GitHub 操作 API。语言框架语言框架Deno 目前已经可适用于生产环境,但是我们听到一些意见,由于它与 Node.js 和 Node.js 生态系统有很大不同,因此现在很难被采用,我们也认知了这个问题,在整个 2021 年,我们花了很多努力,希望让 Deno 具备一流的 Node.js 兼容性,这意味着你能够将运行工具、程序和
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 前端 技术 趋势 解读
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【Stan****Shan】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【Stan****Shan】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。