2016-08-17 6 views
1

私はファイル*.tsを持っていて、tscを使って*.jsにコンパイルする方法を理解するのは簡単です。しかし、質問は私が*.tsファイルで使用するHTMLテンプレートをコンパイルする方法ですか?例えば角2とタイプスクリプト。 HTMLテンプレートをコンパイルするには?

それはHTMLファイルにコンパイルされ、起動された後、このコードが表示されます:

<script id="__bs_script__">//<![CDATA[ 
    document.write("<script async src='/browser-sync/browser-sync-client.2.14.0.js'><\/script>".replace("HOST", location.hostname)); 
//]]></script> 
+0

template: require('./template.html!text'); 

あなたはここにテキストプラグインについて少し詳細を読むことができます:

System.config({ map: { text: 'path/to/text.js' } }); 

が次にインポートして使用して、コンポーネントのテンプレートにあなたのHTMLをインライン化あなたはウェブパックを使用していますか?またはsystemjs?または別のバンドラー? – Delosdos

+0

それでは、https://angular.io/docs/ts/latest/quickstart.htmlの例全体を理解しようとしています。 – Dmitry

+0

これは明らかです.HTMLをコンポーネントのテンプレートにインポートしようとしていますか?またはメインのindex.htmlをビルドプロセスの一部として展開しようとしていますか? – Delosdos

答えて

1

あなたのTSをコンパイルする前にHTMLをインポートするには、ビルドシステムのいくつかの並べ替えが必要になります。 1つの方法は、これを達成するためにwebpackやsystemjsのようなツールを使うことです。

あなたはWebPACKの

使用している場合は、文字列としてHTMLファイルをインポートして、コンポーネントのテンプレートにそれらをインライン化するraw-loaderを使用することができます。あなたが使用できるテンプレートで次に

module: { 
    loaders: [ 
     { 
     test: /\.html$/, 
     loader: 'raw-loader', 
     include: /src/, 
     exclude: [helpers.root('src/index.html')] 
     } 
    ] 
} 

、::ここで

は、例えばWebPACKのコンフィグ(だ

template: require('./template.name.html') 

あなたがここに生ローダーについての詳細を読むことができます:https://github.com/webpack/raw-loader

をした後ローダーが実行されてhtmlがインポートされ、テンプレートがトランスポートされたときにインラインでTS内に挿入されます。たとえば、template: '<div>your imported html</div>

あなたはSystemJs

使用している場合は、テキストのプラグインを使用することができます。使用して設定に追加します: https://github.com/systemjs/plugin-text

+0

または角度2のタイスクリプトファイルを処理し、あなたのために必要なのを行う '' angular2-template-loader'を使用してください... –

+0

うん、 angular2-template-loader'は 'template'タグの' templateUrl'タグを入れ替えてからrequire?最終結果は上記の私の例と同じです。私は自分のプロジェクトでそれを削除しました。なぜなら、templateUrl文字列を探しているテンプレートをたくさん解析するのは非常に非効率で、ビルド時間についてはOCDだからです – Delosdos

関連する問題