2022 前端技术趋势解读.docx

上传人:夺命阿水 文档编号:693000 上传时间:2023-10-16 格式:DOCX 页数:353 大小:6.46MB
返回 下载 相关 举报
2022 前端技术趋势解读.docx_第1页
第1页 / 共353页
2022 前端技术趋势解读.docx_第2页
第2页 / 共353页
2022 前端技术趋势解读.docx_第3页
第3页 / 共353页
2022 前端技术趋势解读.docx_第4页
第4页 / 共353页
2022 前端技术趋势解读.docx_第5页
第5页 / 共353页
点击查看更多>>
资源描述

《2022 前端技术趋势解读.docx》由会员分享,可在线阅读,更多相关《2022 前端技术趋势解读.docx(353页珍藏版)》请在课桌文档上搜索。

1、2022前端技术发展趋势解读12精心6大主题Node/Serverless下面,我分别引用一句话,来描述这六个方向。1、语言框架“形而上者谓之道,形而下者谓之器”一易经系辞语言框架是D2一直保留的专场,有些人可能觉得它有些生涩或实用性不高,而随着技术体系和生态的发展,前端是技术领域里生态最繁华的,究其原因是跟前端语言框架的发展和形态有很大关系。我们希望今天在具体的研发、工程框架、解决方案之外,能够站在更高的视角来看待其背后的演进和发展思路到底是什么,这也是我们一直以来保留语言框架这个专场的原因。2、跨端技术“不可陷之楣与无不陷之矛,不可同世而立”一一韩非子今天在各个端之间,各个厂商之间,都希望

2、建立起一个高墙,就像一个盾一样把自己的商业和生态圈起来;而从研发角度则希望能够敏捷、快速试错、低成本,就像矛一样去打破这个壁垒。其实我们知道,不可能有一个盾把某个商业完全隔离,也不可能有一个方案能够把这些高墙全部击碎,二者之间就是不断在寻找一个动态的平衡的过程,来解决商业壁垒或商业鸿沟与通用性之间的平衡。3、前端体验“不忘初心,方得始终”一一华严经前端体验专场是今年独立设定的,这也是今年D2论坛的SIogan“精心”的缘起之一,重新声明了用户体验再次回归的价值。4、Node/Serverless“行而不辍,未来可期”一一荀子修身Node/Serverless专场在D2也是延续了很长时间,我们对

3、它的发展投入了大量工作。因为Node的历史并不长,存在比如多语言的问题,比如原来仅仅是基于高并发、而今天要回归到弹性扩缩容的问题,以及并不是那么完备的线上运维的问题等等。客观来讲,相比虚拟机和容器的市场份额,SerVerleSS的市场份额并不是很大。但无论是从技术研发角度还是从云原生厂商角度,都非常看好SerVerleSS的前景和市场价值。5、低代码“旧时王谢堂前燕,飞入寻常百姓家”一一乌衣巷这段话的原意是表达的旧贵族的落寞,但我在这里想表达的是:低代码除了我们今天关注的效能和成本之外,它一方面解决了在不懂技术或没有技术资源的情况下,有一个好的idea就可以通过低代码实现,就像我们今天使用电脑

4、的办公软件一样;另一方面,低代码降低了很多门槛,让更多的人有机会进入到社会数字化大升级的战役当中来。换句话说,过去只有少部分人可以做的事情,今天低代码让更多的人可以使用,让他们的产出变得更加有价值,这是一个“普惠”的思想。6、多样化“乱花渐欲迷人眼,浅草才能没马蹄”一一钱塘湖春行今天的多样化非常繁华,其实多样化的场景完全是因为前端在工程效能上已经做到非常的极致,极致到今天很多技术领域为了工程化的落地,就一定会去考虑和前端大的技术生态的连接。另外,这句话描述的是杭州的自然景观,我也希望疫情能够早点散去,未来能够邀请大家来杭州做一些面对面的交流。好的,以上是本次D2大会主题的六大方向以及我本人的一

