Nuxt3学习笔记(一) Nuxt3 介绍

Isomorphic JavaScript 與 Universal JavaScript

Isomorphic JavaScript

随着 Node.js 的出现,让客户端浏览器之外的服务器也能执行 JavaScript 代码,使得 JavaScript 成为一种同构语言(Isomorphic Language)。Isomorphic JavaScript 即称之为同样的 JavaScript 代码可以在客户端及服务器端运行;也就是说同一份 Code 除了能在前端浏览器也能在后端执行。

然而 Isomorphic JavaScript 与 Universal JavaScript 的名词存在一些争议与差异,如今,Isomorphic JavaScript 多以称相同的代码组件,可以在客户端与服务器端用来组装或渲染出页面的技术。


Universal JavaScript

Michael Jackson的文章提到,"Isomorphic"这个词的含义是“在形式和关系上对应或类似”,意思是两个实体虽然不相同,但具有相似的操作或对应的关系。换句话说,两种看起来不同的用法或语法,但最终的执行结果是相同的,例如,jQuery或Zepto操作DOM的语法虽然不太一样,但最终也都是对应JavaScript的document.querySelector等方法。

因此,为了描述相同的代码但能在不同环境中运行的术语,就有了"Universal JavaScript"一词。这个名字告诉人们JavaScript它不仅可以在服务器和浏览器上运行,还可以在本地设备和嵌入式架构上运行。

那么Isomorphic JavaScript和Universal JavaScript与我们又有什么关系呢?其实有很大的关系,因为Nuxt 3正是一个Isomorphic JavaScript框架,Nuxt 3是目前你使用Vue 3在开发网站时,会需要采用SSR技术或优化SEO问题所可以使用的解决方案。


Nuxt 3

Nuxt 3 官方在 2022/11/16 正式发布稳定版本 Nuxt 3.0 stable

Nuxt 3 官网的标语 The Intuitive Web Framework,Nuxt 3 将让你更直觉的体验混合渲染等新功能,让在使用 Vue 3 开发时变得更加简单!

Nuxt 3 的新特性

从 Nuxt 3 官网的提供信息所列,简单说明一下 Nuxt 3 的新特性,共有下列 12 个:

更轻量: 针对现代浏览器、服务器部署和客户端打包,能够将体积最高减少 75 倍。

更快速: 通过 Nitro 提供的动态服务器端代码拆分来优化冷启动问题。

Hybrid: 动态的静态页面生成和其他高级模式现在都变得可能。

Suspense: 在导航触发前后,在任何组件中都可以获取数据。

Composition API: 使用 Composition API 和 Nuxt 3 的 Composables 实现真正的代码可重用性。

Nuxt CLI: 全新的零依赖体验,帮助你轻松建立项目并整合模块。

Nuxt Dev Tools: 专属开发调试工具,提供更多信息和快速修复,让工作更高效。

Nuxt Kit: 具备基于 TypeScript 和跨版本兼容性的全新模块开发。

webpack 5: 更快的打包时间和更小的体积,且无需任何配置。

Vite: 使用 Vite 作为打包工具,体验闪电般快速的 HMR。

Vue 3: 完全支持 Vue 3。

TypeScript: 使用 TypeScript 和 ESM 构建,无需额外的配置步骤。


Nitro

Nuxt 3 由一個全新的服务器引擎 Nitro 提供支持,它具有以下几个特点:

1、跨平台支持,支持 Node.js 与浏览器等。

2、Serverless 支持。

3、API 路由,使用 unjs/h3。

4、自动代码拆分 (code-splitting) 与异步加载 chunk (async-loaded chunks)。

5、混合渲染模式,供静态 (static) 与无服务器 (serverless) 网站。

6、开发服务器上的 HMR (hot module reloading)。

简单来说,Nitro已经是Nuxt 3包含的全新服务器引擎,无需再进行配置。Nitro除了支持SPA、建立静态网站,甚至能在后端打API时直接调用相关函数,从而降低API Request,整体来说是非常强大的服务器引擎。

Nuxt 3渲染模式

Nuxt 3目前支持两种渲染模式,Client-side Only Rendering与Universal Rendering。之后将会推出更多新的渲染模式,混合渲染(Hybrid Rendering)与边缘渲染(Edge-Side Rendering)。

Client-side Only Rendering

Nuxt 3设置为该模式,就像单纯使用Vue 3建置出的SPA一样,在浏览器下载并加载完Vue程序代码后,渲染HTML的所有动作皆在客户端执行,也就是客户端渲染CSR。

Universal Rendering

Universal Rendering是Nuxt 3的默认渲染模式,它会在服务器环境中执行Vue程序代码并呈现HTML,不论页面是预先生成和缓存还是动态渲染。这类似于SSR,服务器会返回一个完整的HTML页面给浏览器。一旦完整的页面呈现在浏览器中,就会开始加载Vue程序代码以处理后续的动态页面和路由跳转,即转换为SPA并由客户端进行渲染。换句话说,Nuxt 3的Universal Rendering即指SSR + SPA。


混合渲染(Hybrid Rendering)

使用 Vue 开发单页应用时,我们通常会通过路由(Route)进行页面间的跳转,并在每个页面内请求数据,这就是客户端渲染(CSR)。在使用 Nuxt 进行开发时,能够让网站拥有 SSR + SPA 的 Universal Rendering 渲染方式。除此之外,Nuxt 3 还提供了一种更先进的渲染模式——混合渲染(Hybrid Rendering)。它可以为每个路由设置不同的渲染和缓存规则,让部分页面使用 CSR 在客户端进行渲染,另一部分使用 SSR 在服务器端进行渲染。

边缘渲染(Edge-Side Rendering)

Nitro 是 Nuxt 3 包含的全新服务器引擎,为 Node.js、Deno、Worker 等提供跨平台的支持,让 Nuxt 可以在 CDN Edge Workers 进行渲染。因此,它被称为边缘渲染(Edge-Side Rendering),可以有效分担在服务器端渲染时的资源负载,将其提升到另一个层次,从而减少网络延迟和成本。Nitro 不仅支持单页应用和静态网站的渲染,甚至在后端调用 API 时也能直接调用相关函数,从而降低 API 请求,整体来说是非常强大的服务器引擎。


Nuxt 3 的建構工具

Nuxt 3 的构建工具包括:

默认使用 Vite,也可以切换成 Webpack;

Rollup;

PostCSS;

esbuild。


Nuxt 3 已经帮我们配置好一堆设定啦,真的是开箱即用,而且 Nuxt 也支援 TypeScript。如果说真的要调整配置,也可以再 nuxt.config 中进行调整,非常方便贴心。

小结

花了一些篇幅简述 Nuxt 3 新功能特性及渲染模式,让在使用 Nuxt 3 之前能有个概念,了解所使用的框架及特性也能帮助你更快掌握它。

接下来将开始建立第一个 Nuxt 3 专案,在这个系列文章所使用与提及的 Vue 与 Nuxt,皆会以 Vue 3 及 Nuxt 3 作为解释说明与操作示范。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,470评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,393评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,577评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,176评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,189评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,155评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,041评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,903评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,319评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,539评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,703评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,417评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,013评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,664评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,818评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,711评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,601评论 2 353

推荐阅读更多精彩内容