导入元数据
使用 import.meta 来理解你的代码运行在什么地方。
import.meta
对象
使用 ES 模块,你可以从导入或编译你的 ES 模块的代码中获取一些元数据。
这是通过 import.meta
来实现的,它是一个提供你的代码这些信息的对象。
在整个 Nuxt 文档中,你可能会看到已经使用这个对象来判断代码当前是在客户端还是服务器端运行的代码片段。
运行时(应用)属性
这些值是静态注入的,可以用来对你的运行时代码进行树摇。
属性 | 类型 | 描述 |
---|---|---|
import.meta.client | boolean | 当在客户端侧评估时为真。 |
import.meta.browser | boolean | 当在客户端侧评估时为真。 |
import.meta.server | boolean | 当在服务器侧评估时为真。 |
import.meta.nitro | boolean | 当在服务器侧评估时为真。 |
import.meta.dev | boolean | 当运行 Nuxt 开发服务器时为真。 |
import.meta.test | boolean | 当在测试上下文中运行时为真。 |
import.meta.prerender | boolean | 当在构建的预渲染阶段在服务器上渲染 HTML 时为真。 |
构建器属性
这些值在模块和你的 nuxt.config
中都是可用的。
属性 | 类型 | 描述 |
---|---|---|
import.meta.env | 对象 | 等于 process.env |
import.meta.url | 字符串 | 当前文件的解析路径。 |
例子
使用 import.meta.url
来解决模块内的文件
modules/my-module/index.ts
import { createResolver } from 'nuxt/kit'
// 从当前文件相对路径解决
const resolver = createResolver(import.meta.url)
export default defineNuxtModule({
meta: { name: 'myModule' },
setup() {
addComponent({
name: 'MyModuleComponent',
// 解决到 '/modules/my-module/components/MyModuleComponent.vue'
filePath: resolver.resolve('./components/MyModuleComponent.vue')
})
}
})