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目录下指定文件夹的所有文件名,实现更灵活的资源管理和动态加载。