零JS趋势
JavaScript的世界一直在不断发展,范式不时发生。我们已经看到了MPA,SPA,SSR和SSG Architectures的兴起和流行。单页应用程序(SPA)变得非常流行,几乎每个在特定时间范围内创建的Web应用程序都是为水疗中心设计的。现在,我们通过将物品移回服务器来重新发明轮子。我认为,每种方法都有其位置,没有一种方法是最好的。有些网站可能完全是静态的,而另一些网站则需要服务器端渲染,而有些网站最适合作为水疗中心。每个渲染模式都有自己的用例,我不喜欢“ spas是一个错误” 。。
最近,诸如Astro之类的框架的普及,引入了 “岛屿建筑”。结果,许多技术“影响者”现在是通过他们的灯塔得分和尖叫,“您不需要JS!看我的完美100%得分!”
这导致了我们现在对使用JavaScript感到内gui的地步。 但是,我们不应该 。
不要害怕JS
人们喜欢通过提出诸如“您不需要JS的简单博客!”之类的主张来讲授他人!”虽然这可能是真的,但如果某人需要它怎么办?如果某人需要国家管理来处理页面主题怎么办?如果有人喜欢客户端导航的感觉怎么办? JS是为了解决特定问题而发明的,这没什么错。我的博客是一个带有客户端导航(NUXT-ROUTER)的静态生成的NUXT项目,以及州管理(Pinia),我不会更改它。为什么?因为我喜欢客户端导航的感觉。我喜欢新的视图过渡API。你猜怎么着?与Astro这样的框架制作的类似页面,我可以取得相同(甚至更好)的性能结果,该框架最初将JS归零。
。有了正确的心态和一些面向性能的优化,即使是一个简单的博客,您也不必害怕运送JavaScript。
性能提示
在这里,我想提供一些有关改善NUXT项目表现的最重要技巧。当然,超级交互式,SSR项目更难优化,但我仍然认为这些规则适用于任何规模的项目。
1.静态生成
在此博客上,我正在使用NUXT内容的NUXT,这对于从Markdown文件生成页面来说是惊人的。因为我没有使用来自API的任何动态数据,所以我可以在构建步骤中静态生成所有页面。因此,我们不必等待服务器处理数据(SSR)或客户端站点水合(SPA)。 NUXT还提供了一些很酷的内置性能优化,例如当某些资源在屏幕上可见时,预摘要。这样,页面之间的导航是超快速的,感觉与经典MPA无与伦比。
2.图像优化
灯塔都喜欢精选的图像,因此这是迄今为止最重要的事情。您必须确保使用 webp 或 avif 的现代格式,并提供适当尺寸的图像。同样,保留图像的空间以防止布局变化很重要。对于我的项目,我使用了Nuxt Image,虽然仍处于beta中,但它很容易控制图像的格式和尺寸。
3.字体优化
字体是性能优化背景下最大的痛点之一。我决定不使用像Google字体这样的CDN,但是我自己为它们服务。另外,我使用了一个名为Fontaine的酷套件,该软件包通过使用精确的字体指标使用本地字体后背来减少CL。
4.范围和最佳风格
vue 的最大好处之一是开箱即用的范围。重要的是,在SFC Scoped样式块中编写相关样式,以免在特定路线上不需要时下载不必要的样式。写作最佳和清洁的CSS显然将对我们的整体分数有益。使用一些新的CSS属性(例如content-visibility)不会产生巨大的差异,但我们的目标是完美吧?
5.最佳JavaScript
这听起来可能有点笼统,但我们不能忘记良好的代码。如果我们使用了很多外部依赖关系,我们可以检查是否没有太多较轻的替代方案。例子?有些人仍在使用moment.js进行日期格式。为什么不使用a lightweight 2kb alternative instead?编写干净,有条理和可维护的代码不会给我们带来巨大的分数提升,但我们正在尝试保存所有数据字节,对吗? ð
6. Cloudflare页面
我正在使用Cloudflare Pages托管我的博客,而体验很棒。通过这样做,我可以利用CloudFlare提供的超快速全球网络,该网络有助于提供静态资产和缓存。
概括
即使您有一个简单的博客,但想利用客户网站导航,交互式组件和州管理,您不必放弃它,因为零JS网站现在正在流行。只是做你的事。相信我,您可以通过一些努力来优化您的项目以近乎完美的分数。最后,我想再次赞美Vue和Nuxt生态系统。开发人员体验的惊人是令人难以置信的。这些框架本身,CLIS,工具,扩展和DevTools。一切都是一流的。我设法在两天之内将此博客从盖茨比改写为nuxt。谢谢 vue/nuxt 团队! ð