Angular 프로젝트에서 전역 스타일을 피하세요

5909 단어 angular


원래 내 블로그에 게시됨: https://blog.merckx.fr/avoid-using-global-styles-in-your-angular-projects/

CSS는 HTML 페이지의 스타일을 지정하는 데 사용되는 언어입니다. 페이지에 있는 모든 DOM 요소의 속성 값을 계산하는 간단한 규칙 집합이 있습니다. Angular는 구성 요소의 스타일이 지정된 구성 요소에만 적용되도록 뷰 캡슐화를 제공합니다. 그러나 이러한 구성 요소에서 생성된 DOM 요소의 스타일은 여전히 ​​전역 스타일의 영향을 받습니다. 이것은 CSS 디버깅을 어렵게 만듭니다.

내가 작업한 모든 프로젝트에서 사용자 지정 CSS 코드는 항상 전체 코드 양(코드 줄 수)의 10% 이상입니다. 그리고 우리는 항상 그것을 유지하는 데 필요한 노력을 과소평가하는 경향이 있습니다. 실제로 CSS 파일 작업에 소요되는 시간을 측정한 적은 없지만 내 시간의 약 10%가 소요되는 경우에도 놀라지 않을 것입니다. CSS는 우리의 모든 웹 프로젝트에서 더 나은 위치를 차지할 자격이 있습니다.

good article , Ben Lorantfy 에서 CSS의 전역 스타일을 JS의 전역 변수와 비교했습니다. 요약하면 둘 다 다음과 같은 문제를 공유합니다.
  • 캡슐화 중단
  • 가독성이 좋지 않음
  • 휴식 정보 숨김
  • 네임스페이스 오염

  • 안타깝게도 전역 스타일과 함께 제공되지 않는 UI 라이브러리를 사용하는 경우는 매우 드뭅니다. Bootstrap, Material Design, Prime NG 및 NG Zorro는 모두 글로벌 스타일과 함께 제공됩니다. 그러나 혼란에 더 많은 혼란을 추가해야 함을 의미하지는 않습니다.

    전역 스타일과 특히 클래스는 개발자가 레이블을 지정하여 요소에 스타일을 적용할 수 있기 때문에 편리합니다. 그것은 우리가 새로운 접근 방식을 유지하고자 하는 것입니다. 없애고 싶은 속성은 전역 스타일이 전역적으로 적용된다는 것입니다. 대신 로컬에 적용되는 전역 스타일을 원합니다.

    이 포스트에서는 SASS 믹스인을 기반으로 한 접근 방식을 제시하려고 합니다. the SASS language's website을 인용합니다.

    Mixins allow you to define styles that can be re-used throughout your stylesheet.



    파일 구조



    이 접근 방식의 첫 번째는 JS/HTML 코드를 구성하는 것과 같은 방식으로 SASS 코드를 구성하는 것입니다. 그것을 무시하지 마십시오. 모든 전역 스타일을 styles라는 폴더 아래에 넣었습니다. 모든 믹스인을 styles/mixins 아래에 두는 것이 좋습니다. 컨테이너, 목록, 테이블, 입력, 버튼, 타이포그래피 등 의미 있는 패키지로 믹스인을 모듈화합니다. 이 시점에서 나는 다음과 같은 것을 제안합니다.

    styles/
    |__ mixins/
        |__ typography.sass
        |__ containers.sass
        |__ quote.sass
        |__ tables/
            |__ compact-table.sass
            |__ data-table.sass
    
    


    액션의 믹스인


    quote 믹스인을 살펴보겠습니다. 이 믹스인은 회색 배경, 일부 패딩, 일부 글꼴 스타일 및 색상과 같은 인용문과 같은 스타일을 요소에 추가할 수 있습니다.

    quote.sass

    @mixin quote
      font-style: italic
      background: rgb(240,240,240)
      border-left: 2px solid rgb(200,200,200)
      color: rgb(100,100,100)
      padding: 10px
    


    믹스인을 사용하는 방법은 다음과 같습니다.

    app.component.html

    <p class="main-quote">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p>
    <p class="second-quote">Molestiae tempore officiis animi sint, corporis officia, vel eaque in, quaerat exercitationem ut.</p>
    
    


    app.component.sass

    @use 'mixins/quote'
    
    .main-quote
      @include quote.quote
      font-size: 20px
    
    .second-quote
      @include quote.quote
    
    


    이 시점에서 몇 가지 유의할 사항이 있습니다.

    스타일 유지 로컬



    전역적으로 적용된 스타일이 없습니다. 글로벌 믹스인(SASS 프리프로세서에서 사용 가능)을 로컬 스타일에 적용합니다.

    템플릿을 깨끗하게 유지합니다.



    각각에 하나의 클래스를 할당합니다<p>. 그런 다음 클래스는 구성 요소의 SASS 파일에 정의됩니다. 그런 다음 각 클래스에 여러 믹스인을 적용할 수 있습니다.

    각 클래스에 하나의 클래스를 할당<p>하는 것은 지루한 프로세스인 것처럼 보이지만 실제로는 템플릿이 깨끗하게 유지되도록 합니다. 클래스 속성을 오버로드하지 않습니다. 스타일 정의는 SASS 파일에 지정됩니다.

    "클래스 체크" 무료



    SASS 전처리기는 믹스인이 존재하지 않으면 불평하지만 CSS는 클래스에 오타가 있으면 불평하지 않습니다.

    내가 이끌어야 할 다음 큰 프로젝트에서 설명된 것과 함께 이 접근 방식을 시도할 것입니다. 결과가 궁금합니다. 소규모 프로젝트의 중간 결과는 이미 유망했습니다.


    KM

    사진 제공: Ricardo Viana on Unsplash

    좋은 웹페이지 즐겨찾기