2010-09-10 23 views
10

Java Q: Tôi thích CSS cho các trang web đơn giản nhưng không thích nó khi nói đến các trang web thực tế vì bạn nhận được css explosion và nhiều lần lặp lại.Thư viện Java để quản lý vụ nổ CSS và tái sử dụng?

Tôi bị cám dỗ sử dụng Sass và hoặc Compass nhưng chúng là các chương trình Ruby rất có thể sẽ yêu cầu một số Maven + JRuby yêu thích làm việc cho ứng dụng Java Web dev. Điều này cũng gây khó khăn nếu bạn đang sử dụng Eclipse hoặc bất kỳ IDE nào hỗ trợ đồng bộ hóa với một ứng dụng web đang chạy.

Có cách nào thay thế tốt hơn cho địa ngục đó là CSS trong địa ngục Java?

Trả lời

5

Tôi đã đi xuống cùng một con đường gần đây bằng cách sử dụng LessCss, một công nghệ tương tự. Lúc đầu, tôi đã cố gắng để nhúng JRuby trong vòng đời xây dựng của tôi. Nhưng không may Maven + JRuby là một con quái vật, nó chậm, rất lớn và lỗi (một nửa thời gian nó thậm chí sẽ không bắt đầu bởi vì nó sẽ phàn nàn về đường dẫn tập tin nó đang chạy trên).

May mắn thay, hiện tại có một cổng JavaScript của LessCss, mà giờ đây tôi đã nhúng qua Mozilla Rhino. I describe the process in this blog post.

Hôm qua mặc dù tôi đã chuyển sang cấp độ tiếp theo, tạo một Plugin Maven LessCss để giảm thiểu cấu hình POM và sao chép mã. Rất tiếc, tôi không thể chia sẻ nó vì đó là mã độc quyền cho khách hàng hiện tại của tôi, nhưng giải pháp rất đơn giản:

Use GMaven to create the Plugin, tạo một mojo cơ sở trừu tượng gọi trình biên dịch LessCss và một số triển khai cụ thể cấu hình mojo cơ sở cho tài nguyên khác bộ:

ví dụ:

  • lesscss:compile
    biên dịch từ khắp nơi <resources> để ${project.build.outputDirectory}
  • lesscss:test-compile
    biên dịch từ tất cả <testResources> để ${project.build.testOutputDirectory}
  • lesscss:war-compile
    (biên dịch từ tất cả src/main/webapp để ${project.build.directory}/${project.build.finalName} , chiến tranh bùng nổ thư mục)

Vì vậy, mặc dù tôi không thể giúp bạn với SASS (ngoài việc yêu cầu auth hoặc chuyển sang Groovy, Java hoặc JavaScript), tôi nghĩ tôi đã cho bạn thấy một giải pháp khả thi.

Tất nhiên bạn cũng có thể triển khai một Plugin Maven trong java mà không có Groovy (cũng nhúng JavaScript qua Rhino), nhưng tôi nghĩ nó dễ dàng hơn trong Groovy.

+0

Bài đăng thú vị +1 –

+0

Trên ổ đĩa của tôi hoạt động trước khi đọc phản hồi, tôi đã nghĩ đến việc viết trình xây dựng Groovy cho CSS và hoặc DSL nhỏ tương tự như SASS với bộ lọc servlet hoặc servlet để phục vụ CSS (tức là JSP/GSP là HTML nhưng cho CSS). Bài đăng tuyệt vời! –

+1

@Adam: Như tôi đã viết trong bài đăng trên blog của tôi, có điều gì đó tương tự đã tồn tại đối với Less và Wicket: http://www.richardnichols.net/2010/06/less-css-in-wicket-using-mozilla-rhino/ . BTW Nếu bạn đã từng viết một Groovy Builder như vậy, hãy đăng nó ở đây. –

0

Giao diện dòng lệnh Sass rất kỹ lưỡng. Nếu bạn gọi ra sass --update trong các quy tắc xây dựng của mình, bạn chỉ có thể sử dụng Sass thực thi chuẩn (hoặc qua Ruby hoặc JRuby) mà không cần tích hợp trực tiếp vào bản dựng của bạn.

+0

Bất kể một cuộc gọi bên ngoài hoặc một nội bộ (JRuby) của nó vẫn được tích hợp với bản dựng. Tôi vẫn phải cài đặt JRuby hoặc Ruby trên máy xây dựng và mỗi máy phát triển. –

+0

Đó là sự thật (tất nhiên, điều này cũng đúng với Rhino + Less). Chúng tôi dự định phát hành gói Sass + Ruby tất cả-trong-một lúc trong tương lai, điều này hy vọng sẽ dễ dàng hơn trong việc quản lý. –

+0

không có gì là không đúng đối với tê giác + ít hơn, vì tôi có thể tải xuống tất cả các thành phần cần thiết thông qua độ phân giải phụ thuộc maven, do đó làm cho bản dựng có thể tái tạo ở mọi nơi. với jruby được thực tế không thể sử dụng từ maven và ruby ​​không chạy trên java vm không có thực sự là một tùy chọn để tự động hóa sass trong một xây dựng maven. Đó là không có gì chống lại Sass, đó là một công nghệ mát mẻ, nhưng hội nhập maven/ruby ​​hút. Không phải lỗi của bạn, cũng không phải của tôi, và không có lý do gì để từ chối câu trả lời của tôi. –

1

Một giải pháp tốt để sử dụng sass với nhật thực được trả lời trong câu hỏi this.

3

Tôi đã sử dụng wro4j.

Rất khuyên bạn nên thư viện vì nó sẽ xử lý nhiều thứ như css và cà phê CoffeeScript ít hơn.

+0

Giải pháp java thuần túy wro4j? Dường như sử dụng less.js? Tôi có cách ly mạng nội bộ cao từ mạng công cộng, một số máy tính bị cô lập hoàn toàn. –

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