목차
컴포넌트 중첩
组件样式管理
作用域样式
CSS Modules
범위 스타일
CSS 모듈
웹 프론트엔드 View.js Vue는 구성 요소 중첩 및 구성 요소 스타일 관리를 어떻게 구현합니까?

Vue는 구성 요소 중첩 및 구성 요소 스타일 관리를 어떻게 구현합니까?

Jun 27, 2023 pm 03:33 PM
vue 구성요소 중첩 스타일 관리

Vue.js는 데이터 기반의 반응형 업데이트 뷰를 제공하는 경량 JavaScript 프레임워크입니다. Vue.js의 핵심 개념은 구성요소화입니다. 구성요소는 버튼, 양식, 모달 상자 등이 될 수 있으며, 이는 자유롭게 결합되고 더 작은 구성요소로 분할될 수 있습니다. Vue.js의 컴포넌트 중첩 및 스타일 관리는 컴포넌트 개발에 있어 필수적인 지식 포인트입니다. 이 글에서는 Vue에서 컴포넌트 중첩 및 스타일 관리를 구현하는 방법을 자세히 설명합니다.

컴포넌트 중첩

컴포넌트 중첩이란 하나의 컴포넌트를 다른 컴포넌트 안에 배치하여 부모-자식 컴포넌트 관계를 형성하는 것을 말하며, 부모 컴포넌트를 통해 자식 컴포넌트에 데이터를 전달하며, 자식 컴포넌트도 부모 컴포넌트에 데이터를 전달할 수 있으므로 구성 요소 간의 통신 통합을 실현합니다. Vue.js는 구성 요소 중첩을 구현하는 데 매우 편리합니다. 상위 구성 요소 내에 하위 구성 요소의 템플릿만 도입하면 됩니다. 다음은 간단한 예입니다.

<template>
  <div>
    <h1>父组件</h1>
    <child-component></child-component>
  </div>
</template>

<script>
import childComponent from './childComponent.vue'

export default {
  components: {
    'child-component': childComponent
  }
}
</script>
로그인 후 복사

위 코드는 상위 컴포넌트이고, import를 통해 하위 컴포넌트를 도입한 후 컴포넌트에 하위 컴포넌트를 등록하면 됩니다. 상위 구성 요소에 추가 구성 요소 내의 하위 구성 요소를 사용합니다. 구성 요소 중첩은 <child-comComponent></child-comComponent>를 사용하여 상위 구성 요소에 하위 구성 요소의 템플릿을 도입함으로써 달성될 수 있습니다. import 引入子组件,然后在 components 中注册子组件,即可在父组件中使用子组件。在父组件中用 <child-component></child-component> 的方式引入子组件的模板,即可实现组件嵌套。

在子组件中,我们通常从父组件获取数据。Vue.js 中父子组件的数据传递主要通过 props$emit 两种方式实现。props 表示父组件向子组件传递数据,子组件通过接收 props 来获取父组件传递的数据。下面是一个简单的 props 例子:

<template>
  <div>
    <h2>子组件</h2>
    <p>父组件的名字是:{{ name }}</p>
  </div>
</template>

<script>
export default {
  props: ['name']
}
</script>
로그인 후 복사

上面的代码是一个子组件,通过 props 定义了一个名为 name 的属性,父组件向子组件传递数据时通过 name 属性进行传递。在子组件的模板中,可以通过 {{ name }} 的方式获取父组件传递的数据。

在父组件中向子组件传递数据时,可以通过 v-bind 指令传递数据。如下所示:

<template>
  <div>
    <h1>父组件</h1>
    <child-component :name="fatherName"></child-component>
  </div>
</template>

<script>
import childComponent from './childComponent.vue'

export default {
  data () {
    return {
      fatherName: '张三'
    }
  },
  components: {
    'child-component': childComponent
  }
}
</script>
로그인 후 복사

在父组件中,我们定义了一个名为 fatherName 的变量,用于存储父组件的名字。在子组件中,我们通过 props 来接收 fatherName

组件样式管理

组件样式管理是指在 Vue.js 中如何管理组件的样式,保证每个组件的样式不会互相影响,且易于维护。Vue.js 提供了两种方式来管理组件样式:作用域样式和 CSS Modules。

作用域样式

作用域样式是指在组件中使用 scoped 属性定义样式,使得该组件样式只对当前组件有效。例如:

