Czy istnieje alternatywa dla SASS lub LESS, która implementuje coś takiego jak moduły i globalny zasięg?Preprocesor CSS z modułami i rozsądnym zakresem?
Na przykład, kiedy to zrobić w SASS (lub równoważny) Im mniej:
@import "foo.scss"
... to popycha wszystkie wstawek, zmienne itp z importowanego pliku do zasięgu globalnym, ewentualnie nadrzędne lub kolizja z załadowanymi lub zdefiniowanymi mixinami/zmiennymi. Myślę, że to bałagan.
Chciałbym mieć coś bardziej modularnego. Wyobraźmy sobie, że foo.scss
ma wstawek bar
:
@mixin bar {
// ...
}
Aby skorzystać z tej mixin bym to nazwać relatywnie do przestrzeni nazw "foo". Bardziej lub tak:
@import "foo.scss"
.bar {
@include foo.bar;
}
Innymi słowy: zamiast pracować jako ekwiwalent from foo import *
w Pythonie, A @import foo
naprawdę działa jak import foo
.
So. Czy istnieje preprocesor CSS, który dba o takie przestrzenie nazw?
Nie wiem, czy obsługuje nazw, ale spojrzeć na Stylus http://learnboost.github.com/stylus/ kolejna pozornie świetny preprocesor css (nigdy go nie używał), który można łatwo rozszerzyć –
Można zawinąć mniej pliku w mixin (jak w przestrzeni nazw w javascript) np. .namespaced() { // zmienne nie wyciekają !! } .namespaced(); –
@LukePage Ta funkcja jest niezła, ale możesz mieć dwa pliki z tym samym '.namespace'. Dla prawdziwej modułowości, wszystkie nazwy z zaimportowanych plików nie powinny być upuszczane do zasięgu globalnego. – moraes