정말 엄청난 중복을 피하기 위해 레일 3.1 프로젝트의 말대꾸 파일을 구성하기 위해 고군분투하고있다 ... 내 기본 레이아웃 :페이지 특정 말대꾸 파일과 중복
application.css.scss
- [*= require] main.css.scss
- [@import] 'variables';
- [@import]'bootstrap_overrides';
- [@import]'bootstrap';
- [@import]'base_elements';
- [@import]'superstructure';
- [@import]'modules';
지금까지 그렇게 좋았습니다. 이 모든 파일은 스프로킷에 의해 하나의 문서로 결합됩니다. 그러나 나는 페이지 특정 파일이나 파일을 내 사이트 영역에서 공유하여 내 Sass를 더 모듈화하려고합니다.
gallery_lib.scss
이 파일의 숫자를 참조해야합니다
resource.scss
gallery_resource.scss
badges.scss
그리고 lib 디렉토리에서 어쩌면 CSS 파일 :
그래서 내 GalleryResource # 쇼 페이지에서 내가 추가 말대꾸 파일을 사용할 필요가 이미 application.css에서 가져온 파일. 그들은 variables.css.scss에 정의 된 변수와 부트 스트랩에 정의 된 mixins를 사용해야합니다. 그래서 나는 그들을 사용하는 각 파일에서 이러한 파일을 다시 가져와 강제로 대량 복사를하게됩니다. 각 페이지마다 매니페스트 파일을 작성할 수는 있지만 관리상의 악몽이며 여전히 복제 및 두 개의 CSS 파일이 생성됩니다. application.css 및 page_specific.css.
그래서 해결책은 무엇입니까? application.css를 사용하지 않고 각 페이지 별 파일로 가져 오기를 이동해야합니까? 따라서 위의 예를 사용하여 I는 다음과 같습니다 하나의 매니페스트 파일로 끝날 것 :
gallery_resource_manifest.css.scss
- [*= require] gallery_lib.css
- [*= require] gallery_resource.css.scss
- [@import] 'variables';
- [@import]'bootstrap_overrides';
- [@import]'bootstrap';
- [@import]'base_elements';
- [@import]'superstructure';
- [@import]'modules';
- [@import]'resource';
- [@import]'gallery_resource';
- [@import]'gallery';
- [@import]'badges';
죄송합니다. 어떻게 든 당신의 답을 놓치고, 내 자신의 실험을 통해 같은 장소에 도착했습니다. 믹서와 변수를 선택기에서 별도의 파일로 분리하면 중복 파일이없는 파일을 반복적으로 참조 할 수 있습니다. 중복되는 파일은 해당 파일을 참조하는 파일에서 사용하는 값이기 때문입니다. – Undistraction
이 기술로 얻은 한 가지 문제점은 홈 페이지에 게시물이있는 경우 기사 페이지의 게시물 (그리고 다른 곳의 게시물)이 결국 사용자가 게시물의 스타일을 여러 번 다시 다운로드하도록 만듭니다. 따라서 처음에했던 것과 동일한 문제로 끝나지 만 이제는 캐시 된 파일의 이점을 잃어 버렸습니다. – nheinrich
'posts/_shared.sass'를 사용하여 문제를 해결합니다. 이는 posts가 아닌 응용 프로그램에 포함되어 있습니다. 페이지 당 2 개의 CSS 파일 (응용 프로그램 및 컨트롤러 관련)을 제공합니다. 이는 다소 차선책이지만 중복 및 세그먼트를 적절하게 처리합니다. 나는 또한 HTML5 appcache를 사용하고있다. –