ES6 模块说明符中的加号 (+) 是什么意思?

问题描述 投票:0回答:1

+
声明中的
import
符号表示什么?

import app from '+/api';

而不是仅仅:

import app from '/api';

导入片段来自使用 es6 的 Node 应用程序,并使用 Babel 进行转译。

./api/index.js 使用

export default app;

导出 Express 实例

我也见过这种语法,使用波浪号:

import app from '~/api';

javascript node.js ecmascript-6
1个回答
6
投票

模块标识符的结构或如何解释它不是 ECMAScript 规范的一部分

模块标识符的含义由

模块加载器定义,即系统中实际获取该值并使用它来查找相应模块的部分。

当然 Node.js 有一个模块加载器。 Node.js

定义模块标识符是共享模块的名称或文件路径

但是,这里的

+

 (或 
~
)在 Node.js 中没有任何意义。我只能假设该项目可能正在使用模块捆绑器或类似的东西来处理模块文件及其依赖项。正是系统的这一部分定义了 
+
 的含义。


我认为这是很多人不理解的一点:虽然 ES6 定义了

声明依赖关系的标准语法,但模块标识符到实际模块的解析不是规范的一部分,并且之间可能存在很大差异运行时/环境。鉴于 Node.js 的受欢迎程度,大多数可能与 CommonJS 模块系统(Node 使用的系统)兼容,但同样,这没有标准。

© www.soinside.com 2019 - 2024. All rights reserved.