<template>
  <div class="component">
    <h2 class="title">标题</h2>
  </div>
</template>

<style scoped>
.component {
  background-color: #f5f5f5;
  padding: 20px;
  border-radius: 5px;
}

.title {
  color: #333;
  font-size: 18px;
  margin-bottom: 10px;
}
</style>
로그인 후 복사

在这个组件中,我们在样式标签上加上了 scoped 属性,即 style scoped。这样定义的样式只对当前的组件有效,不会影响其他组件或全局样式。

使用作用域样式有一个缺点:不支持深度选择器。在组件中,如果要使用深度选择器,必须在选择器前加上 /deep/ 或者 ,如下所示:

<template>
  <div class="component">
    <h2 class="title">标题</h2>
    <div class="sub-component">
      <span class="sub-title">子标题</span>
    </div>
  </div>
</template>

<style scoped>
.component {
  /deep/ .sub-component {
    background-color: #f1f1f1;
  }
  >>> .sub-title {
    color: red;
  }
}
</style>
로그인 후 복사

上面的代码中,我们在 .component 的样式定义中使用了 /deep/ .sub-component,在 .sub-title 的样式定义中使用了 。这样就可以在作用域样式中定义深度选择器了。

CSS Modules

CSS Modules 是一种模块化 CSS 的解决方案,它可以将 CSS 模块化并命名,确保每个组件的样式都是独立的。Vue.js 提供了对 CSS Modules 的支持,我们可以在每个组件中使用独立的 CSS Module。

首先,我们需要安装 css-loaderstyle-loader,并在 Webpack 配置文件中添加关于 CSS Modules 的配置:

// webpack.conf.js
module.exports = {
  // ...
  module: {
    rules: [
      {
        test: /.css$/,
        loader: 'style-loader!css-loader?modules'
      },
      {
        test: /.vue$/,
        loader: 'vue-loader',
        options: {
          cssModules: {
            localIdentName: '[name]-[hash]',
            camelCase: true
          }
        }
      }
    ]
  }
  // ...
}
로그인 후 복사

上面的代码中,我们在 css-loader 的配置中加上了 modules,表示启用 CSS Modules。在 vue-loader 的配置中加上了 cssModules 属性,表示在 Vue.js 的单文件组件中启用 CSS Modules。

在单文件组件中,我们可以通过 scoped 属性指定 CSS Module 名称。

<template>
  <div class="component">
    <h2 class="title">标题</h2>
  </div>
</template>

<style module>
.component {
  background-color: #f5f5f5;
  padding: 20px;
  border-radius: 5px;
}

.title {
  color: #333;
  font-size: 18px;
  margin-bottom: 10px;
}
</style>
로그인 후 복사

上面的代码中,我们在 style 标签上加上了 module 属性,表示这是一个 CSS Module。在 CSS 中,我们可以采用传统的方式定义样式,不需要使用作用域样式或者深度选择器。

在组件中引入 CSS Module 时,需要使用 $style 对象,如下所示:

<template>
  <div class="component">
    <h2 class="{{$style.title}}">标题</h2>
  </div>
</template>

<style module>
.component {
  background-color: #f5f5f5;
  padding: 20px;
  border-radius: 5px;
}

.title {
  color: #333;
  font-size: 18px;
  margin-bottom: 10px;
}
</style>
로그인 후 복사

上面的代码中,我们使用 $style.title 引用了本组件中定义的 title

하위 구성 요소에서는 일반적으로 상위 구성 요소에서 데이터를 가져옵니다. Vue.js의 상위 구성 요소와 하위 구성 요소 간의 데이터 전송은 주로 props$emit라는 두 가지 방법을 통해 구현됩니다. props는 상위 컴포넌트가 하위 컴포넌트에 데이터를 전달하고, 하위 컴포넌트는 props를 수신하여 상위 컴포넌트가 전달한 데이터를 얻는다는 의미입니다. 다음은 간단한 props 예입니다.

rrreee

