2017-11-07 9 views
1

は、私はこれらの輸入品を持っていると言います何らかの形で反射されたファイルを参照する方法はありますか?何とかそれらを参照するためにそれらをグループ化することができないように思えるので。動的に参照する静的ESNext輸入

require()の代わりにrequire()を使用できますが、インポートステートメントでいくつかの動的な処理を行う方法があるかどうかは疑問です。たとえば、インポートを追加または削除すると、他のコードを変更する必要はありません。

+0

[this](https://stackoverflow.com/a/34072770/1048572)や[that](https://stackoverflow.com/a/29722646/1048572)のような 'index.js'ファイルを作成することを検討してください。そして、 'import * as import from from .. .. 'modules';'を使ってください。 – Bergi

答えて

1

私はここで別の質問、尋ねることによって発見されたこの質問への偉大な答えがあります:

exporting imports as a namespace with TypeScript

は、ファイル名を作成する01たとえば、モジュールだけをリストし、それぞれをエクスポートする場合は、を使用します。

export {default as clearLineReporter} from '../modules/clear-line-reporter'; 
export {default as karmaReporter} from '../modules/karma-reporter'; 
export {default as metaTestReporter} from '../modules/meta-test-reporter'; 
... 
export {default as stdReporter} from '../modules/std-reporter'; 
export {default as tapJSONReporter} from '../modules/tap-json-reporter'; 

は、その後、あなたのモジュールであなただけ行うことができます。

import * as mods from './grouped-modules' 

export {mods} 

それはsと呼ばれる名前空間に型と値の両方をエクスポートします。

import {mods} from 'your-module' 

const anObject: mods.clearLineReporter = ...; 

これにより、モジュールを1つの変数に動的にグループ化することができます。

1

インポートされたファイルをリフレクションの形式で参照できる方法はありますか? import文がブラウザでESネイティブモジュール実装することができ、またはbabel -edはnode.jsでステートメントを必要とする、またはwebpackで解決バインディング-時間をコンパイルするため

回答は、questing意味するもので、環境に依存しています。

だから、いずれの場合も、何か反映するための解決策があります。 babel -edコードimportのnode.jsには、ちょうどrequireラッパーなので、そこにはどんな情報もあります。

ネイティブESモジュールを搭載したブラウザでは、すべてのリクエストはServiceWorker経由で提供されるため、取得されたESモジュールに関する必要な情報を提供できます。また、ブラウザでESモジュールは、動的にそのようにインポートすることができます:https://matthewphillips.info/posts/loading-app-with-script-moduleほとんどの興味深い部分は、webpack

:コンパイル時の解決と半反射がロードモジュールのAPIで機能的なスタイル(https://webpack.js.org/configuration/externals/#function)、およびランタイムでexternalsリゾルバによって達成することができます(https://webpack.js.org/api/module-variables/#webpack_modules-webpack-specific-

+0

ありがとう私は今質問に答えている –

関連する問題