import.meta对象是什么?

import.meta是ES6(ESM)模块里的一个对象,它包含了当前模块的一些信息。比如当前模块的url,它的所有属性都是可写,可配置,可枚举的。它可以在浏览器中使用,也可以在node中使用。

在浏览器中使用

在index.html中引入js文件夹下的index.js文件

html 复制代码
<script type="module" src="./js/index.mjs"></script>

index.js文件

js 复制代码
console.log('import.meta:',import.meta)

在node中使用

main.mjs

js 复制代码
console.log('import.meta:',import.meta)
cmd 复制代码
node main.mjs

结果如下

import.meta属性

url属性

在浏览器中运行时,import.meta.url就是代码所在的js文件的url http://127.0.0.1:5500/js/index.mjs

在node中运行的时候,import.meta.url就是代码所在模块的url file:///D:/my/node-test/main.mjs

resolve方法

将一个相对于当前模块的地址,解析成完成的url.

在浏览器./js/index.mjs中,添加如下代码

js 复制代码
console.log('import.meta.resolve ./test.mjs:',import.meta.resolve('./test.mjs')) 

结果

js 复制代码
import.meta.resolve ./test.mjs: http://127.0.0.1:5500/js/test.mjs

在node模块中,添加如下代码

js 复制代码
console.log('import.meta.resolve ./js/index.mjs:',import.meta.resolve('./js/index.mjs'))

结果如下

js 复制代码
import.meta.resolve ./js/index.mjs: file:///D:/my/node-test/js/index.mjs

import.meta对象是可扩展的,可以为其添加任何自定义对象,方便在代码运行时,区分不同的环境和工具

相关推荐
Rika3 分钟前
手写mini-vue之后,我写了一份面试通关手册
前端·vue.js
我想说一句4 分钟前
使用React开发拉布布旅游智能聊天机器人的实践
前端·前端框架
wwy_frontend4 分钟前
积累:04-VUE2
前端
拾光拾趣录4 分钟前
箭头函数 vs 普通函数:从“this 指向混乱”到写出真正健壮的代码
前端·javascript
一只毛驴6 分钟前
浏览器中的事件冒泡,事件捕获,事件委托
前端·面试
lixin10 分钟前
使用 MCP 协议扩展 Cursor 功能:原理解析与实战指南
前端
a cool fish(无名)20 分钟前
rust-模块树中引用项的路径
java·前端·rust
前端进阶者30 分钟前
天地图Marker跳一跳动画
前端
火柴就是我33 分钟前
每日见闻之Three.js 根据官方demo 理解相机位置
前端
JosieBook43 分钟前
【web应用】基于Vue3和Spring Boot的课程管理前后端数据交互过程
前端·spring boot·交互