Angular 2では、 `文字を使用して引用することにより、複数行のテンプレートを記述できます。複数行のテンプレートを.html
ファイルに配置し、templateUrl
で参照することもできます。
テンプレートをコンポーネントに直接配置するのは快適なように思えますが、それはすべて1か所にあるためですが、そうすることには欠点がありますか?
第一のアプローチ:
import {Component} from 'angular2/core';
@Component({
selector: 'my-app',
template: `
<h1>My First Angular 2 multiline template</h1>
<p>Second line</p>
`
})
export class AppComponent { }
対2番目のアプローチ:
import {Component} from 'angular2/core';
@Component({
selector: 'my-app',
templateUrl: 'multi-line.html'
})
export class AppComponent { }
multi-line.html
とともに:
<h1>My First Angular 2 multiline template</h1>
<p>Second line</p>
最終的なアプリケーションがどのように機能するかという点では、埋め込みテンプレートと外部テンプレートの間に実質的な違いはありません。
ただし、開発者にとっては、考慮しなければならない多くの違いがあります。
.html
ファイルにある場合、ほとんどの場合、エディター/ IDEでコード補完とインラインサポートが向上します。 (少なくとも、IntelliJ IDEAはインラインテンプレートと文字列のHTMLをサポートしています)これら2つのことは多くの人々にとって同じ価値があるので、あなたが好きなものを選んで、これだけがあれば人生を進めます。
しかし、私の意見では、テンプレートをコンポーネントに保持する必要がある理由に私たちを導きます:
/where/is/my/template
型参照をすべて管理する必要があるため、コンポーネントの移植性が大幅に低下します。そのため、テンプレートをコンポーネント内に簡単に見つけられる場所に保管することをお勧めします。また、インラインテンプレートが大きくなり、扱いにくいことがわかった場合は、おそらく、コンポーネントをいくつかの小さなコンポーネントに分割する必要があることを示しています。
欠点は、IDEツールは上記のように強力ではなく、コンポーネントに大きなHTMLチャンクを配置すると読みにくくなることです。
また、angular2スタイルガイドに従っている場合は、doにテンプレートを抽出することをお勧めします3行を超える場合はファイルを分離します。
Angular2スタイルガイドから:
Doは、3行を超える場合、テンプレートとスタイルを個別のファイルに抽出します。
理由?(.jsおよび.ts)コードファイルのインラインテンプレートの構文ヒントは、一部のエディターではサポートされていません。
理由?コンポーネントファイルのロジックは、インラインテンプレートおよびスタイルと混在しない場合、読みやすくなります。
コンポーネントHTMLで構成される文字列リテラルをtemplate
に渡すことができます。これにより、TypeScriptコードと同じファイルにHTMLソースが含まれます。
templateUrl
を使用すると、テンプレートHTMLを含む外部ファイルを参照します。これにより、HTMLとTypeScriptを別々のファイルに保存できます。
外部ファイルでは、通常、オートコンプリートと構文チェックのサポートが優れていますが、すべてのコンポーネントが1つではなく複数のファイルで構成されているため、扱いにくい場合があります(スタイルもあります)。外部ファイルはビルドステップでインライン化する必要があります。そうしないと、すべてのテンプレートファイルをロードするためのサーバーリクエストが大量に発生します。
Angular2スタイルガイドでは、3行を超えるインラインテンプレートを使用しないことを推奨しています。
ほとんどの答えはエディターのサポートに関連しているように見えますが、その議論は正しいものの、htmlとcssを.htmlと.cssファイルに入れることの長所としては主張しません。
Htmlファイルとcssファイルを分離する主な理由は、 [〜#〜] srp [〜#〜] に従うためです。 AngularはTypeScriptのレイアウトのバージョンと構文を変更するため、コードの移植性と再利用が容易になります。HTMLとCSSはほとんど同じままです。
今働いているようです。
@Component({
selector: 'my-dashboard',
templateUrl: './dashboard.component.html',
styleUrls: ['./dashboard.component.css']
})
「herosのツアー」から取得 https://angular.io/docs/ts/latest/tutorial/toh-pt5.html .