2016-05-21 4 views
1
import {Component, ViewEncapsulation} from '@angular/core'; 
import {Router, RouteConfig, ROUTER_DIRECTIVES} from '@angular/router-deprecated'; 

import {Home} from './components/home/home'; 
import {About} from './components/about/about'; 
import {RepoBrowser} from './components/repo-browser/repo-browser'; 

@Component({ 
    selector: 'seed-app', 
    providers: [], 
    pipes: [], 
    directives: [ROUTER_DIRECTIVES], 
    styles: [require('bootstrap.scss')], 
    encapsulation: ViewEncapsulation.None, 
    templateUrl: 'app/seed-app.html', 
}) 
@RouteConfig([ 
    { path: '/home',  component: Home,  name: 'Home', useAsDefault: true }, 
    { path: '/about',  component: About,  name: 'About' }, 
    { path: '/github/...', component: RepoBrowser, name: 'RepoBrowser' }, 
]) 
export class SeedApp { 

    constructor() {} 

} 

Der wichtigste Teil istIst es in Ordnung, eine sehr große CSS-Datei innerhalb von "Styles" in angular2 einzuschließen?

Stile: [require ('bootstrap.scss')],

So Bootstrap (die CSS-Bibliothek) ist ziemlich groß, aber ich will, es benutzen in meiner angular2 app so habe ich die Hauptkomponente Encapsulation von keiner gemacht, so wird es die Stile mit der Seite teilen und dann habe ich bootstrap.scss wie vorgeschlagen enthalten.

Meine Frage ist: ist es in Ordnung, eine so große Zeichenfolge (Tausende von Zeilen) innerhalb der Stile Leistung weise zu haben? ist es besser, Bootstrap in den Kopf der Seite wie eine normale CSS-Datei zu setzen?

Antwort

1

Angular2 wird einen Build-Schritt (noch in Bearbeitung AFAIK) zur Verfügung stellen, der eine solche Verarbeitung durchführt, bevor die App an den Browser geliefert wird. Wenn Sie dies verwenden, sollte dies keine Rolle spielen, sonst würde ich versuchen, große CSS-Dateien auf diese Weise zu vermeiden. Selbst wenn es kein Umschreiben gibt, weil Sie überall ViewEncapsulation.None verwenden, analysiert Angular2 möglicherweise immer noch das CSS, das redundant ist.

+0

Ich würde lieber nicht solche großen Dateien inline verwenden. Auch bei Verwendung von 'ViewEncapsulation.Emulated' oder' Native'. Ich meine, diese Stile werden asynchron geladen und in den meisten Fällen möchten Sie Ihre CSS vor dem Laden Ihrer Seite, nein? Ich würde einfach die Inline-Stile der Komponente verwenden, um bestimmte Komponenten zu stylen, oder wenn Sie eine Komponente als Komponente eines Drittanbieters versenden. Wofür verwenden Sie es? – LordTribual

+0

Mit'Emulated' Angular muss viel umgeschrieben werden (sollte beim Build-Schritt keine Rolle spielen), bei 'Native' würde es überhaupt nicht funktionieren, da Schatten-DOM-Grenzen von CSS nicht überschritten werden können. Ich nehme an, der Build-Schritt fügt das '' 'CSS' '' ''direkt in' index.html' mit 'None' und' Emulated' hinzu. –

+0

Ok das ist wahr, aber das CSS wird später hinzugefügt und nicht bevor die Skripte geladen werden. – LordTribual

Verwandte Themen