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

相关推荐
云飞云共享云桌面20 小时前
传统工作站 vs 云飞云共享云桌面:制造业设计云桌面选型深度对比
运维·服务器·前端·网络·3d·架构·制造
UXbot20 小时前
如何选择适合公司项目的UI设计工具?企业选型指南
前端·低代码·ui·团队开发·原型模式·设计规范·web app
llz_11220 小时前
web-第四次课后作业
前端·spring boot·web
武清伯MVP21 小时前
前端跨域方案大合集
前端·javascript
小刘|1 天前
Spring AI Alibaba 集成和风天气 API 实战
java·服务器·前端
星星在线1 天前
我是怎么把页面图片流量砍掉一半的
前端·javascript
木叶子---1 天前
前端打包出错
前端·人工智能·tensorflow
JAVA面经实录9171 天前
前端系统化学习计划表(含完整知识思维导图)
前端·学习
本末倒置1831 天前
开发了一个所见所得的md编辑器,致敬Typora大佬
前端
kyriewen1 天前
TypeScript 高级类型:我用 infer 写了一个类型安全的 EventBus,终于搞懂了泛型约束
前端·javascript·typescript