【问题标题】:ES6 import declaration + symbolES6 导入声明 + 符号
【发布时间】:2017-11-28 19:38:30
【问题描述】:

这个导入声明中的 + 符号表示什么?

import app from '+/api';

而不仅仅是:

import app from '/api';

导入 sn-p 来自使用 es6 的 Node 应用程序,该应用程序使用 Babel 进行了转译。

./api/index.js 使用 export default app; 导出 Express 实例

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

import app from '~/api';

【问题讨论】:

  • 如果应用程序使用 webpack 或 browserify 或任何其他模块捆绑器,那么您必须查看其配置文件或文档。这些符号在 ECMAScript 或 Node 中没有任何意义。

标签: javascript node.js ecmascript-6


【解决方案1】:

模块标识符的结构或应该如何解释它是not part of the ECMAScript specification

模块标识符的含义由模块加载器定义,即系统中实际取值并用它来查找对应模块的部分。

当然,Node.js 有一个模块加载器。 defines that module identifiers are either names of shared modules or paths to files 是 Node.js。

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


我认为这是很多人不理解的一点:虽然 ES6 定义了声明依赖的标准语法,但模块标识符的解析到实际模块不是规范的一部分,并且在运行时/环境之间可能会有很大差异。鉴于 Node.js 的受欢迎程度,很可能与 CommonJS module system(这是 Node 使用的)兼容,但同样没有标准。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 2012-02-10
    • 1970-01-01
    相关资源
    最近更新 更多