当前位置: 首页 > news >正文

Nuxt.js一个基于 Vue.js 的通用应用框架

Nuxt框架简介

Nuxt,这款受到广泛赞誉的框架,在我们公司的ThisAI前端开发中扮演着不可或缺的角色。其卓越的性能和便捷的开发体验,吸引了无数开发者的目光。接下来,我们将一起深入了解Nuxt的安装流程,并详细剖析其目录结构,助力大家更好地掌握这一强大的开发工具。
image

Nuxt的独特之处在哪里呢?

简单来说,Nuxt的强大之处体现在多个方面。首先,它能够自动导入组件,简化了路由配置的过程,因为Nuxt内置了vue-Router。此外,Nuxt还提供了统一的配置,支持SSR(服务器端渲染),从而优化了SEO。

那么,如此强大的Nuxt是由谁开发的呢?答案是Anthony Fu。有兴趣的话,可以访问他的博客AnthonyFu,深入了解Nuxt的更多细节和背后的故事。
2. 当代开发者的理想选择:Nuxt、Icons与UnoCSS的完美结合

Nuxt,这个由Anthony Fu精心打造的框架,不仅简化了路由配置,还提供了SSR支持,优化了SEO。如今,它更是进一步扩展了功能,支持了图标的便捷引入。而UnoCSS,作为一种高性能、灵活的原子化CSS,与Tailwind CSS相似但更胜一筹,为开发者带来了全新的选择和体验。同时,这样的图标库也为项目增添了丰富的视觉元素。

Nuxt文档手册

https://nuxt.uihtm.com

Nuxt3:Vue3+SEO神器

🌐 Nuxt3是一个基于Vue的服务端渲染框架,特别适合那些对SEO优化有要求的网站。它不仅支持Vue3,还支持TypeScript,让你的开发体验更加流畅。

💼 对于公司内部使用的管理后台,直接使用Vue3就可以满足需求。但对于需要被搜索引擎收录的企业官网等,使用Nuxt3会更有优势。

🔍 传统的Vue开发对于SEO并不友好,而Nuxt3通过服务端渲染,可以大大提升网站的SEO性能,让你的网站更容易被搜索引擎找到。

🚀 如果你正在寻找一个既能享受Vue3的强大功能,又能兼顾SEO优化的解决方案,Nuxt3绝对是一个不错的选择!

Nuxt.js的用途是什么?

Nuxt.js允许你创建许多不同类型的应用程序。下面是用Nuxt.js制作的三个最流行的应用程序。

静态生成的页面

这种类型的网站不需要任何外部内容来源–内容已经嵌入HTML中。这类网站的例子包括作品集、演示和教程网站。

单页应用程序(SPA)

这种前端开发方式从外部API获取动态内容并在客户端显示。大多数JavaScript框架,如React.js、Vue.js、Angular和Ember.js都是单页应用框架。

更重要的是,SPA的路由系统是通过HTML 5历史API或路由的位置哈希实现的,这让开发者有能力在不刷新整个页面的情况下修改网站的URL。

通用应用程序

“通用应用程序” 是一个术语,描述了使用服务器端渲染的方法,在客户端浏览器上完全渲染页面之前,在服务器上获取客户端数据。

服务器端渲染(SSR)是Vue.js中的一个众所周知的问题,因为它涉及到繁琐的配置,要把它做好。

Nuxt.js解决了Vue.js中的SSR问题,这对搜索引擎优化(SEO)很有帮助。Nuxt.js甚至可以扩展Universal应用程序,以适应一个成熟的单片机应用程序,其中前端和后端共享一个代码库。

Nuxt.js是如何工作的?

当用户访问一个网站时,Nuxt.js的工作方式与服务器端框架的工作方式相同。如果启用了服务器端渲染,每次用户请求页面时都会在服务器上进行渲染,因此需要服务器能够在每次请求时提供页面。另外,如果启用了客户端渲染,它使用JavaScript在浏览器中渲染页面的内容。

这些是Nuxt.js中使用的主要动作和方法:

nuxtServerInit(动作):这是第一个生命周期钩子,如果启用了Vuex存储,就会在服务器端调用。它是一个Vuex动作,只在服务器端调用,以预先填充商店,最后,它可以用来调度Vuex商店的其他动作。
validate() (函数):validate方法在渲染页面组件之前被调用。它对于验证页面组件的动态参数很有用。
asyncData()方法用于获取数据并在服务器端渲染数据,而fetch()方法则用于在渲染页面前填充存储。
例如,当Nuxt.js网站收到初始页面访问时,它会呼出 nuxtServerInit 动作来更新Vuex状态(如果在Vuex商店中定义)。否则,如果 nuxtServerInit 没有被定义,它就会转到另一个阶段。

接下来,它按照这个顺序查找中间件。首先,它检查 nuxt.config.js 文件中是否有任何全局中间件。如果它被定义,它将在检查 layout 页面的中间件之前被执行。最后,它将执行单个页面的中间件,包括页面的子件。

在按顺序执行所有的中间件后,它将检查路由是否是动态的,并执行创建和验证的 validate() 方法。