5、些看法。最后,希望本次D2大会能够给大家带来一些收获,引发大家的思考。谢谢大家!。目录语言框架6ReScript:JavaScript平台上高质量大规模程序构建的秘密武器62022年Deno的生态状况介绍16跨端技术28使用跨端方案Rax编写鸿蒙应用28V8JSAOT化的探索与实践42浅谈webcomponent实践与应用55Serverless67云原生WebAssembly与Serverless67NodejSWCb框架再进化一面向前端与未来标准81用Rust和Node-API开发高性能NodeJs模块94前端体验112基于大数据的前端页面异常结果检测112用户行为链路的识别、挖掘及诊断1

6、23适老化&无障碍的前端体验探索一为更多人提供便利和自由141低代码165腾讯低代码引擎建设思考和实战165ESMBundleless在低代码场景的实践188面向中后台复杂场景的低代码实践思路203多样化219解读千万级关系网络下的数据探寻可视化技术219向量到墨水:从绘画视角解析三维模型的漫画风格渲染技术238开源表单方案Formily的核心设计思路252协同文档工作机制简介266CRDT实时协作技术在稿定编辑器中的应用279虚拟偶像诞生记一数字人行业和技术探究287Web端短视频编辑器的设计与实现一像做PPT一样做视频309语言框架ReScript:JavaScript平台上高质量大规模程

7、序构建的秘密武器摘要:ReSCriPl是第一个完全由中国人主导、并在世界范围内有广泛用户的通用程序语言。它放弃了对JaVaSCriPt语法的完全兼容,保证了单个模块级别兼容。它专注于解决实际问题,优化工具链的性能和用户体验,其编译器和构建系统的性能超出了TypeScript一到两个数量级,其类型信息也用于辅助生成更高效的代码。分享人:张宏波,ReSCriPl编程语言作者,前OCaml程序语言的唯一中国核心开发人员。Meta唯一一位在华特聘的软件工程师。本科毕业于清华大学电子工程系,在MSRA实习期间对函数式程序语言产生了浓厚的兴趣,被沈向洋院士推荐赴宾夕法尼亚大学就读程序语言的博士学位。博士第

8、二年受Bloomberg破格邀请以硕士毕业的身份负责领导该公司函数式语言编译器的开发和维护工作。在该公司工作期间开源的BUCkIeSCriPt编译器是当时该公司最受欢迎的开源软件,多次被公司官方报道。目录:一、ReScript简介和发展史二、ReSCriPt基于数据的编程三、示例:红黑树一、ReSCriPt简介和发展史ReScript是在放弃对JaVaSCriPt的语法完全兼容,同时保证单个模块级别的兼容的情况下一门JavaScript平台上的函数式语言,其类型系统和模块化编程的思想积累了学术界近三十年的研究经验。和传统的学术语言不同的是,ReScript摒弃了一些学院派的思维,专注于解决实际

9、问题,优化工具链的性能和用户体验,其编译器和构建系统的性能超出了TyPeSCriPt一到两个数量级,其类型信息也用于辅助生成更高效的代码。ReSCriPt是第一个完全由中国人主导并在世界范围内用于商业开发的通用程序设计语言。1、ReScript:一种静态类型的函数式语言ReScript用来解决JaVaSCriPl大规模代码可依赖的重构问题。JaVaSCriPl是脚本语言,大规模代码的重构是很有挑战性的问题,而解决重构的经典方案就是引入一个静态的类型系统。下图针对与JaVaSCriPt的互操作性(横轴)和类型性可依赖性(纵轴)把RCSCriPt和其它编程语言进行了对比: Elm或PureScri

10、pt完全放弃了与JaVaSeriPt的互操作,设计一个封闭的语言; TypeScript(TS)是另外一个极端,兼容了所有的JaVaSCriPI,然后慢慢变得更安全; ReSCripI则属于折中的方式,即在不牺牲类型性可依赖性的前提下与JaVaSCriPl的互操作越来越好;因此,TS和RS是从两个角度使JaVaSCriPt代码重构越来越可靠,RS是在不牺牲安全的情况下尽可能和JaVaSCriPl友好的互操作,TS则是在完全互操作的情况下越来越安全。2、ReScript的特点: ReScript是对JaVaSCriPI平台的优化;起源于学术界,最早是一个ML(mctaTanguage),将学术界

