Vite和Vue 3项目中读取public目录下的文件
在Vue 3项目中,经常需要访问public
目录下的静态资源。如果这些资源分布在多个文件夹中,如何高效地获取指定文件夹下的所有文件名呢?本文介绍一种基于import.meta.glob
的方法,在Vite环境下实现这一目标。
假设项目结构如下:
├── favicon.ico
├── public
│ ├── folder1
│ │ └── file1.txt
│ └── folder2
│ └── file2.txt
└── ...
我们需要在Vue组件中获取public/folder1
或public/folder2
下所有文件的文件名。 import.meta.glob
允许使用通配符导入文件,并返回一个包含文件路径和导入模块映射的对象。
以下代码片段演示如何获取public
目录下所有文件信息:
const files = import.meta.glob('/public/**/*'); console.log(files, Object.keys(files));
import.meta.glob('/public/**/*')
匹配public
目录下所有文件,返回一个对象。Object.keys(files)
返回该对象的所有键,即所有文件的路径(相对于项目根目录)。
为了只获取指定文件夹下的文件,修改通配符即可。例如,获取public/folder1
下的所有文件:
const folder1Files = import.meta.glob('/public/folder1/*'); console.log(folder1Files, Object.keys(folder1Files));
Object.keys(folder1Files)
返回public/folder1
下所有文件的路径。通过简单的字符串处理,可以提取出纯文件名。
这种方法方便地在Vue 3项目中动态获取public
目录下指定文件夹的所有文件名,实现更灵活的资源管理和动态加载。