接下来,它调用页面的 asyncData() 方法,在服务器端获取和渲染数据,然后再调用 fetch() 方法,在客户端填充Vuex商店。

到这一步,页面应该有所有的数据和内容来显示一个合适的网页。然后,该页面由Nuxt.js引擎渲染并显示给访问者,完成了整个过程。

这个流程图说明了渲染一个页面的所有步骤:
image

无论你使用哪种工具,当你了解该工具在引擎盖下的工作原理时,你总是会感到更加自信。通过以上对Nuxt.js在引擎盖下的工作原理的解释,你就会很容易理解。让我们探讨一下在你的下一个项目中使用Nuxt.js的好处。

Nuxt.js的优势

接下来,让我们谈谈Nuxt.js框架的好处,以及为什么它最近变得如此受欢迎。

无忧创建通用的应用程序

Nuxt.js使创建服务器端渲染应用程序变得非常容易。如果你曾经试图用Vue.js开发一个服务器端渲染的应用程序,你可能会因为服务器端和客户端的无数配置选项而跳过困难的障碍。

SSR功能已经内置于Nuxt.js中,并且很容易使用。它可以访问组件上的 isServer 和 isClient 属性,以决定你是在客户端还是在服务器端渲染东西。

它还提供了 asyncData 方法,专门用于在你的页面组件的服务器端获取和渲染数据。

静态渲染Vue应用程序的好处

静态生成的网站在网络行业中正在崛起,通过一个 nuxt generate 命令,你可以生成一个静态版本的网站,所有的HTML都有相应的路由。

nuxt generate 命令的工作原理与启用了所有SSR功能的通用应用程序方法完全一样,但对于静态生成的网站来说。

在Nuxt.js中,静态生成的网站就像建立一个强大的通用应用程序,不需要服务器来驱动SSR功能。

获得自动代码拆分

Nuxt.js在性能上非常快的原因之一是代码拆分功能,一个路由被赋予一个单一的JavaScript文件,其中只有运行该路由所需的代码,因此,减少你的应用程序的大小。

这个代码拆分功能使用了Webpack的配置,该配置在生成网站的静态版本时已经内置了。

热重载

热重载是为了解决软件开发中耗时的更改-刷新方法而添加的一项伟大功能。

它被配置为在你改变根目录中的任何文件时自动更新开发服务器。

在开发和处理 .vue 文件时,它使用Webpack配置来检查变化,并为你编译一切。这种方法节省了开发人员的时间,并鼓励加快应用开发。

获得ES6/ES7编译

Nuxt.js预置了Webpack和Babel,用于翻译和编译最新的JavaScript版本,如ES6和ES7,使其可以在旧的浏览器上运行。

Babel被配置为将所有的 .vue 文件和脚本标签内的ES6代码编译成可以在所有浏览器上运行的JavaScript。

这个功能解决了手动创建浏览器兼容的应用程序和从头开始设置配置的战斗。

如何创建Nuxt.js应用程序

本节将探讨如何创建一个Nuxt.js应用程序。在我们深入研究之前,让我们先来探讨一下开发Nuxt.js应用程序的一些关键概念。

创建Nuxt.js应用程序

创建一个新的项目很简单,直奔主题。你可以用官方文档中列出的不同方法来创建一个项目,但最喜欢和推荐的方法是使用CLI。

要使用CLI创建一个新的应用程序,请确保你已经安装了npx(npx在你安装yarn或npm 5.2.0以上版本时是默认安装的)。

接下来,在你想放置项目的文件夹中键入以下命令:

npx create-nuxt-app 
cd 
npm run dev

确保将project-name>替换为你的实际项目名称。

了解Nuxt.js的文件夹结构
当你使用官方文档中的任何一种不同的安装方法来搭建一个新的应用程序时,你会看到CLI生成的各种文件和文件夹。这些文件和文件夹是至关重要的,要求一些文件夹保持不变,不需要额外的配置。

我们将查看文件夹结构,讨论每个文件和文件夹,并了解其重要性。

Nuxt.js文件夹结构

新创建的Nuxt.js文件夹结构。
image

  1. .nuxt

.nuxt目录是隐藏的,在你启动你的开发服务器时生成,它被称为 build directory。该目录包含运行 npm run build 命令时生成的文件或工件。

你可以修改这个目录中的文件,但只能用于调试目的,因为一旦你运行 dev 或 build 命令,这些文件将再次自动生成。

  1. assets

assets文件夹包含所有未编译的资产,如图片、字体、SASS文件和Stylus。在渲染过程中,Webpack会编译任何包含在这个目录中的文件。

  1. Components

Components目录类似于Vue.js中的组件目录,你所有的Vue组件都存放在这里。组件是构成你的页面的不同部分的文件,也可以重复使用并导入到你的页面、布局和其他组件。

  1. Layouts

布局文件夹存储了你的应用程序的布局,在为认证用户或访客用户分离你的应用程序的不同结构时非常有用。

你可以创建许多布局来对应你的应用程序的结构。有时,你可能希望你的网站上的一些页面有不同的边栏、页眉、页脚等。这些以及更多的东西都是使用存储在layouts文件夹中的布局文件来结构化的。

  1. Middleware