11、好的概念搬运到工业界;重点关注工程的实现,让编辑器越来越快,生成的代码越来越高效。3、ReScript的发展历史ReScript是根源于学术界,下图展示了ReSeriPI的学术脉络:1958年为了解决Al提出了最早的函数式语言LISP,70年代出现了metalanguage(ML)元语言,在法国ML分成SIandardML和Caml,Caml发展到CamlSpecialLight,1996年加入了OO代码变成OCaml(ObjectiveCamD,ReSCriPt则是从OCaml派生而来。ReScript的学术脉络4、ReSeriPt的国际影响力ReScript是第一个真正意义上中国人创造的具

12、有海外影响力的通用编程语言,用户遍布世界各地,拥有除英语以外的语言版本包括法语、德语、日语、韩语、西班牙语等。在韩国用的比较多,在巴西甚至还开设了培训班。韩国RcSCriPt网站:hf.psgreen-labs,github.o有人曾在知乎上提问:为什么中国出了那么多厉害的互联网公司,但没有自己设计过编程语言?我认为创造一个编程语言并不难,但让大众信任和使用这个编程语言是一项很困难的任务。ReScript最初的dem。也只用了六个周末,但将它做成一个具有生产价值的编辑器却用了六年时间,而且到现在还有很多需要改进的地方。互联网程序员螭程语算程计算机语育为什么中国出了这么多厉害的互联网公司,但没有

13、自己设计过编程语言?貌似大部分混行的编程语言都是美国人设计的?一:Fy写回答I4充调回答好问813181。3柒评论V分享-864个回答H认排序C5、ReSCriPt的特性下图是一个简单的ReSeriPl示例,左边是ReSCriPt代码,右边是生成的JaVaSCript,通过示例可以看到ReSCripl的特性包括: 支持给函数名加IabeL提高可读性: 自动进行函数类型推断,用户无需标注类型; 编辑器自动优化;FormatCopyShareLinkJavaScriptProblemsSettingsletsum(-a,b)三/GeneratedbyReScript,PLEASEEDITWITHa

14、bCAREusestrict;sm(-a=l,*b=3)-Js.logfunctionsum(a.b)(returna+b0;)SUm(b,a-)-;,IOgconsole.log(4);console.log(3);exports.sumsum;*Notapurenodule/二、ReSemPt基于数据的编程数据编程的核心:1、数据和方法分离:即单独定义数据,然后编写函数来操作数据,最后生成新数据。如下图示例,左边“hell。worldn是数据,JShg是函数,一箭头是pipe,右边是生成代码。下图是一个相对复杂一点的示例,数据是1,2,3,有三个函数map、keep、reduce,OPen

15、相当于JavaScript的import0CopyShareLinkopenBelt.Array1,2,3- map(x=x+1)- keep(=2)- reduce(a,b)=a+b)- Js.log2、模式匹配首先定义一个typeschema,然后通过模式匹配解析数据,最后生成新数据。typeschema相当于一个数据描述语言,其表达能力决定了数据处理能力;PatternmatCh相当于对数据的解析,通过解析将要素重新绑定生成新数据。2bePe.始Igopert-e. o dot下图是一个typeschema示例,白色框中是对应的TypeScript的定义,左侧是R。SCriPto对比Re

16、Script和TyPeSCriPt的写法有点类似,但二者最大的区别在于TS不可将任意类型进行union,这个示例中如果类型有交集就不能用number和undefined这样定义,而ReSCriPt则支持任何类型的union。typemaybelnt=ISome(Int)INoneletf三(x)switch(ISome(x)xINone=typBaybfInt三InuaberIUndHintdvarf(x:aytInt)*i(typeox=undefined)returnx)rtum/GeneratedbyReScripttPLEASEEDITWITHCARE,usestrict,;funct

