2017-03-25 21 views
1

私はAngular2に取り込もうとしています。私はsystemjs.config.jsが何をしているのかについて、いくつかのStack Exchangeの投稿といくつかのインターネット記事を読んでいます。しかし、私はこれらの説明のすべてが "app"という言葉を何度も使用していることがわかります。Angular2/SystemJSでは、systemjs.config.jsと.import()の関係は何ですか?

<script> 
System.import('app').catch(function(err){ console.error(err); }); 
</script> 

.. 'アプリ' 引数が何であるか:index.htmlを言う

?私のサンプル設定ファイルには3つのオブジェクトがあり、そのうち2つは "app"キーを持ち、そのうちの1つは "app"キーの "app"値を持っています。さらに、 "app"フォルダがありますが、これは偶然ではありません。その上に「app」(app.module.tsなど)という単語で始まるファイルがたくさんありますが、それらのすべてがappフォルダに存在するため、重要かどうかはわかりません。

.import( 'app2')に変更しようとしましたが、地図キーをapp2(map:{app2: "app"})に変更するだけです。しかし、私の人生のために、私は他のものを変える方法を理解することができません。私は、フォルダ名、キー、および値を変更しようとしました。したがって、たとえば、次のように(私はAPP2するアプリのフォルダを変更したり、APP3ても)動作しません。

map: { 
    app2: "app3" 
} 
packages: { 
    app3: { ... } 
} 

誰かが、平易な英語では、これらの事の順序を説明してください、彼らはどのように関連するかができますか?

PS:この投稿Can anyone explain systemjs.config.js in angular2?は、「マップ」オブジェクトの残りの部分と「パス」オブジェクトについて説明するのに非常に役立ちましたが、私が求めている部分は説明しません。

答えて

0

完全編集: OK。トンは、より多くの実験と研究の後、私はこれを発見した:

一致させる必要がある3つの事があります。System.importの引数、systemjs.configのマップオブジェクトのキー名、キー名はsystemjsに.configのパッケージオブジェクト。それらがすべて一致する限り、あなたが望むものに名前を付けることができます。

マップのキーの値はフォルダを指していなければならず、パッケージのキーの値の「メイン」キーはそのフォルダ内のファイルを指していなければなりません。

私は、さらに次のよう検討します:

  1. system.configのマップのキーは、相対フォルダを指しますが、(system.config.jsが呼び出された)「index.htmlに」に対する、または相対しなければなりませんsystemjs.config.jsに?

--answer:相対index.htmlをする

systemjs.config.jsにおいて
  • 、そこにいくつかのマップである: "アプリ"、 "rxjs"、および@角型の束。しかし、 "app"と "rxjs"だけが一致するパッケージを持っています。なぜ "@ angular/*"マップに独自のパッケージが必要なのでしょうか?
  • - ?

    1. 実際、packages.app.mainはmap.mainで指定されたフォルダ内のファイルを参照する必要がありますか?そのパスは相対的なものにも見えるようです...

    - 回答:このパスは相対パスでもよく、「上」(「../」)にすることもできます。

  • tsconfig.outDir(通常はmap.appプロパティで非常に便利です)を使用し、outDirの「上」にTSファイルがある場合(たとえば、プロジェクトルート)、outDirは出力を「シフト」します。
  • - 回答:tsファイルが "app"フォルダにあり、outDirを "dist"フォルダに使用し、ルートに "test.ts"ファイルがある場合、 {outDir:dist}を使用します。代わりに{outDir:dist/app}を使用する必要があります。

    関連する問題