2012-10-17 27 views
40

Tôi đang sử dụng Twitter Bootstrap trên một dự án tại thời điểm này, bao gồm các tệp LESS và biên dịch với một số mã LESS bổ sung mà chúng tôi đã viết.Thực tiễn không tốt để ghi đè các biến LESS?

Phiên bản mới nhất có nghĩa là chúng ta cần ghi đè lên một số biến Bootstrap LESS. Một tùy chọn ở đây là để duy trì một bản sao sửa đổi của Bootstrap mà chúng tôi vá trên mỗi bản phát hành.

Nhưng tôi lưu ý rằng có thể ghi đè một biến được xác định trong tệp @import LESS bằng cách khai báo lại biến sau báo cáo nhập.

ví dụ .:

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

là xấu thực hành này? Nó là một tạo tác của cách trình biên dịch LESS hoạt động, hay một phần dự định của nó? Tôi không thể tìm thấy nhiều thông tin về vấn đề này, mặc dù tôi đã tìm thấy các tài liệu tham khảo sau hai:

Bởi vì một lỗi trong trình biên dịch ít, bạn có thể ghi đè giá trị “liên tục” của một biến bằng cách thay đổi nó sau khi nó ban đầu được khai báo.

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

Tùy chỉnh cột và máng xối bằng cách ghi đè ba biến (sau khi nhập grid.less đã được công bố).

http://semantic.gs/

Các trang web LESS thân nói rằng biến là 'hằng':

http://lesscss.org/

Lưu ý rằng các biến trong vòng chưa thực sự 'hằng' ở chỗ chúng chỉ có thể là được xác định một lần.

Nhưng sau đó tôi thấy các trang web khác sử dụng phương pháp này .. Nó chắc chắn dễ dàng hơn việc duy trì chi nhánh nhà cung cấp và dường như hoạt động tốt với less.js.

Sẽ đánh giá cao bất kỳ suy nghĩ nào về việc đây có phải là điều xấu để làm hay không!

+1

Có một số vé: https://github.com/cloudhead/less.js/issues/297 và https://github.com/cloudhead/less.js/issues/905 –

+0

Cảm ơn, đáng lẽ đã xem xét ở đó - hữu ích. Mặc dù câu hỏi của tôi vẫn đứng vững vì không phải vấn đề nào cũng có bất kỳ giải pháp nào. – sync

Trả lời

43

Ok! Một trong những vấn đề trên đã dẫn đến một cuộc thảo luận về hành vi dự định, và nó chỉ ra rằng các biến LESS ghi đè là tốt.

Tuyên bố của bạn sẽ ghi đè lên nhau trong cùng một phạm vi trong CSS; Điều này cũng đúng với LESS.

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

Giống như trong CSS, trọng trong một phạm vi là một cách dự định sử dụng LESS.

6

Ok!

Tôi thường tạo ít tệp hơn với "thành phần" và các biến có giá trị mặc định. Sau đó, tôi nhập sau đó một tệp có cùng biến nhưng giá trị "khách hàng", ghi đè các giá trị mặc định. Bằng cách đó tôi chỉ có thể thay đổi một số giá trị để tạo ra một thiết kế mới cho từng khách hàng.

Sẽ ổn và rất hữu ích.

Các vấn đề liên quan