위 코드는 props를 통해 name이라는 속성을 정의하는 하위 구성 요소입니다. 데이터를 하위 구성 요소에 전달하면 name 속성을 ​​통해 전달됩니다. 하위 구성요소의 템플릿에서는 {{ name }}을 통해 상위 구성요소가 전달한 데이터를 얻을 수 있습니다. 🎜🎜상위 구성 요소의 하위 구성 요소에 데이터를 전달할 때 v-bind 지시어를 통해 데이터를 전달할 수 있습니다. 아래와 같이 🎜rrreee🎜상위 구성 요소에서 fatherName이라는 변수를 정의하여 상위 구성 요소의 이름을 저장합니다. 하위 구성 요소에서는 props를 통해 fatherName을 받습니다. 🎜🎜컴포넌트 스타일 관리🎜🎜컴포넌트 스타일 관리는 각 컴포넌트의 스타일이 서로 영향을 주지 않고 유지 관리가 용이하도록 Vue.js에서 컴포넌트의 스타일을 관리하는 방법을 말합니다. Vue.js는 구성 요소 스타일을 관리하는 두 가지 방법, 즉 범위 스타일과 CSS 모듈을 제공합니다. 🎜

범위 스타일

🎜범위 스타일은 구성 요소 스타일이 현재 구성 요소에만 유효하도록 scoped 속성을 ​​사용하여 구성 요소의 스타일을 정의하는 것을 의미합니다. 예: 🎜rrreee🎜이 구성 요소에서는 스타일 태그에 scoped 속성, 즉 stylescoped를 추가했습니다. 이러한 방식으로 정의된 스타일은 현재 구성 요소에만 유효하며 다른 구성 요소나 전역 스타일에는 영향을 미치지 않습니다. 🎜🎜범위가 지정된 스타일을 사용하면 한 가지 단점이 있습니다. 즉, 심층 선택기가 지원되지 않습니다. 구성 요소에서 딥 선택기를 사용하려면 아래와 같이 선택기 앞에 /deep/ 또는 를 추가해야 합니다. 🎜rrreee 🎜 위 코드에서는 .comComponent의 스타일 정의와 .sub-title에서 /deep/ .sub-comComponent를 사용했습니다. > 는 스타일 정의에 사용됩니다. 이를 통해 범위 스타일에서 깊이 선택기를 정의할 수 있습니다. 🎜

CSS 모듈

🎜CSS 모듈은 CSS를 모듈화하고 이름을 지정하여 각 구성 요소의 스타일이 독립적이 되도록 할 수 있는 모듈형 CSS 솔루션입니다. Vue.js는 CSS 모듈을 지원하며 각 구성 요소에서 독립적인 CSS 모듈을 사용할 수 있습니다. 🎜🎜먼저 css-loaderstyle-loader를 설치하고 Webpack 구성 파일에 CSS 모듈에 대한 구성을 추가해야 합니다. 🎜rrreee🎜위 코드에서, CSS 모듈을 활성화하기 위해 css-loader 구성에 모듈을 추가했습니다. cssModules 속성이 vue-loader 구성에 추가되었습니다. 이는 CSS 모듈이 Vue.js의 단일 파일 구성 요소에서 활성화되었음을 의미합니다. 🎜🎜단일 파일 구성 요소에서는 scoped 속성을 ​​통해 CSS 모듈 이름을 지정할 수 있습니다. 🎜rrreee🎜위 코드에서는 style 태그에 module 속성을 ​​추가하여 이것이 CSS 모듈임을 나타냅니다. CSS에서는 범위가 지정된 스타일이나 심층 선택기를 사용하지 않고도 전통적인 방식으로 스타일을 정의할 수 있습니다. 🎜🎜CSS 모듈을 구성 요소에 도입할 때 아래와 같이 $style 개체를 사용해야 합니다. 🎜rrreee🎜위 코드에서는 $style.title을 사용합니다. > 이 구성 요소에 정의된 제목 스타일을 참조합니다. 🎜🎜요약: Vue.js는 구성 요소 스타일을 관리하는 두 가지 방법, 즉 범위 스타일과 CSS 모듈을 제공합니다. 범위가 지정된 스타일은 단순한 스타일에 적합한 반면, CSS 모듈은 CSS를 모듈화하고 각 구성 요소의 스타일이 독립적인지 확인하는 구성 요소화된 애플리케이션에 적합합니다. 🎜

위 내용은 Vue는 구성 요소 중첩 및 구성 요소 스타일 관리를 어떻게 구현합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Vue에서 시계를 사용하는 방법 Vue에서 시계를 사용하는 방법 Apr 07, 2025 pm 11:36 PM

