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对象是可扩展的,可以为其添加任何自定义对象,方便在代码运行时,区分不同的环境和工具

相关推荐
三小河2 分钟前
Agent Skill与Rules的区别——以Cursor为例
前端·javascript·后端
Hilaku9 分钟前
不要在简历上写精通 Vue3?来自面试官的真实劝退
前端·javascript·vue.js
三小河15 分钟前
前端视角详解 Agent Skill
前端·javascript·后端
Aniugel28 分钟前
单点登录(SSO)系统
前端
鹏多多31 分钟前
移动端H5项目,还需要react-fastclick解决300ms点击延迟吗?
前端·javascript·react.js
serioyaoyao33 分钟前
上万级文件一起可视化,怎么办?答案是基于 ParaView 的远程可视化
前端
万少39 分钟前
端云一体 一天开发的元服务-奇趣故事匣经验分享
前端·ai编程·harmonyos
WindrunnerMax41 分钟前
从零实现富文本编辑器#11-Immutable状态维护与增量渲染
前端·架构·前端框架
不想秃头的程序员43 分钟前
Vue3 封装 Axios 实战:从基础到生产级,新手也能秒上手
前端·javascript·面试
数研小生1 小时前
亚马逊商品列表API详解
前端·数据库·python·pandas