Release·  

介绍 Nuxt DevTools

通过 Nuxt 解放开发者体验,比以往更好地了解您的应用程序。

我们在 Vue Amsterdam 2023 上宣布了 Nuxt DevTools 的预览版,这是一个全新的工具,可以帮助您了解您的 Nuxt 应用程序,并进一步提高开发者体验。今天我们发布了一个新的小版本v0.3.0,其中包含了许多更新和改进。

devtools-tab-overview

在本文中,我们将探讨创建 Nuxt DevTools 的原因、它如何增强您的开发体验以及未来的预期。

开发者体验

近年来,开发者体验(DX)越来越受到关注。工具和框架一直在努力改进开发者体验。在此过程中,Nuxt 引入了许多创新功能和约定,以使日常开发更加轻松高效。

在 Nuxt 3 中,我们使用 Vite 作为默认的打包工具,在开发过程中实现了即时的热模块替换(HMR),为您的工作流程带来更快的反馈循环。此外,我们还引入了 Nitro,这是一个全新的服务器引擎,允许您将 Nuxt 应用程序部署到任何托管服务上,例如 VercelNetlifyCloudflare其他更多服务,而且无需进行任何配置

Nuxt 提供了许多内置的常见实践:

  • 在代码库中始终使用 TypeScript 和 ESM。
  • 使用相同的代码库构建单页面应用程序(SPA)、服务器端渲染(SSR)、静态站点生成(SSG),或者使用相同的代码库以无需显式设置的方式进行按路由混合 的方式
  • 使用多个可组合功能,如 useStateuseAsyncData,以在服务器端和客户端之间共享可访问的状态。
  • 利用 SEO 工具,如 useHeaduseSeoMeta,使元标签管理变得轻松。

此外,像布局系统插件中间件和其他工具等功能使应用程序的创建更加简单,代码库更加有组织。

基于文件的路由基于文件的服务器 API这样的约定使路由直观而简单。

组件自动导入使创建共享组件变得容易,并且可以直接在任何 Vue 文件中使用。与全局组件不同,它们是按需加载的。我们还引入了自动导入的可组合功能,其中所有 Vue API 都直接可用。Nuxt 模块还可以提供其自定义的可组合功能进行自动导入,以及您的本地可组合功能

最近,我们引入了仅客户端和仅服务器端的组件,可以通过在文件名中添加 .client.server 来使用。所有这些约定都具有完全的类型,并且开发人员甚至可以在进行路由导航或从 API 获取数据时进行类型自动完成。这些约定极大地减少了样板代码,避免了重复,并提高了生产力。

在生态系统方面,Nuxt 有着众多开发者构建的模块的庞大社区,上百个高质量模块可供使用。模块使开发人员能够获得他们想要的功能集成,而无需担心配置或最佳实践。

问题

Nuxt 能够轻松创建大规模的应用程序,但是存在一个问题:缺乏透明度

对于我们引入的每个新功能和约定,我们都在框架中添加了一点抽象性。

抽象是将实现复杂性转移的好方法,使事物在建设过程中更易于专注。另一方面,它们也可能给用户增加额外的学习成本,并理解底层发生的情况。还可能导致隐式性,例如自动导入的组件来自何处,或者某个组件使用了多少个模块等。它还可能使调试变得困难。

这可以被视为任何工具的一个权衡,您必须了解和学习该工具以提高效率使用。尽管改进了文档并提供了更多的示例,但我们认为可以改善缺乏透明度的机会

介绍 Nuxt DevTools

Nuxt DevTools 是一个可视化工具,可以帮助您了解您的 Nuxt 应用程序,并进一步提高开发者体验。它的目的是提供更好的 Nuxt 和您的应用程序的透明度,找出性能瓶颈,并帮助您管理应用程序和配置。

它作为一个实验性模块提供,并在您的应用程序内提供视图。安装后,它将在您的应用程序底部添加一个小图标。单击它将打开 DevTools 面板。

要尝试,请参阅安装指南

概述

显示应用程序的快速概述,包括 Nuxt 版本、页面、组件、模块和插件等您正在使用的内容。它还检查您的 Nuxt 版本,并允许您通过单击进行升级。

页面

页面选项卡显示当前路由,并提供一种快速导航到页面的方法。对于动态路由,它还提供一个交互式表单来填写每个参数。您还可以使用文本框来播放和测试每个路由的匹配方式。

组件

组件选项卡显示了您在应用程序中使用的所有组件及其来源。您还可以搜索它们并转到源代码。

nuxt-devtools-tab-components

它还提供了图形视图,显示组件之间的关系。您可以筛选组件以查看特定组件的依赖项。这有助于识别意外的依赖关系,并改进页面的性能和捆绑包大小。

nuxt-devtools-components-graph

nuxt-devtools-components-graph-filtered

您还可以使用 "记录器" 功能来检查 DOM 树,并查看渲染它的组件。单击可转到特定行的编辑器。这使得在不必完全了解项目结构的情况下进行更改变得更加容易。

nuxt-devtools-tab-components-inspector

导入

