Nuxt3读取markdown文件

news/2024/11/15 15:18:55/文章来源:https://www.cnblogs.com/oldsaltfish/p/18379882

背景

想在Nuxt3中读取markdown以渲染文章。

分析

静态文件一般是放在public中的,但是官方文档中写明:
image

而且,在SSR阶段(服务器渲染),nuxt无法通过fetch来访问public里的内容(虽然不推荐,但是客户端的js是可以通过fetch直接请求到文件的)。

过程

nuxt提供了一个content模块,这是一个文件系统的CMS,虽然似乎没有读取文件的功能,但是可以直接渲染出markdown,再配合上css样式,我觉得其实也没太多问题。
xx中文网上,显示未适配nuxt3,但是实际上是这个网站太落后了,看到官网上就没有这个提示,甚至feature上面还特别写明了nuxt3支持。

不得不说,很多官网后面加个cn的网站都很不负责,很多英文不翻译,很多情况下还不如直接看官网,省的看着看着是英文浪费额外的时间。(所以说学英语确实重要)
https://nuxt.com.cn/modules/content
image

@nuxt/content使用示例

推荐查看官网
https://content.nuxt.com/get-started/installation

npx nuxi module add content

在项目根目录下创建目录content,这个目录代表content模块中填写路径时的根目录
image

以下为引用示例,ContentDoc会直接渲染出markdown(使用md文件)

<ContentDoc path="/markdown/about/about" />

到这里已经成功了,接下来就是样式了,这个自己解决把

左侧为真实文件路径,右侧是我们写代码时使用的引用路径,细节去看文档即可。
image

传统fs模块

import fs from 'fs/promises';
// 注意此处的判断,nuxt默认采用通用渲染,这意味着setup部分的代码,会被服务器以及客户端分别执行一次,而客户端上没有我们要读取的文件(而且也没有node的api),因此不加判断就会报错。  
if(!import.meta.client){const markdownPath = 'content/1.markdown/1.about/about.md';fs.readFile(markdownPath, 'utf8').then((data:any)  => {console.log('文件内容:', data);});
}

需要特别注意的是,使用fs模块,nuxt是无感知的(路径之类的他又不知道),这就导致build时不会把文件打包,需要手动复制一份过去。

比如我上面写的路径为content,我需要把content复制一份放到.output目录中(也就是服务器根目录,ecosystem.config.cjs、server、public所在的路径)

结语

我个人还是倾向于使用nuxt content,虽然不是真正的读取文件,但是与nuxt结合得更加紧密,不需要手动移文件。所以说,需求比较小的直接用content就行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/787349.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Easysearch 性能测试方法概要

INFINI Easysearch INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 衍生自基于开源协议 Apache 2.0 的 Elasticsearch 7.10 版本,完善和支持更多的企业级功能,优化搜索业务场景,以保证更佳的数据探索与分析体验。 Ea…

简单的内存取证

记录一次内存取证;练习还是学到了很多东西!继续加油!工具: volatility2.6 + gimp 使用插件 mimikatz 看看账户和密码 python2 vol.py --plugins=/plugins/ -f baby_misc.raw --profile=Win7SP1x64 mimikatz​​ 然后再使用 filescan 插件扫描一下可疑的文件 python2 vol.py…

【复习失败-bp出问题了】【漏洞复现】DouPHP(CVE-2024-7917、代码分析xss)漏洞复现

https://mp.weixin.qq.com/s/YccEe85xFiZIZGOPQLABkA DouPHP(CVE-2024-7917、代码分析xss)漏洞复现 原创 LULU 红队蓝军 2024年08月23日 18:01 四川 漏洞介绍 漏洞:CVE-2024-7917 介绍:DouPHP 1.7_Release_20220822版本中存在一个远程代码执行(RCE)漏洞。拥有管理员权限的…

【简易学生管理系统】java版(内附完整源码)

源代码附在文章末尾注意:代码中定义了Student和User两个类,最初的登录操作对应User,之后才是对Student信息的增删改查。代码中对大部分用户键入都进行了校验,校验规则如下 用户名: 长度在3~15位 只能是数字和字母的组合不能都是数字 用户名已存在,无法注册手机号: 长度1…

[Datawhale AI 夏令营] Task1: 跑通YOLO方案baseline

环境配置厚德云 RTX 4090 image-gpu-pytorch_20240807运行 apt install git-lfs git lfs install git clone https://www.modelscope.cn/datasets/Datawhale/AI_Camp5_baseline_CV.git提交结果

如何快速对影像进行分幅?

GIS数据转换器的"分割转换"功能,可以根据用户设定的像素大小将一幅大影像分割成若干小尺寸的影像。下面是详细的使用步骤:方法/步骤1. 数据准备支持tif、img、bmp文件格式。 2. 软件下载与安装从GeoSaaS.COM官网下载并安装 GIS数据转换器,安装完成后桌面上出现”G…

dpdk解析报文协议-基于l2fwd

dpdk解析报文协议-基于l2fwd 0 前置条件 1、这里需要两台虚拟机,配置了相同的虚拟网络,可以通过tcpreplay在一台虚拟机回放报文,在另一台虚拟机通过tcpdump -i 网卡名 捕获到。具体配置可参考https://www.jb51.net/server/2946942fw.htm2、需要dpdk环境配置完成 3、大致了解…

引用类型和值类型(一)

引用类型和值类型(一) 关于引用类型和值类型的区别经常听到这样一个说法:“值类型分配在栈上,引用类型分配在堆上”。这个回答并不完全正确,或者说这不是值类型和应用类型真正的差别。官方文档给出的定义:引用类型的变量存储对其数据(对象)的引用,而值类型的变量直接包…

修改SpringBoot的配置文件application.yaml后启动失败

经常碰到修改application.yaml文件之后,SpringBoot项目启动失败的,报错信息如下 Connected to the target VM, address: 127.0.0.1:7105, transport: socket 21:12:59.122 [main] DEBUG org.springframework.boot.context.logging.ClasspathLoggingApplicationListener - App…

mac 隐藏文件显示 快捷键

用户》macmac 是电脑自己的名字

【信息收集】 SSH指纹

原创 儒道易行一、 SSH指纹 首次通过SSH连接一台服务器时,SSH服务返回其指纹信息,如果确认指纹信息无误,该指纹将保存到~/.ssh/know_hosts中, 服务器IP与指纹一一对应;第二次访问SSH服务时,SSH客户端将对比返回的指纹与~/.ssh/know_hosts是否一致,一致就顺利连接,否则警…

yml文件中使用profile配置切换多环境

pom.xml<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.…