中间件是在渲染一个页面或一组页面(布局)之前可以执行的自定义函数,它们可以被定义并存储在Nuxt.js的中间件文件夹中。

中间件在创建会员制网站时非常方便,如果你想限制某些页面的访问,你可以设置中间件来检查用户是否已经登录。

在Nuxt.js中,中间件的工作原理类似于任何后台编程框架的中间件,如ExpressJS、Laravel等。它有三种不同类型的中间件,即:命名的、匿名的和路由器的中间件。

  1. Pages

pages 目录是Nuxt.js路由系统的基石,因为它读取该目录下的所有 .vue 文件并自动创建路由器配置。

pages 目录包含了你的应用视图和路由,每一个页面组件也是一个标准的Vue组件。

不过,Nuxt.js还是把它当作一个路由,通过添加特殊的属性和功能,使你的通用应用程序的开发尽可能的简单。

  1. Plugins

plugins 目录包含你想在实例化根Vue.js应用程序之前执行的JavaScript代码。这里是添加Vue插件和注入函数或常量的地方。

在Nuxt.js中,你不必使用 Vue.use() 函数,只需在plugins文件夹中创建一个新文件,并使用nuxt.config.js文件将你的Vue插件注入Vue实例中。

  1. Static

static文件夹包含了你的项目中所有的静态文件,这些文件很可能不会改变,或者不需要对其进行任何编译就应该被渲染。

所有包含在静态目录中的文件将自动由Nuxt.js提供服务,并通过你的项目根URL访问。

这个目录对于诸如favicon、robots.txt等文件来说是非常好的。

  1. Store

Store目录包含了你所有的Vuex商店文件,默认情况下,它被分割成模块。

Vuex商店开箱即用,但默认是禁用的。你需要通过在商店目录下创建一个 index.js 文件来激活商店。

在创建和管理一个企业项目时,Vuex商店是必要的。这就是为什么Nuxt.js预置了Vuex商店,并为适应企业级应用开发进行了配置。

Nuxt.js页面和路由系统

Nuxt.js使路由系统像在 pages 目录中创建目录和文件一样简单。它根据该目录的文件和文件夹结构,自动生成一个路由文件。

例如,如果你在pages目录下有一个 about.vue 文件,它将自动转换路由,然后你可以在浏览器上访问该路由,看到 “About” 页面的内容。

这个路由系统还允许你只通过创建文件和文件夹来定义三种不同的路由。让我们更详细地探讨一下这些路由类型。

小结

Nuxt.js是一个非常流行的SSR和静态生成前端的Vue框架。它不仅解决了在Vue应用中配置和设置SSR的问题–它还通过遵守结构化和架构化大规模Vue应用的最佳实践,促进了企业应用的发展。

本指南探讨了你需要知道的关于Nuxt.js的一切,包括你可以用它构建什么。我们讨论了静态生成的页面、单页应用程序(SPA)和通用应用程序,以及如何使用Nuxt.js开发它们。

现在你已经看到了在你的下一个大型企业项目中选择Nuxt.js是多么容易和有益。请在评论区告诉我们,你将用这些新的超能力构建什么?

相关文章:

  • SSL证书:谷歌算法排名的安全基石与信任杠杆
  • (十三)深入了解AVFoundation-采集:视频帧采集与实时滤镜处理
  • Windows系统:处理文件夹拖动时的冲突与选择
  • [软件工程]第二章题目汇总
  • 基于线性回归的数据预测
  • Oracle RAC ADG备库版本降级方案(19.20 → 19.7)
  • Java 大视界——Java大数据在智慧交通智能停车诱导系统中的数据融合与实时更新
  • C语言指针深入详解(五):回调函数、qsort函数
  • Windows平台多功能工具箱Moo0的技术实现分析
  • 牛客周赛 Round 93题解(个人向A-E)
  • 通过强化学习让大模型自适应开启思考模式
  • 十四、面向对象底层逻辑-BeanFactoryPostProcessor接口设计
  • 塔能智能照明方案——贵州某地区市政照明改造实践
  • UE(虚幻)学习(六)插件打包在UE5.3.2下Value cannot be null的错误
  • 科技赋能,开启现代健康养生新潮流
  • matlab+opencv车道线识别
  • 火语言RPA--EmpireV7相册发布
  • 中级网络工程师知识点9
  • Go 语言简介
  • arrow-0.1.0.jar 使用教程 - Java jar包运行方法 命令行启动步骤 常见问题解决
  • 美发布“金穹”导弹防御系统发展规划
  • 海南医科大披露校内竞聘上岗结果:32名干部离开领导岗位,8人系落选
  • 山西晋城一网红徒步野游线路据传发生驴友坠崖,当地已宣布封路
  • 首届巴塞尔艺术奖公布:大卫·哈蒙斯、曹斐等36人获奖
  • AI赋能科学红毯,机器人与科学家在虚实之间叩问“科学精神”
  • 新任重庆市垫江县委副书记刘振已任县政府党组书记