13

インターネットで見ると、特別な「index.js」モジュールファイルと混同しています。私はimport myLib from "./libs"使用 "LIBS" ディレクトリ内に "index.js" モジュールをインポートすることができbabelJS + nodeJS又はBrowserify/WebPACKの使用ES6(EcmaScript 2015)modules:import index.js

(すなわち。/indexまたは/index.js一部を省略)。

ES6(EcmaScript 2015)モジュールの公式規格でサポートされている「index.js」モジュールの解像度(収容フォルダの指定)はありますか?それとも、単に "カスタム" NodeJS/CommonJS transpiling動作ですか?

/indexを省略することはできますか? /index.jsすべてのブラウザでのインポートの一部(すべてのブラウザでモジュールがサポートされる場合)

答えて

17

ES6(EcmaScript 2015)モジュールの公式規格でサポートされている「index.js」モジュールの解像度(収納フォルダの指定)はありますか?

No. ES2015には、モジュールローダーまたはモジュール識別子の解釈方法に関する情報は含まれていません。


それとも行動をtranspilingちょうど "カスタム" NodeJS/CommonJSのですか?

はい。 documentationでモジュール解決アルゴリズムについて読むことができます。関連部分:モジュールがオンにサポートされるとき

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一部を省略することが可能となりますすべてのブラウザ)?

ブラウザの実装は、既存のモジュールローダーとの最大限の互換性を目指していますが、今はわかりません。たぶんそれはブラウザーとは関係ないが、サーバーがどのようにモジュール識別子を解決するかということもあるだろう。私は最近、開発に従っていないと告白するので、その他の洞察は高く評価されます:)

+0

素晴らしい!ありがとう、それを知ってうれしい – Zorgatone

関連する問題