ES6(ECMAScript 2015)模块官方标准是否支持“index.js”模块解析(指定包含文件夹)?
不。ES2015 不包含有关模块加载器或如何解释模块标识符的任何内容。
还是只是“自定义”Node.js/CommonJS 转译行为?
是的。您可以在文档中阅读有关模块解析算法的信息。相关部分:
require(X) from module at path Y
1. If X is a core module,
a. return the core module
b. STOP
2. If X begins with './' or '/' or '../'
a. LOAD_AS_FILE(Y + X)
b. LOAD_AS_DIRECTORY(Y + X)
3. LOAD_NODE_MODULES(X, dirname(Y))
4. THROW "not found"
[...]
LOAD_AS_DIRECTORY(X)
1. If X/package.json is a file,
a. Parse X/package.json, and look for "main" field.
b. let M = X + (json main field)
c. LOAD_AS_FILE(M)
2. If X/index.js is a file, load X/index.js as JavaScript text. STOP
3. If X/index.json is a file, parse X/index.json to a JavaScript object. STOP
4. If X/index.node is a file, load X/index.node as binary addon. STOP
是否也可以在所有浏览器中省略导入的 /index|/index.js 部分(当所有浏览器都支持模块时)?
希望浏览器实现的目标是最大限度地兼容现有的模块加载器,但目前我们还不知道。也许它也与浏览器没有任何关系,但与服务器如何解析模块标识符有关。我承认我最近没有关注发展,因此非常感谢任何其他见解:)