Vue3 SSG上车体验

  • 作者简介:大家好,我是文艺理科生Owen,某车企前端开发,负责AIGC+RAG项目
  • 目前在卷的技术方向:工程化系列,主要偏向最佳实践
  • 希望可以在评论区交流互动,感谢支持~~~

如今前端技术的飞速更新,对开发的要求又上升了一个台阶(卷的飞起~),导致铺天盖地的培训班引流,短视频引流都在灵魂发问:源码你读了吗?Rust要上车吗?Langchain的风口要不要跟一波?

我:。。。

而对于绝大多数开发小伙伴来说,日常开发工作服务于业务需求,所以如何快速使用和最佳实践才是更应该关心的。(然后省出时间来卷源码

目前公司的技术栈以Vue3为主,所以官网上的内容是最应该先通读一遍的(读源码的小伙伴,建议先通读一遍官网,再去研究源码收益会更高哦~)

官网上指出Vue3有6种使用方式,其中一种是 SSG。本着先吃透官方文档的原则,今天上车体验一下SSG。

SSG简介

SSG(Static site generation ),中文叫静态站点生成。当一个html页面中只有静态数据时,无需发送请求更新,可以进行预渲染。

我们知道,页面渲染需要消耗浏览器性能。

常见的SPA页面加载流程是: 请求下载html文件 -> 请求下载js文件 -> 页面渲染

SSG页面 加载流程是:请求下载html文件(因为html预渲染已经在构建过程完成了)
小结:SSG技术在打包构建就会生成HTML文件,访问时直接下载就可以展示了。

SSG实践

这里会提供两个demo实现SSG。分别是 VitePress和NuxtJS。

VitePress SSG

  1. 首先安装node18版本(推荐用nvm管理),新建文件夹(vitepress-demo),执行下面命令安装vitepress。
    pnpm add -D vitepress
  2. 运行vitepress,根据命令行向导快速构建项目
    pnpm vitepress init
  1. 启动项目
    pnpm run docs:dev

项目启动成功界面:

  1. 执行项目构建 pnpm docs:build

构建完成后,会发现 .vitepress目录下多了一个dist目录,即为打包后的产物目录。而且我们会发现,根目录下的md文件和dist下的html文件有映射关系(404.html除外)。

md文件名 html文件名
index.md index.html
api-examples.md api-examples.html
markdown-examples.md markdown-examples.html

vitepress使用了基于文件的路由,生成的html页面是从源md文件映射而来的。所以生成html文件可以托管在任何支持静态文件的Web服务器上。

  1. 运行 pnpm docs:preview,可以在本地快速启动一个本地静态web服务(默认端口号为4173),该服务以 .vitepress/dist作为源文件。

预览成功

NuxtJS SSG

  1. 创建一个新项目pnpm dlx nuxi@latest init nuxt-demo
    直接报错:

注意:Nuxt项目需要科学上网,但国内访问raw仍然不稳定。建议直接通过这个链接下载模版,解压后直接使用 模版地址

中间也尝试添加host,只成功1次,不稳定。相关issue

  1. cd nuxt-demo 进入项目目录,pnpm i安装依赖,pnpm dev启动项目,界面如下:
  1. pnpm generate 预渲染静态生成html文件(该命令默认为SSG模式)

从上图中看到,命令执行完成后,在根目录下生成一个dist目录,其中有index.html、200.html(负责渲染动态路由)、400.html(404错误页面)

  1. pnpm preview 预览静态生成页面,预览完成。

总结:SSG指在构建阶段生成html文件,适用于固定的静态展示内容页面。并列举了 VitePress 和 Nuxt 如何快速体验上手SSG渲染模式。

参考文献:

  1. FE Jargon you should know - SSG, SSR, CSR, VDOM
  2. Nuxt中文官网
  3. VitePress官网

日拱一卒,功不唐捐。

相关推荐
前端与小赵3 小时前
关于 AJAX 与 Promise
前端·ajax·okhttp·promise
啊·贤3 小时前
展开运算符 (...):这是 JavaScript 中的一个语法,用于将数组或对象展开到另一个数组或对象中。
前端·javascript·vue.js
硬汉嵌入式3 小时前
《安富莱嵌入式周报》第345期:开源蓝牙游戏手柄,USB3.0 HUB带电压电流测量,LCR电桥前端模拟,开源微型赛车,RF信号扫描仪,开源无线电收发器
前端·游戏·开源
NiNg_1_2344 小时前
前端 Flex 布局语法详解
前端·css·html
吉吉安4 小时前
前端实现选项多选效果(三层结构)
前端·vue.js·html5
卓越软件开发4 小时前
基于SSM+VUE守护萌宠宠物网站JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解
java·vue.js·宠物
青少儿编程课堂6 小时前
2024年3月电子学会Python等级考试试卷(四级)真题,包含答案
前端·javascript·python·电子学会·电子学会2024年3月真题·电子学会真题
始终奔跑在路上6 小时前
软件测试—HTML
前端·功能测试·html·集成测试·软件工程
Moment7 小时前
在 NodeJs 中如何通过子进程与 Golang 进行 IPC 通信 🙄🙄🙄
前端·后端·go
skywalk81637 小时前
三周精通FastAPI:38 针对不同的编程语言来生成客户端
开发语言·前端·python·fastapi