2017-12-21 16 views
0

私はJavaScriptの世界で初心者です。私はモジュールとその使い方を学んでいます。
状況:
main.jsファイルと2つのモジュール#jsファイルmodule1.jsmodule2.jsがあります。モジュールはインポートされていない他のモジュールに格納された変数にアクセスできますが、両方のモジュールはメインファイルにエクスポートされますか?

project/ 
    main.js 
    modules/ 
     module1.js 
     module2.js 

これらのファイルは両方とも、個別main.jsにインポートされているが、module2.jsは、配列items = [item1, item2, item3]内のすべての項目を表示するように意図された機能displayAll()が含まれています。

function displayAll() { 
    for (let i = 0; i < items.length; i++) { 
    console.log(`Item ${i} is ${items[i]}`) 
    } 
} 

これは正確には見えないが、それはポイントの横にある。私の質問はです。上記の機能はmodule2.jsに含まれていますので、module1.jsに含まれているitemsの配列にアクセスさせるにはどうしたらいいですか?別のファイルが必要な場合はどうすればいいですか?どのように私は輸入の厄介なWebを作成せずに複数のファイルにエクスポートできますか?
私はまだどのフレームワークにも慣れていないので、可能な限りコアJavaScriptを使用してください。
ありがとうございます!

+0

どのようなプロジェクトを行っていますか、どのモジュールフォーマットを使用していますか? Commonjsモジュール( 'module.exports'と' require')またはES6( 'export'と' import'を使用)?または、すべてがグローバルなWebページでプレーンなJSファイルを使用していますか? – Bergi

+0

'items'を' displayAll'のパラメータにして、もう一方のモジュールの値を引数として1つのモジュールから関数を呼び出します。別々のモジュールであり、お互いをインポートしない場合は、直接対話してはいけません。お互いを知る必要がある場合は、インポートを使用します。 – Bergi

+0

私はES6の 'import'と' export'を使用しています。 – Spaceface16518

答えて

0

まず、必要なものをロードする関数を作成する必要があります。 module2.jsで

、あなたは、実際にmodule1.jsを取得した後に実行したいコードを実行するコールバック関数を作成する必要が

function loadJS(callback) {     
    var firstScriptElem = document.getElementsByTagName('script')[0], script = document.createElement('script'); 

    script.type = 'text/javascript'; 
    script.src = module1.js; 
    script.async = false; 

    // Binds the event to the callback function. We use more than one event for cross browser compatibility. 
    script.onreadystatechange = callback; 
    script.onload = callback; 

    firstScriptElem.appendChild(script);  

}; 

それにmodule1.jsを付加し、この関数を作成します

モジュール2では、loadJS(callBack)と呼んでいます。

私はあなたが新しく、まだフレームワークに乗りたくないことを知っています。しかし、私はあなたに言及する必要があります.JSはこれをすべて非常に簡単に行います。上記の種類のコードをしばらく使用していましたが、requireJSを使用し始めると、最初から使用していたはずです。なぜなら、より整理された方法で、それを自分自身で繰り返す必要がないからです。モジュール管理が簡単になりました(私も、最近はJavaScriptのモジュールパターンの学習を始めました)。

+0

**ありがとうございます!**私はすぐにこれを試してみます。私はAngularJSやReactJSを学ぶことを考えています。 ReactJSとAngluarJSのライブラリとフレームワークに属する、これを簡単にするためにRequireJSで言及したコードに類似したものはありますか? – Spaceface16518

+0

AngularJS(Angular 1)の場合、RequireJSは非常にうまく機能します。 Angular(Angular 2+)はRequireと一緒にはうまくいきませんが、Webpackよりも設定が簡単なSystemJSでうまく動作しますが、それは私だけかもしれません。私はReactで遊ぶ機会をまだ持っていないので、実際にはそれについてコメントすることはできません。 –

関連する問題