导入选项卡显示了注册到 Nuxt 的所有自动导入。您可以查看哪些文件正在导入它们以及它们的来源。某些条目还可以提供简短的描述和文档链接。

nuxt-devtools-tab-imports

模块

模块选项卡显示了您安装的所有模块,并提供其文档和源代码的链接。您可以在Nuxt 模块中找到更多可用的模块。

nuxt-devtools-tab-modules

最近,我们引入了实验性的升级功能,可以轻松升级您的 Nuxt 或模块。通过 终端选项卡,它会透明地显示升级过程的输出。

nuxt-devtools-tab-modules-upgrade

资源

资源选项卡显示了所有静态资源及其信息。您可以复制资源的路径,或使用它们的代码片段。在将来,通过与 Nuxt Image 集成,您甚至可以通过单击一次来优化图像。

nuxt-devtools-tab-assets

插件

插件选项卡显示您在应用程序中使用的所有插件。由于插件在应用程序挂载之前运行,每个插件所花费的时间应该要很少,以避免阻塞应用程序的渲染。每个插件提供的时间成本对于找到性能瓶颈很有帮助。

nuxt-devtools-tab-plugins

钩子

钩子选项卡可帮助您监视客户端和服务器端每个钩子所花费的时间。您还可以看到每个钩子注册的监听器数量以及它们被调用的次数。这对于找到性能瓶颈很有帮助。

nuxt-devtools-tab-hooks

应用程序配置

您可以在 DevTools 中检查和修改应用程序配置,尝试不同的配置并立即看到效果。

nuxt-devtools-app-config

Payload 和数据

此选项卡显示通过 useStateuseAsyncDatauseFetch 创建的状态。这有助于了解数据的获取方式和状态的管理方式,或者以反应性方式更改它们以查看它们对应用程序的影响。对于 useAsyncDatauseFetch,您还可以手动触发重新获取。

nuxt-devtools-tab-payload

终端

在某些集成中,可能需要运行子进程来执行某些任务。在 DevTools 之前,要么完全隐藏子进程的输出并吞下潜在的警告/错误,要么将其输出到标准输出并污染终端显示多个输出结果。现在,您可以在 DevTools 中为每个进程显示输出,并明确隔离它们。

nuxt-devtools-tab-terminals

虚拟文件

虚拟文件选项卡显示了由 Nuxt 和 Nitro 生成的虚拟文件,以支持约定。这对于高级调试很有帮助。

nuxt-devtools-tab-virtual-files

检查

检查暴露了 vite-plugin-inspect 的集成,允许您检查 Vite 的转换步骤。这对于了解每个插件如何转换您的代码并发现潜在问题很有帮助。

nuxt-devtools-vite-plugin-inspect

VS Code

由于 VS Code Server 的支持,我们能够将一个功能齐全的 VS Code 实例集成到 DevTools 中。您可以安装扩展程序并同步您的设置。这样,您就可以更接近地进行反馈循环,在更改代码并立即查看结果而无需离开浏览器时进行操作。

nuxt-devtools-tab-vscode

模块贡献视图

考虑到生态系统,Nuxt DevTools 设计成具有灵活性和可扩展性。模块可以为 DevTools 贡献自己的视图,为其集成提供交互式数据和试验场所。以下是一些示例:

VueUse 模块 提供了搜索页面,以查找可用的可组合功能并查看其文档。

nuxt-devtools-tab-vueuse

UnoCSS 模块 提供了一个交互式检查器,以查看每个模块对最终 CSS 的贡献。

nuxt-devtools-tab-unocss

Nuxt Icon 模块 提供了一个搜索引擎,用于查找所有可用的图标。

nuxt-devtools-tab-nuxt-icon

Nuxt Vitest 模块 为使用与您的 Nuxt 应用程序相同流程的测试提供了 Vitest UI。

nuxt-devtools-tab-vitest

对于模块作者

随着v0.3.0的发布,我们改进了模块作者在 DevTools 中进行贡献的能力。

它包括:

  • 模块贡献的视图
  • 访问客户端应用程序的上下文和 devtools 的工具
  • 自定义 RPC 函数,用于服务器和客户端之间的通信
  • 子进程的生成和输出流
  • @nuxt/devtools-kit - 一套工具帮助您将模块与 DevTools 集成
  • @nuxt/devtools-ui-kit - DevTools 中使用的 UI 组件,使您的模块视图与 DevTools 的其他部分一致
  • 带有 DevTools 集成的模块的起始模板

请查看Devtools 模块作者指南以了解更多信息。

未来的预期是什么?

这只是旅程的开始。我们计划为 DevTools 添加更多功能,同时探索以更直观和有趣的方式呈现数据的方法。

Nuxt DevTools 的目标是:

提高约定的透明度检查性能和分析交互式和有趣个性化文档轻松管理和构建应用程序提供见解和改进使开发体验更加愉快

您可以查看我们的项目路线图并分享您的想法和建议,帮助我们使 DevTools 更好。

您可以通过对 GitHub 存储库 进行标记并关注 Nuxt 的官方 Twitter 来关注最新的更新。

感谢您的阅读,我们期待您的反馈和贡献!