단일 인스턴스 단일 데이터베이스 다중 테넌트 애플리케이션을 설정하고 있습니다. 백엔드는 Ruby on Rails로 작성되고 프론트 엔드는 Rails 프레임 워크가있는 AngularJS의 별도 앱입니다.
추상 부모 상태에 대한 해결을 사용하여 하위 도메인을 결정하고 이후에 테넌트를 결정합니다. 테넌트가 결정되면 프런트 엔드의 구성 파일에서 CSS 변수 값을 읽어 프로젝트의 나머지 부분에서 참조되는 클래스를 포함하는 기본 styles.css 파일을 생성하는 데 사용할 수 있기를 원합니다.
Sass 및 Less와 같은 CSS 전처리기를 사용하여이 작업을 수행 할 수 있다고 들었지만, 어느 쪽에도 경험이 없으며이를 설정하는 방법을 정확히 파악하려고 노력하고 있습니다.
몇 가지 도움말 / 코드 예제를 주시면 감사하겠습니다!
Sass 또는 Less는 브라우저가로드하기 전에 컴파일되기 때문에 원하는 작업을 수행하지 않습니다. 즉, 브라우저는 컴파일 된 css 파일 만로드합니다.
그러나 목표를 달성하는 몇 가지 방법이 있습니다. 저는 Ruby에 익숙하지 않으므로 서버 언어 제안을 일반적으로 유지하려고 노력할 것입니다. 나는 당신의 전체 상황을 알지 못하기 때문에 분명히 완전한 해결책이 아닙니다. 대신 이것들은 당신에게 약간의 단서를 줄 몇 가지 아이디어 일뿐입니다.
아마도 가장 좋은 방법은 서버 로직을 사용하여 body 태그에 다른 클래스를 적용한 다음 해당 클래스를 사용하여 페이지에 적용되는 스타일을 결정하는 것입니다. 예를 들면 다음과 같습니다.
/* probably a good idea to have fallback styles */
body {
color: black;
background: white;
}
body.style-one p {
color: red;
background: blue;
}
body.style-two p {
color: blue;
background: red;
}
<body class="style-one">
<p>This text will be red.</p>
물론 javascript를 사용하여 body 태그의 클래스를 변경할 수도 있으므로 사용자가 페이지의 테마를 변경할 수 있습니다.
<link rel="stylesheet"...>
하여 하나 또는 다른 스타일 시트를 가져올 보조 태그를 작성할 수 있습니다 . 여기서 진정한 장점은 다양한 테마에 대한 많은 규칙이있는 경우 자체 파일에서 멋지게 분리하여 유지할 수 있다는 것입니다.
<?php
header("Content-Type: text/css");
if( $_GET['theme'] == 'one' ) {
echo 'p { color: red; }';
} else {
echo 'p { color: blue; }';
}
?>
a {
color: green;
}
<link rel="stylesheet" href="style.css.php?theme=one">
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다