2016-05-10 14 views
1

Wir haben gerade angefangen, mit Emberjs zu arbeiten, und was ich möchte, ist eine neue benutzerdefinierte Komponente zu erstellen, die auf ihrem ist abgeschlossen. Das bedeutet, es hat eine eigene js-Datei, eine eigene Vorlagendatei und ein eigenes Styling. Die ersten beiden bekomme ich schon, wenn ich mit dem ember cli eine neue Komponente erzeuge. Der letzte, Styling, Ich habe nicht gefunden, wie ich eine CSS/SCSS-Datei erstellen kann, die nur geladen wird, wenn ich eine bestimmte Komponente lade. Gibt es so etwas?Emberjs spezifische SCSS-Datei für meine Komponente

+1

ich stark bezweifle, wollen Sie wirklich dynamisch CSS laden, das ist, was Sie sagen, zu sein scheinen. Es ist eine wunderbare Idee, Ihr CSS modular zu schreiben, aber das Laden jedes einzelnen Bits von CSS, wenn jede Komponente aufgerufen wird, ist weder notwendig noch wünschenswert. –

+0

Hi Valanto, möchten Sie einen einzigartigen Stil für jede Komponente geladen werden, oder? – TameBadger

+0

Was meinst du mit "geladen"? –

Antwort

1

ember-components-css scheint genau das zu tun, was Sie wollen. Sie können auch ember-css-modules ansehen.

Mit Ember-Komponenten-CSS können Sie folgendes tun:

app/my-component/styles.css 
& { // ampersand refers to the component itself (parent selector) 
    padding: 2px; 
} 
.urgent { 
    color: red; 
} 

und diese generiert:

.my-component-a34fba { 
    padding: 2px; 
} 
.my-component-a34fba .urgent { 
    color: red; 
} 

Das ist, was ich glaube, Sie wollen richtig?

Und Bonus können Sie Preprozessoren verwenden:

// app/styles/app.scss 
@import "pod-styles"; or 
// app/styles/app.less 
@import "pod-styles"; or 
// app/styles/app.styl 
@import 'pod-styles' 
+0

benutze. Ich glaube nicht, dass das dynamische Laden funktioniert was die OP anscheinend sucht. –

+0

Hmm Ich frage mich, ich denke, er möchte eine CSS-Datei mit jeder Komponente laden, und es muss für diese Komponente eindeutig sein. Was genau macht ember-components-css? – TameBadger

+0

@torazaburo Ich bin mir ziemlich sicher, dass er das will! Er meint wahrscheinlich * geladen * als * angewandt * und nicht über das Netzwerk geladen. – Lux