介绍
Nuxt 的目标是通过提供出色的开发者体验,使 Web 开发变得直观且高效。
Nuxt 是一个免费且开源的框架,提供了一种直观且可扩展的方式,用于使用 Vue.js 创建类型安全、高性能和生产级的全栈 Web 应用程序和网站。
我们已经做好了一切准备,让您可以从一开始就编写 .vue
文件,同时在开发中享受热模块替换,并在生产中默认使用服务器端渲染来获得高性能的应用程序。
Nuxt 没有供应商锁定,允许您将应用程序部署到任何地方,甚至边缘。
如果您想在浏览器中试用 Nuxt,可以在我们的在线沙盒中试用。
自动化和约定
Nuxt 使用约定和有主见的目录结构来自动化重复性任务,并允许开发者专注于推动功能开发。配置文件仍然可以自定义和覆盖其默认行为。
- 基于文件的路由: 根据
pages/
目录 的结构定义路由。这可以使组织应用程序更容易,并避免手动路由配置的需要。 - 代码拆分: Nuxt 自动将您的代码拆分为更小的块,这有助于减少应用程序的初始加载时间。
- 开箱即用的服务器端渲染: Nuxt 内置了 SSR 功能,因此您无需自己设置单独的服务器。
- 自动导入: 在各自的目录中编写 Vue 可组合项和组件,并在不需要导入的情况下使用它们,同时享受 tree-shaking 和优化的 JS 包的好处。
- 数据获取工具: Nuxt 提供可组合项来处理与 SSR 兼容的数据获取以及不同的策略。
- 零配置 TypeScript 支持: 使用我们自动生成的类型和
tsconfig.json
编写类型安全的代码,而无需学习 TypeScript。 - 配置好的构建工具: 我们默认使用 Vite 来支持开发中的热模块替换(HMR)以及使用最佳实践打包您的生产代码。
Nuxt 处理这些问题,并提供前端和后端功能,以便您可以专注于重要的事情:创建您的 Web 应用程序。
服务器端渲染
Nuxt 默认内置了服务器端渲染(SSR)功能,无需自己配置服务器,这对 Web 应用程序有很多好处:
- 更快的初始页面加载时间: Nuxt 向浏览器发送一个完全渲染的 HTML 页面,可以立即显示。这可以提供更快的感知页面加载时间和更好的用户体验(UX),尤其是在较慢的网络或设备上。
- 改进的 SEO: 搜索引擎可以更好地索引 SSR 页面,因为 HTML 内容立即可用,而不需要 JavaScript 在客户端渲染内容。
- 在低性能设备上的更好性能: 它减少了需要在客户端下载和执行的 JavaScript 数量,这对可能难以处理繁重 JavaScript 应用程序的低性能设备有利。
- 更好的可访问性: 内容在初始页面加载时立即可用,提高了依赖屏幕阅读器或其他辅助技术的用户的可访问性。
- 更容易缓存: 页面可以在服务器端缓存,这可以通过减少生成和发送内容到客户端所需的时间来进一步提高性能。
总体而言,服务器端渲染可以提供更快和更高效的用户体验,同时改善搜索引擎优化和可访问性。
由于 Nuxt 是一个多功能框架,它使您可以通过 nuxt generate
将整个应用程序静态渲染到静态托管,使用 ssr: false
选项全局禁用 SSR,或通过设置 routeRules
选项利用混合渲染。
服务器引擎
Nuxt 服务器引擎 Nitro 解锁了新的全栈功能。
在开发中,它使用 Rollup 和 Node.js 工作线程来处理您的服务器代码和上下文隔离。它还通过读取 server/api/
中的文件生成您的服务器 API,并从 server/middleware/
中生成服务器中间件。
在生产中,Nitro 将您的应用程序和服务器构建到一个通用的 .output
目录中。这个输出是轻量级的:经过最小化处理并移除了任何 Node.js 模块(除了 polyfills)。您可以将此输出部署到任何支持 JavaScript 的系统上,从 Node.js、无服务器、工作线程、边缘渲染或纯静态。
准备好生产
Nuxt 应用程序可以部署在 Node 或 Deno 服务器上,预渲染以托管在静态环境中,或部署到无服务器和边缘提供商。
另请参阅 部署部分模块化
模块系统允许通过自定义功能和与第三方服务的集成来扩展 Nuxt。
另请参阅 Nuxt 模块概念架构
Nuxt 由不同的核心包组成:
- 核心引擎:nuxt
- 打包器: @nuxt/vite-builder、@nuxt/rspack-builder 和 @nuxt/webpack-builder
- 命令行界面: @nuxt/cli
- 服务器引擎:nitro
- 开发工具包: @nuxt/kit
我们建议阅读每个概念,以全面了解 Nuxt 的功能和每个包的范围。