Pytanie Czy złą praktyką jest przesłonięcie zmiennych LESS?


Korzystam obecnie z Twitter Bootstrap w ramach projektu, w tym plików LESS i kompilacji za pomocą dodatkowego kodu LESS, który napisaliśmy.

Najnowsze wydanie oznaczało, że musimy zastąpić niektóre ze zmiennych Bootstrap LESS. Jedną z opcji było utrzymanie zmodyfikowanej kopii Bootstrapa, którą łatamy w każdym wydaniu.

Ale zauważam, że można zastąpić zmienną zdefiniowaną w @import LESS plik poprzez ponowne zadeklarowanie zmiennej po instrukcja importu.

Na przykład.:

@import "twitter-bootstrap/bootstrap.less";
// Restore base font size to pre 2.1.1 defaults
@baseFontSize:          13px;
// Add some custom LESS code here

Czy to zła praktyka? Czy jest to artefakt sposobu działania kompilatora LESS lub jego zamierzonej części? Nie mogłem znaleźć wiele informacji na ten temat, chociaż znalazłem następujące dwa odniesienia:

Z powodu błędu w less kompilatorze można zastąpić "stałą" wartość zmiennej, zmieniając ją po początkowym zadeklarowaniu.

http://rubysource.com/how-to-customize-twitter-bootstrap%E2%80%99s-design-in-a-rails-app

i

Dostosuj kolumny i rynny, zastępując te trzy zmienne (po tym, jak deklarowany jest import grid.less).

http://semantic.gs/

Sama strona LESS mówi, że zmienne to "stałe":

http://lesscss.org/

Zauważ, że zmienne w LESS są w rzeczywistości "stałymi", ponieważ można je zdefiniować tylko raz.

Ale potem widzę inne strony wykorzystujące to podejście. Z pewnością łatwiejsze jest utrzymanie gałęzi dostawcy i wydaje się, że działa dobrze z less.js.

Byłbym wdzięczny za wszelkie przemyślenia, czy to źle, czy nie!


40
2017-10-17 06:16


pochodzenie


Jest kilka biletów: github.com/cloudhead/less.js/issues/297 i github.com/cloudhead/less.js/issues/905 - Christoph Leiter
Dzięki, powinny tam zajrzeć - przydatne. Chociaż moje pytanie wciąż jest aktualne, ponieważ żadna z tych kwestii nie ma rozwiązania. - sync


Odpowiedzi:


Ok! Jeden z powyższych problemów doprowadził do omówienia zamierzonego zachowania i okazało się, że nadrzędne zmienne LESS są w porządku.

Twoje deklaracje nadpisują się nawzajem w tym samym zakresie w CSS; To samo dotyczy LESS.

https://github.com/cloudhead/less.js/issues/297

Podobnie jak w CSS, przesłonięcie w ramach zakresu jest zamierzonym sposobem używania LESS.


45
2017-12-11 04:01





W porządku!

Zwykle tworzę mniej pliku z "komponentami" i zmiennymi o wartości domyślnej. Następnie importuję po tym plik z tymi samymi zmiennymi, ale wartością "klienci", nadpisując domyślne. W ten sposób muszę tylko zmienić niektóre wartości, aby stworzyć nowy projekt dla każdego klienta.

Jest w porządku i bardzo przydatne.


6
2017-10-03 07:43