2021年10月28日,Vueshenzhen邀请Vue和Vite核心成员AnthonyFu进行专访。内容涉及Vue、Vite、Nuxt等开源内容。本次访谈分为两部分,希望大家收藏后慢慢看~关于Vue3的宿主:Vue3.2之后会更新吗?会有哪些新特点?Anthony:现在我们整个团队都在专注于重新做那个文档,重新调整整个文档结构,可以理解为类似于React最近在做的事情。我们重新整理了整个文档的顺序。以前我们可能先教怎么用CDN启动,用VueX,现在大家可能默认用的是构建工具,那么说一个是optionsAPI,compositionAPI组合API,这两个不同的东西,你有时让我不知道该选择哪一个。那么在后面的新文档中,我们会对这两个API一视同仁,就是你可以选择你喜欢的API,你所有的文档都会根据你的选择而改变,也就是说,如果你看同一个页面,你您可以选择查看选项API。除了这部分文档,3.3会主要关注SSR,也就是服务端渲染,然后悬念就会被稳定下来。我们可能会探索一些部分水化,这是部分水化,你的网页内容是静态的。我直接给你HTML,一个js文档我就不重复了,然后只给你动态的部分,大家多多期待吧。主持人:嗯,还是很期待Vue3的这个新特性。除了vue3,还有vue2,因为之前也提到过2.7之后我们可能不会再出新版本了。现在这个有什么变化吗?Anthony:现在的计划是2.7肯定是最后一个major版本,也就是最后一个功能更新。然后2.7之后就不再更新维护了,但是还是会出补丁。如果有任何安全问题或错误,我们仍然会修复它们。自从我们发布3.0以来,我们有了一个新的整个代码库,我们肯定会更加关注3.0。可能3.2之后引入的新API不一定会搬回vue2,但是我们还是有社区的。其实你的compositionAPI一开始也是Vue2上的一个社区插件。如果你真的需要Vue2,你仍然可以使用它。毕竟vue2已经出现这么多年了,大家也用了这么久。其实总体上不会有太大的问题。主持人:刚才提到了组合API。CompositionAPI有新的更新计划吗?Anthony:目前还没有,因为我们在3.2中已经对组合API做了很多性能优化,引入了几个新的API,让整体条件更加灵活。它可能是参考糖。其实大家猜测很多的ref糖还在RFC里面。我们仍在关注社区的反馈。现在有一个新的提议。如果你有兴趣,你可以去看看。一度。主持人:有一个关于compositionAPI的问题,就是之前提到了compositionAPI会集成到vue2中。Anthony:我只能说我们可能要再等一段时间,因为我们可能还是要先完成文档再考虑2.7的更新。如果要做整个2.7,还是有一定的工程量的,需要用ts重写整个代码库。我们已经有一个公关了。总的来说,我们还需要做大量的测试。事实上,组合APIVue2插件已经很流行了。是的,它基本上是一个稳定的版本。其实你使用的大部分插件应该都能满足你的要求。关于Vite的宿主:能分享一下Vite的最新进展吗?Anthony:对于vite,我们现在大概每周发布一个版本,每周一或者周二会发布一个新版本,然后可能每两到三周,我们会发布一个小版本,也就是功能版本。在上一个功能版本中,我们对这个请求进行了整体优化。我们以前都是请求服务器的所有请求,所以我要等服务器请求,我给你trans模块。我们只制作这个模块并将其发送到服务器。之后,等待服务器再次发送请求,然后我们再制作一个模块。但实际上我们可以说我们已经知道了模块个数之间的关系,那么我们就可以直接对整个个数进行转换,除了动态节点,我们可以直接先对整棵树进行变换,我们先直接对CPU进行变换-intensivethings计算一切,当浏览器来了,我们就准备好了,直接上去,所以这是对初始启动比较快的优化,然后我们用esbuild来做CSS的minify也快了40%左右比原来的。我们现在正在准备Vue2.7。Vue2.7主要是安全功能更新。我们很早就做了一个flag,因为vite会把你本地的文件暴露给那个网页,暴露给这个网页端口。以前你打开服务器后,只要它能连接上你的服务器,它其实能看到你整个电脑里的所有文件,只要它知道路径,那我们后面加了一个flag,你可以关掉这个东西,这个东西其实挺复杂的,怎么知道哪些东西可以访问,哪些东西不能访问?那么,其实我们已经做出了很多更加智能化和人性化的东西。希望大家开箱即用,同时也不会面临这种风险。这个开关之前作为实验功能已经默认关闭了。在2.7里面我们会开启它,也就是说从2.7开始默认是安全的,后面可能会遇到一些问题,到时候继续处理。主持人:那我们也非常期待vite的持续更新,为什么vite这么快。未来vite还有其他计划吗?Anthony:其实在打包的时候,我们很大程度上还是依赖于rollup的能力。如果靠rollup,还是没那么快。然后还要等esbuild的很多功能,比如codesplitting,目前还没有做。特别完美。esbuild赶上之后,我们会考虑引入更多的esbuild进行优化,让整体体验更快。其他版主:还有几个问题。第一个是关于Nuxt的,因为你刚才说你加入了Nuxtlab。Nuxt3有什么新特性吗?Anthony:Nuxt3的比较多,我简单说一下,Nuxt3现在同时支持vite和webpack引擎,大家可以自己选择,我们现在要把整个Nuxt3模块社区支持两种不同的引擎,一种是我们引入了一种名为bundle的新引擎,名为Nitro。Nitro是您的服务器打包的产品。它兼容edgerendering,也就是端部渲染。我不知道在中国怎么翻译。它不依赖于节点,你可以将它部署在离你的用户最近的CDN节点上,以节省整个服务器的性能损失,然后让你的应用程序更快等等。然后,我们针对开发者体验引入了很多优化。比如之前的asyncdata,现在支持compositionAPI,你可以在任何地方调用。你不需要patch下的optionAPI它只能在根组件上使用。您现在可以在任何地方调用它。另一个是API和组件的自动引入。你把组件放在components目录下,它会自动帮你导入到Vue中。在composables下放几个js文件,然后你去esport一些你可能自己做的Vue3hooks,这些东西就会自动导入。主持人:Nuxt3现在正式发布了吗?Anthony:Nuxt3两周前发布了测试版并开源了。正式版还得等一段时间。同时我们还发布了一个Nuxtbridge,意思是在Nuxt2和Nuxt3之间架起一座桥梁,也就是说,Nuxtbridge是nuxt2的一个模块。它基本上将Nuxt3的许多功能移回Nuxt2,这意味着您可以使用组合API。其实我们的底层就是这个CompositionAPI插件提供的。这个能力,那你就有我刚才说的Nuxt3的各种功能,你还有Nitro这个新引擎,你还可以用脚本设置,以前用Vue2是做不到的,现在你可以用的是各种功能.如果你用的是Nuxt2APP,那你可以考虑我们先拉到桥上,还是用原来的webpack4,或者Vue2,但是可以有新的功能,可以尝试接近Vue3的新特性,准备好后,可以直接切换到Nuxt3,也就是中间多了一个过渡过程,可以让你做更好的迁移。主持人:那我想在这里问一个问题,因为你以后会在Nuxtlab工作,你去那里工作之后有什么新的打算吗?Anthony:其实我现在已经在那里工作了两个月了,但是这个工作是偏远的,偏远的。和以前做开源类似,我现在做的Nuxt相关的东西也是开源的,就是说是你想做的,再一个就是公司给你分配一些任务,这几乎是区别。主持人:那会不会影响你参与开源社区?其实你还是Vue社区比较活跃的一员,你也在参与Vite社区。Anthony:整体来说,公司还是很开放的。我在Vue生态里做的事情其实对Nuxt是有帮助的,所以它其实可以让我花一些时间自己做,去探索一些我自己开源的东西,比如其实很多东西也是我写的插件一开始vite,后来觉得他们不错,所以我把他们搬到了Nuxt3。主持人:最后一个问题是关于slidev的。这是用markdown写的PPT吧?有人问他的道理是什么?安东尼:原理是什么?这太笼统了。简单的说,它的底层就是一个封装好的beatserver。在顶层,我做了一些插件包。比如我把所有的幻灯片,也就是每次我把所有的幻灯片都写在同一个Markdown里,然后用三个横条隔开。这时候就需要写一个Vite插件,把这个文件拆解成几个小文件。用Markdown渲染成Vue组件,然后扔到前端,差不多就是这么一个过程。然后,我们加了一些对开发者比较友好的东西,比如代码高亮,那我们就可以直接用我们现有的前端,所有这些现有的代码高亮技术,行高亮,就是你有10行代码,我可以选择说我先点亮第一行,第一行怎么样,然后调整一个空格,可以到三到五行点亮,可以引导你的读者看看你现在在做什么section我们在谈论代码?我们还集成了MonacoEditor,你可以直接在里面写代码,可以直接做livecoding,而且有typescript支持,相当于一整套web技术。类似于PPT的东西,但是更侧重于已经有一定的web基础和程序工作原理的人。其实它是为程序员而生,为程序员而生。我其实不想谈论低代码。有点吧,因为在准备talk的时候,遇到了一些PPT和keynotes,觉得有点难用,后来自己写了一个。主持人:提前收集的问题我都问完了,Anthony也给我们做了详细的解答。感谢Anthony陪伴我们进行了这场漫长的在线对话。Anthony:谢谢邀请我来分享,希望对大家有所帮助。可以和视频一起欣赏~VUESHENZHENMeetup--AnthonyFu线上专访:LINK
