2012-02-11 2 views
0

저는 Rails 3.1 앱을 개발 중이며 SASS와 CoffeeScript를 사용하고 있습니다. 나는 SASS의 변수와 수입의 확장을 특히 좋아한다. 모든 스타일 시트에서 사용하는 16 진수 상수 값을 모두 포함하는 단일 _global-settings.css.scss 파일을 생성했습니다. 이렇게하면 색상, 글꼴 및 레이아웃 크기를 관리 할 수있는 단일 장소가되었습니다. 매우 건조한 상태.jQuery에서 .css.scss 변수 사용?

하지만 CSS를 동적으로 조정하기 위해 JQuery를 사용하려는 경우 더 이상 내 css 컴파일 타임 변수에 액세스 할 수 없으며 .js.coffee 파일의 JSON 해시와 동일한 데이터를 재생해야합니다. 전혀 건조하지 않습니다.

여기 내 질문이있다. 필자의 CSS 설정 파일을 CoffeeScript 해시로 변경하기 전에 레이크 작업을 수행하기 전에 누구나 더 똑똑한 아이디어가 있습니까? HTML 파일에서 숨겨진 div의 모든 값을 숨기는 것처럼?

+1

잘 모르겠습니다. 전역 값을 나열하는 곳에 'constants.yml' 파일을 둘 수 있다고 생각합니다. 그런 다음 ERB를 통해 자산 파일에 삽입 할 수 있습니다. 그러나 나는 그것을 스스로 시도하지 않았다. – Flambino

+0

@Flambino : 적절한 생각입니다. 상수를 Ruby-land에두고 ERB를 사용하여 SASS 및 CoffeeScript로 가져옵니다. 나는'constants.yml'에 대해서 모른다. 응용 프로그램을 초기화하는 동안'YAML.load_file' 호출을 추가하는 것이 자동이 아니었다면 충분히 쉬울 것이다. –

+0

@muistooshort [Sprockets] (https://github.com/sstephenson/sprockets)가 처음 소개되었을 때 기억했던 파일들입니다. 레일스에 통합되기 전에. 하지만 그것은 꽤 오래 전이었습니다. 따라서 내 의견에 "확실하지 않습니다"라고 대답했습니다. – Flambino

답변

3

CSS 구성을 Ruby로 이동 한 다음 _global-settings.css.scss과 ERB를 통해 작은 CoffeeScript 조각을 보내는 것이 더 쉽습니다. 그런 다음 설정을 완료하고 어디서나 액세스 할 수 있습니다. 그런 다음 _global-settings.css.scss_global-settings.css.scss.erb로 이름을 변경하고 그 안에이 같은 것들을 사용

CSS_SETTINGS = { 
    :text_color  => '#333', 
    :text_color_hilite => '#f33', 
    :font_size   => '14px', 
    #... 
} 

을 :

어딘가에 루비이있을 것

$text-color: '<%= CSS_SETTINGS[:text_color] %>'; 
// ... 

을 그리고 global_settings.js.coffee.erb 안에이있을 수 있습니다 :

window.app.global_settings = <%= CSS_SETTINGS.to_json.html_safe %> 

n은 해시 SASSify 것 간단한보기 도우미 쓰기 :

def sassify(h) 
    h.map do |k, v| 
     # You might want more escaping for k and v in here, this is just 
     # a simple proof of concept demo. 
     [ '$', k.to_s.gsub('_', '-'), ': ', "'#{v}'", ';' ].join 
    end.join("\n") 
end 

을 그리고 당신은이 말을 할 수 귀하의 _global-settings.css.scss.erb :

// Import global CSS settings. 
<%= sassify(CSS_SETTINGS).html_safe %> 

또한 원숭이 해시에 to_sass 패치 및 CSS_SETTINGS.to_sass를 사용하지만 그건 수 아마 일을 너무 멀리하고 있습니다.

+0

좋은 아이디어에 감사드립니다. 나는 그들을 연구하고 무언가를 만들 것이다. – explainer