17、ionf(x)(if(x!三三undefined)returnx;else(return0;exports.ff;Nosideeffect*下图是一个单项列表示例,可以对比下RCSCriPt和TyPCSCriPt的写法,对于一个递归的数据类型的写法,同样这里TyPeSeriPt如果number和Undefined有交集的话也不能这么写。typereclist=ICons(int,list)INilletrecmap=(x,f)=switchxINil=Niltypelist三InumbertlistIundefinedvarap三(x:listff:(n:number)=)u*ber):lis

18、t三if(typeofx三三三*undefined)returnundefined)Var(xGfxs三xreturnf()lmap(xsff)ICons(x,xs)=Cons(f(x),map(xs,f)3、ReScript是模式匹配语言基于数据的编程的核心要素在于模式匹配,它可以: 对任意类型进行组合,支持深度嵌入; 对模式进行详尽检查,如漏网模式检测; 进行类型推断,无需用户标注类型:三、示例:红黑树1、如何定义:type红黑树是一个平衡二叉查找树,分左右两边,其节点有红黑两种颜色,首先要定义颜色R和B,节点中有叶子节点和中间节点两种分别定义:typecolor=IRIBtyperect

19、ree=ILeafINode(val:int,1:tree,r:tree,color:color)下图是对比TyPeSCriPl的定义typecolor=IR,I,B,typeleaf=undefinedtypetree三IleafIval:number,I:treelr:tree,color:color)2、认识红黑树红黑树有红色和黑色节点,根节点是黑色,红黑树的高度是黑高度即从根节点到叶子节点的黑色节点个数。之所以称为平衡二叉树是所有红黑树的黑高度相同。另外,为了保证红黑树的平衡性,相邻的两个节点不能同时为红色。3、红黑树在ReSCriPt中的实现:旋转如果插入的节点为红色,则有两种情况,

20、一种是相邻的节点为黑色,符合红黑树的规则可以停止:另一种是相邻的节点为红色会有四种可能的不规则模式(如下左图,分别为:左左、左右、右左、右右),为了避免红节点相邻需要将其旋转,运用函数式数据的旋转方法,将四种可能性最终旋转成右图的结构,现在根节点为红色,当红色节点到达最上面就会变成黑色完成旋转。1231BIBgB,Bm/RydRMdaRtaRy/RscaRyRydbs/abbcbccd/abcd在ReSeriPt中的具体实现如下图,4个Node是上面左图中红色的四种可能的模式,Va上Z对应/Bz就是模式1,这里精确的描述了模式1的节点,另外3个NodC也同样。这里得到一个巨大的模式匹配,有或模

21、式,有嵌套模式,且可以无限嵌套,这是ReSCriPt与TyPCSCriPt的不同,ReScript是基于数据的编程模式,可以提供模式解构数据并得到新的数据。letrotate三tree三switchtreeINode(val:z.1:Node(color:R.val:y,1:Node(color:R.val:t1:a,r:b),r:c),r:d,INode(val:z.1:Node(color:R,val:x,1:a.r:Node(color:R,val:y.1:b.r:c),r:d.INode(val:x.1:a,r:Node(color:R,val:zt1:Node(color:R,val

22、:y,1:b,r:c).r:d),)INode(val:x,1:a,r:Node(color:R.val:y,1:blr:Node(color:R,val:z1:c,r:d)r-Node(color:R.val:yl1:Node(color:B,val:,1:a,r:b),r:Node(color:B,val:2,1:c,r:d),I.=tree另外,AVL树也可以用ReSCriPt通过模式匹配实现,有兴趣的朋友可以参考知乎文章20行ReSCriPt代码实现AVL树。20行Rescript代码实现AVL树网址:p43ReSeriPl是一个很有深度的语言,本次仅分享了其中一部分,感兴趣的朋友欢迎

23、到官网了解更多内容。ReScriptM:h):-escrpnngorg/2022年DenO的生态状况介绍摘要:本话题Bartek将为你介绍2021年Deno的新特性和路线图,2022年整个Deno的生态状况,以及在现实世界中选择Deno的好处。分享人:BartekIwahczuk,Deno核心开发者,全栈工程师,2019年加入DenO团队,主要负责DCn。CLI的相关工作。一、什么是Den0?Deno是一个崭新的command-lineruntime,可执行JaVaSCriPt和TypeScripl,它类似于NodeJs,但Deno允许执行TyPeSCriPl文档。Dcno的目标是有趣和高效,

24、我们相信一个好的脚本平台对于接受当前状态的工具来说太重要了。2018年Deno在RyanDahINode,js十个让我后悔的事情的知名演讲中首次被介绍,2年之后,Den。VLO诞生,目前是L17版本,开发基础已相当高,我们在持续不断地发布新版本。Deno的亮点:1、Deno是一个单一的可执行文件,而且他始终如此;2、只需要下载一个文件,就可以运行任何Deno程序;3、Deno适用于Linux、Mac和Windows;4、支持开箱即用的TyPeSCrpit;5、TyPeSCriP【编译器实际上是Den。程序的一部分,让Deno可以执行您下载的脚本,我们使用V8Snapshot的特性来快速启动编译

25、器;6TypeScript编译器还使用一个名为SWC的工具,它是一个基于RUSt的JavaScript和TypeSCriPt解析器。实际上它不仅是一个解析器,而且还提供了更多的功能;7、Deno默认有一个称为安全执行的东西,这意味着您的程序不能访问文件系统、网络连接,除非你明确允许,否则它们无法暂停子进程或访问环境变量。例如我们从远程URL运行一个程序:denorunhttps:/deno.land/std/examples/welcome.tsWelcometoDeno这是DenO的功能之一,也很有趣,你无需事先下载资源,这一切都有运行时为你完成。在这里我们正在下载一个名为WeICome的程

26、序,这也是我们标准库的一部分,Deno会下载资源,并从TyPeSeriPt转换成JaVaSeript,然后执行它。如果要允许Deno可以访问文件系统、互联网连接、子进程或环境变量,你需要通过提供所谓的允许标准来让DenO可以这样做:allow-read=tmpallow-11et=-allow-read=tmp,意味着你的程序现在可以读取您的文件系统中的tmp目录:allow-net=,是指Deno能够访问互联网连接,但只能连接到GoO域。8、Deno可以从URL访问资源,无需事先在本地下载它们,在这里你可以看到,我们使用了一个名为magenta的函数(它也来自Dene)标准库):import

27、magentafromlihttps:/deno.land/std/fmt/colors.ts;它来自一个名为fmtCoIor的模块,URL解析实际上是与浏览器相同的,因此,这与使用ES模块时,浏览器将使用的URL解析算法完全相同。9、Deno没有像Node那样的nodemodules或indexes概念,所以它不会让您的文件系统寻找匹配的包,这并不完全正确,我们稍后讨论。10、由于使用了URL,Den。不像NPM那样依赖于一个集中式服务器,你实际上可以从internet上的任何公共服务器下载源代码,所以你可以使用像Skypack.UNPKG.ESM这样的CDN,或者使用任何您自己的服务器,如

28、果您想在那里托管您的资源。11、再强调一次,运行程序所需的一切都有Deno处理,你不需要单独的包管理器,Deno遇到没有访问过的URL时,它会请求获取资源,然后将它们缓存在一个全局缓存目录中,并将资源转换为JaVaSCript。因此,下次您尝试访问已经访问过的URL时,Deno不会发生请求获取资源,而会使用本地缓存。12、Deno大量使用Web标准API,在服务器环境中,使用WebAPI来包装是合理的,Deno更愿意使用Web标准API,而不是一个DenO专有的新API。例如有一个名为fetch的常用API,您可以使用它来下载或发送实际请求到任何URL,因此,与其想出一个新的APl来做到这一点

29、,不如选择复用在大部分浏览器都已经可用的fetchAPI0Deno还支持许多API,如下表,但并非所有,例如新的WebCryptoAPl已在DenO中,但也不是全部都支持,我们正在努力中。 fetch WebCrypto WcbStreams WebWorkers WebStorage WebSockets AbortController WebGPU Blob 1.ocation EventTargetTextEncoderTextDecoder onload, promptO,confirm(),alertO manymore.DCno也支持标准的WObWorkersAPI,支持Abort

30、COntrOller,甚至提供了完整的WCbGPU支持,因此您实际上可以直接在DonO中运行您的机器学习模型,并在显卡上非常高效的运行。为了确保所有的这些APl的实际工作方式与它们在浏览器中的工作方式相同,Deno使用了一种叫做WebPlatformTests的东西,对所有浏览器进行大量测试,以确保它们正确的符合标准。因此,DenO现在被列在MDN的兼容性表中,任何时候,您去MDN寻找一些JaVaSCriPtAPI的适用性时,如果DenO也支持它,您会在右侧表中看到它的适用信息。Q11三SetTimeout30Supports parameters for callback36PW XOJaJ

31、ILUJaJOaX 山E3C-(esao OIJeJeS poJPUqMaqM POJPUV JOj XOJaliLUPOJPU4 eldo OSo- coceS E3C- 6unsEesOUaQ GSfPON Yes Yes ?Deno现在被列在MDN的兼容性表中4.4304Partial13.01.0? Yes 1.0 Yes13、Deno不仅仅是一个runtime,它实际上是一个完整的工具链,在一个二进制文件中提供了整个工具链,当您开始一个新项目时,不需要去寻找测试器或格式化工具,也不需要单独安装它们,创建项目时,可能所需的一切都已经存在在DenO里了。SUBCOMMANDS:bundl

32、eBundlemoduleanddependenciesintosinglefilecacheCachethedependenciescompileUNSTABLE:CompilethescriptintoaselfcontainedexecutablecompletionsGenerateshellcompletionscoveragePrintcoveragereportsdocShowdocumentationforamoduleevalEvalscriptfmtFormatsourcefileshelpPrintsthismessageorthehelpofthegivensubcom

33、mand(s)infoShowinfoaboutcacheorinforelatedtosourcefileinstallInstallscriptasanexecutablelintUNSTABLE:LintsourcefilesIspStartthelanguageserverreplReadEvalPrintLooprunRunaJavaScriptorTypeScriptprogramtestRunteststypesPrintruntimeTypeScriptdeclarationsupgradeUpgradedenoexecutabletogivenversion例如DenO附带了

34、一个bundler,可利用Denobundle子命令来使用;还有一个Denofmt的子命令用来处理代码格式化,使用方式与Prettier非常相似,但它的速度更快;如果你想在系统上安装一些源代码作为可执行文件,您可以安装Deno,或者可以使用DenoLSP与IDE和代码编辑器进行集成。Deno内置了一个非常简单的测试运行器,它能大致符合您的预期需求。编写测试从未如此简单,您可以在与代码相同的文件中编写测试,然后执行它们也不会出现问题。Demo演示:我们编写一个只有五行的简单程序,该程序将在访问我们指定的URL后打印服务器标头。importmagentafrom*httpsdeno.land/st

35、d/fmt/colors.ts*;consturl=Deno.args0:letres=awaitfetch(url);letserver=res.headers,get(*server*)!;console,log(*server/,magenta(server);在打印之前,我们会为标题名称着色,首先我们从导入magenta函数开始,同样,这次我们使用Don。标准库的fmtCoIOrS模块,这是一个标准的ES模块语句,其工作方式与在浏览器中的工作方式相同;然后我们获取传递给程序的第一个命令行参数,在这里您可以看到我们用到了这个Deno命名空间,因此,访问命令行参数不是您可以在浏览器中所做的

36、事情,有没有可以复用的WebAPI,这就是为什么会需要Deno命名空间。在获取URL后,我们将需要获取资源,在这里我们使用了fetchAPI,同样,fetch在浏览器中可用,所以Deno复用了这个APL而不是引入一个新的API;在这里你还可以看到我们使用了await关键字(置于fetch前),所以DCnQ支持前置的await;在获取URL的资源后,我们需要取得响应的标头,响应的标头,这又是一个Web兼容的APb就像你在浏览器中所做的,在Deno中所做的就应该一样;最后我们将服务器标头记录到控制台,但首先,这个magenta函数会先执行。下面是一些你在运行这个程序的示例参考:$denorun-a

37、llow-netcurl.tsServer:nginx$denorun-allow-netcurl.tsServer:cloudflare$denorun-allow-netcurl.tsServer:GitH可以注意到,-all。WFet这个没有值的标志,告诉Den。它可以访问互联网上的任何东西,当然我们可以在每个示例中将其限制,例如-allow-net=POStrnarLCOm,然后Deno将只能访问域的URLo站在巨人的肩膀上Deno是一个全新的项目,并没有重造所有的轮子,而是建立在巨人的肩膀上,复用许多来自RUSt生态系统的当红技术如下,但不仅仅是来自RUSt生态系统。- V8(Chr

38、ome,SJavaScriptVM)- Rust- TypeScript(Microsoft)- Tokio(asyncI/OframeworkforRust)- SWC(JSTSparser)- Rustls(TLSimplementation)- HyperandReqwest(HTTPserverandclientlibraries)- wpgu(WebGPUbackend)- tungstenite(Websockets)- trust-dns(AsyncDNSqueries)- rustyline(readline/REPL)- notify(filesystemnotificati

39、ons)- Ispower(LSPframeworkfortalkingtoIDEs)- dprint(codeformatter)例如JaVaSCriPl执行引擎是V8,和基于NOde或Chrome或Chrome-based的浏览器一样;Deno中所有的编码都是使用Rust构建的,这与主要用C+构建的NOde不同,由于Deno支持TyPeSCript,当然也使用来自MiCroSOft的TyPeSCript;Dcno建立在Tokio等技术上,类似于Node中的Iibuv,但这实际上是一个用于执行异步I/O的Rust框架;之前已经提到SWC,它是Deno的重要组成部分,我们非常依赖其超快的JaV

40、aSCriPt和TypeSCriPl解析器,但正如我之前提到的,他实际上提供了更多的功能,比如bundling,所以Denobundle子命令实际上是在SWC之上实现的。我们使用的是TLS实现的RUStIs,类似于OPCnSSL;使用WPgU,它是WobGPUAPl的后端,你可以在显卡上执行的所有操作实际上都是在此API之上实现的;对于代码格式化DenOfmt,我们使用drint,dprint是一个与Prettier非常相似的项目,但同样,它不是在JavaSCriPl中实现的,它是在RUSl中实现的,所以它会更快。二、Deno2022年的生态状况Deno的发布非常频繁,我们用称为“火车模型”的

41、方式来发布,每周都有发布,如果您错过了合并某些东西的时间,那么不需要担心,因为下周就会有另一个版本发布。我们通常每个月发布2-4个补丁版本和一个次要版本,从2020年5月的LO开始,每个月实施一个次要版本,所以到目前为止有17个次要版本。我们发布了大量功能和这些次要版本,以及近100个补丁版本,2022年的计划是继续专注于Web兼容性,希望添加更多WebAPI工作,以运行更多功能和已支持的WebAPI,例如WebCrypto;我们也希望与TyPeSCriPl有更好的集成,虽然Deno已经能使用TyPeSCriPt,但我们想进一步改进它,您可以在IDE中获得一流的IntelliSense和建议。

42、我们还想迭代我们的安全模型,可能会为其提供更多功能。正如我们在一些示例中看到的那样,Deno有一个叫做标准库的东西,它是我们团队官方支持的一组模块,我们自己会进行审核和审查,并且保证这些API可以和Deno一起使用。标准库也会源源不断更新和增加新功能,因此希望我们能够在2022年稳定Deno的发布版本1.0以及所有标准库。采用Deno的项目每月数据都在增加,例如有一个名为FIatData的项目,那是一个GitHUb项目,它使用DCnofetch来载入URL资源,基本上,它允许您在GitHub中运行CI期间执行单个文件(JavaScript)0因此在GiHUb操作中,您可以拥有操作数据的工作流,

43、这些数据提供给您的GitHUb操作API。FlatDataFlatexploreshowtomakeiteasytoworkwithdataingitandGitHub.ItbuildsontheBitKCraDing”approachDiOneeredbvSimonWilliSOntoofferasimplepatternforbringingworkingdatasetsintoyourrepositoriesandversioningthem,becausedevelopingagainstlocaldatasetsisfasterandeasierthanworkingwithdata

44、overthewire.WHATSITFOR7WHOMAOIITfBringworkingsetsofdatatoyourrepositoriesIdanGazitsnari3AmeliaWattenbergerCEGMattRothenberg。IreneAlvarado就在最近,Slack宣布其新的APl平台将建立在Don。之上,然而它不会建立在DonoCLI之上,而是重用一些内部的Deno模块,建立一个符合Slack含义的平台。我们正在与Slack密切合作,以提供尽可能最好的体验。SlackIntroducesNewPlatformWithHelpFromDenoNovember120214Aaron0,Multon.RyanDlTodaySlackhasannouncedtheirnextgenerationdevelopmentplatform.SlackchoseDenoforitsscurbydefuhprinciples,itswbstandardAPIs,anditsfirst-classTyptSaiptsupport.Readmoreaboutitathttps7/WellbeCoUdboratirvgWrthSlacktoimproveandpolishthisnewplatforminthecomingmonths.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号