vue.js의 시계 옵션을 사용하면 개발자가 특정 데이터의 변경 사항을들을 수 있습니다. 데이터가 변경되면 콜백 기능을 트리거하여 업데이트보기 또는 기타 작업을 수행합니다. 구성 옵션에는 즉시 콜백을 실행할지 여부와 DEEP를 지정하는 즉시 포함되며, 이는 객체 또는 어레이에 대한 변경 사항을 재귀 적으로 듣는 지 여부를 지정합니다.

vue.js로 JS 파일을 참조하는 방법 vue.js로 JS 파일을 참조하는 방법 Apr 07, 2025 pm 11:27 PM

vue.js에서 JS 파일을 참조하는 세 가지 방법이 있습니다. & lt; script & gt; 꼬리표;; mounted () 라이프 사이클 후크를 사용한 동적 가져 오기; Vuex State Management Library를 통해 수입.

Vue에서 부트 스트랩을 사용하는 방법 Vue에서 부트 스트랩을 사용하는 방법 Apr 07, 2025 pm 11:33 PM

vue.js에서 bootstrap 사용은 5 단계로 나뉩니다 : Bootstrap 설치. main.js.의 부트 스트랩 가져 오기 부트 스트랩 구성 요소를 템플릿에서 직접 사용하십시오. 선택 사항 : 사용자 정의 스타일. 선택 사항 : 플러그인을 사용하십시오.

Vue 용 버튼에 기능을 추가하는 방법 Vue 용 버튼에 기능을 추가하는 방법 Apr 08, 2025 am 08:51 AM

HTML 템플릿의 버튼을 메소드에 바인딩하여 VUE 버튼에 함수를 추가 할 수 있습니다. 메소드를 정의하고 VUE 인스턴스에서 기능 로직을 작성하십시오.

Vue가 이전 페이지로 돌아 오는 방법 Vue가 이전 페이지로 돌아 오는 방법 Apr 07, 2025 pm 11:30 PM

vue.js는 이전 페이지로 돌아갈 수있는 네 가지 방법이 있습니다. $ router.go (-1) $ router.back () 사용 & lt; router-link to = & quot;/quot; Component Window.history.back () 및 메소드 선택은 장면에 따라 다릅니다.

Vue는 천막/텍스트 스크롤 효과를 인식합니다 Vue는 천막/텍스트 스크롤 효과를 인식합니다 Apr 07, 2025 pm 10:51 PM

CSS 애니메이션 또는 타사 라이브러리를 사용하여 VUE에서 Marquee/Text Scrolling Effects를 구현하십시오. 이 기사는 CSS 애니메이션 사용 방법을 소개합니다. & lt; div & gt; CSS 애니메이션을 정의하고 오버플로를 설정하십시오 : 숨겨진, 너비 및 애니메이션. 키 프레임을 정의하고 변환을 설정하십시오 : Translatex () 애니메이션의 시작과 끝에서. 지속 시간, 스크롤 속도 및 방향과 같은 애니메이션 속성을 조정하십시오.

게으른 부하 vue의 의미는 무엇입니까? 게으른 부하 vue의 의미는 무엇입니까? Apr 07, 2025 pm 11:54 PM

vue.js에서 게으른 로딩을 사용하면 필요에 따라 부품 또는 리소스를 동적으로로드 할 수 있으므로 초기 페이지로드 시간을 줄이고 성능을 향상시킵니다. 특정 구현 방법에는 & lt; keep-alive & gt를 사용하는 것이 포함됩니다. & lt; 구성 요소는 & gt; 구성 요소. 게으른 하중은 FOUC (Splash Screen) 문제를 일으킬 수 있으며 불필요한 성능 오버 헤드를 피하기 위해 게으른 하중이 필요한 구성 요소에만 사용해야합니다.

VUE 버전을 쿼리하는 방법 VUE 버전을 쿼리하는 방법 Apr 07, 2025 pm 11:24 PM

Vue DevTools를 사용하여 브라우저 콘솔에서 vue 탭을 보면 VUE 버전을 쿼리 할 수 ​​있습니다. npm을 사용하여 "npm list -g vue"명령을 실행하십시오. package.json 파일의 "종속성"객체에서 vue 항목을 찾으십시오. Vue Cli 프로젝트의 경우 "vue -version"명령을 실행하십시오. & lt; script & gt에서 버전 정보를 확인하십시오. vue 파일을 나타내는 html 파일의 태그.

See all articles