<p>이 글에서는 Vue 유선형 스타일과 관련된 지식 포인트를 설명하고 관심 있는 친구들이 참고할 수 있도록 예시 코드를 공유합니다.
<p>앞서 언급했듯이
<p>Vue 공식 홈페이지의 스타일 가이드는 우선순위에 따라(필요, 적극 권장, 권장, 주의 사용 순) 분류되어 있으며, 코드 간격이 커서 쿼리하기 어렵습니다. 이 글은 유형별로 분류되었으며, 일부 예제나 설명은 Vue 스타일 가이드의 축약 버전입니다. , 루트 구성 요소 앱은 제외됩니다. 이렇게 하면 모든 HTML 요소 이름이 단일 단어이기 때문에 기존 및 향후 HTML 요소와의 충돌을 피할 수 있습니다
//bad
Vue.component('todo', {})
//good
Vue.component('todo-item', {})
로그인 후 복사
<p>[단일 파일 구성 요소 파일 이름은 항상 대문자(PascalCase)로 시작하거나 항상 줄 연결(kebab-)이어야 합니다. case)] (강력히 권장)
//bad
mycomponent.vue
//good
MyComponent.vue
//good
my-component.vue
로그인 후 복사
<p> [기본 구성 요소 이름은 특정 접두사로 시작해야 합니다] (강력히 권장) <p>특정 스타일과 규칙을 적용하는 기본 구성 요소(즉, 논리 또는 상태 비저장 구성 요소가 없는 디스플레이 클래스)는 모두 Base, App 또는 V
//bad
components/
|- MyButton.vue
|- VueTable.vue
|- Icon.vue
//good
components/
|- BaseButton.vue
|- BaseTable.vue
|- BaseIcon.vue
로그인 후 복사
<p>와 같은 특정 접두사로 시작합니다. 단일 활성 인스턴스만 있어야 하는 구성 요소는 고유함을 표시하기 위해 접두사
The
를 붙여 이름을 지정해야 합니다. [강력 권장] <p>이것은 구성 요소가 단일 페이지에서만 사용될 수 있다는 의미는 아니지만 페이지당 한 번만 사용할 수 있다는 의미입니다. 이러한 구성 요소는 어떤 prop도 허용하지 않습니다.
//bad
components/
|- Heading.vue
|- MySidebar.vue
//good
components/
|- TheHeading.vue
|- TheSidebar.vue
로그인 후 복사
<p>[및 상위 구성 요소 밀접하게 결합된 하위 구성 요소는 다음과 같이 이름을 지정해야 합니다. 접두사로 상위 구성 요소 이름] (강력 권장)
//bad
components/
|- TodoList.vue
|- TodoItem.vue
|- TodoButton.vue
//good
components/
|- SearchSidebar.vue
|- SearchSidebarNavigation.vue
로그인 후 복사
<p> [구성 요소 이름은 상위 수준(일반적으로 일반적인 설명) 단어로 시작하고 설명 수정자로 끝나야 합니다.](강력 권장) 권장)
The
前缀命名,以示其唯一性】(强烈推荐)<p>这不意味着组件只可用于一个单页面,而是
每个页面只使用一次,这些组件永远不接受任何 prop
//bad
components/
|- ClearSearchButton.vue
|- ExcludeFromSearchInput.vue
|- LaunchOnStartupCheckbox.vue
|- RunSearchButton.vue
|- SearchInput.vue
|- TermsCheckbox.vue
//good
components/
|- SearchButtonClear.vue
|- SearchButtonRun.vue
|- SearchInputQuery.vue
|- SearchInputExcludeGlob.vue
|- SettingsCheckboxTerms.vue
|- SettingsCheckboxLaunchOnStartup.vue
로그인 후 복사
<p>【和父组件紧密耦合的子组件应该以父组件名作为前缀命名】(强烈推荐)
//bad
<!-- 在单文件组件和字符串模板中 -->
<mycomponent/>
<myComponent/>
<!-- 在 DOM 模板中 -->
<MyComponent></MyComponent>
//good
<!-- 在单文件组件和字符串模板中 -->
<MyComponent/>
<!-- 在 DOM 模板中 -->
<my-component></my-component>
로그인 후 복사
<p>【组件名应该以高级别的 (通常是一般化描述的) 单词开头,以描述性的修饰词结尾】(强烈推荐)
//bad
components/
|- SdSettings.vue
|- UProfOpts.vue
//good
components/
|- StudentDashboardSettings.vue
|- UserProfileOptions.vue
로그인 후 복사
<p>【单文件组件和字符串模板中组件名应总是PascalCase——但在DOM模板中总是kebab-case】(强烈推荐)
//bad
<!-- 在单文件组件、字符串模板和 JSX 中 -->
<MyComponent></MyComponent>
<!-- 在 DOM 模板中 -->
<my-component/>
//good
<!-- 在单文件组件、字符串模板和 JSX 中 -->
<MyComponent/>
<!-- 在 DOM 模板中 -->
<my-component></my-component>
로그인 후 복사
<p>【组件名应该倾向于完整单词而不是缩写】(强烈推荐)
//bad
<template><button class="btn btn-close">X</button></template>
<style>
.btn-close {background-color: red;}
</style>
//good
<template><button class="btn btn-close">X</button></template>
<style scoped>
.btn-close {background-color: red;}
</style>
//good
<template><button :class="[$style.button, $style.buttonClose]">X</button></template>
<style module>
.btn-close {background-color: red;}
</style>
로그인 후 복사
<p>组件相关<p>【单文件组件、字符串模板和JSX中没有内容的组件应该自闭合——但在DOM模板里不要这样做】(强烈推荐)<p>自闭合组件表示它们不仅没有内容,而且刻意没有内容
//good
<!-- ComponentA.vue -->
<script>/* ... */</script>
<template>...</template>
<style>/* ... */</style>
<!-- ComponentB.vue -->
<script>/* ... */</script>
<template>...</template>
<style>/* ... */</style>
로그인 후 복사
<p>【为组件样式设置作用域】(必要)<p>这条规则只和单文件组件有关。
不一定要使用
scoped
//bad
Vue.component('TodoList', {})
Vue.component('TodoItem', {})
//good
components/
|- TodoList.vue
|- TodoItem.vue
로그인 후 복사
[구성 요소 이름 단일 파일 구성 요소 및 문자열 템플릿에서는 항상 PascalCase여야 하지만 DOM 템플릿에서는 항상 kebab-case여야 합니다.](적극 권장)<p>
[구성 요소 이름은 약어 대신 전체 단어로 표시되는 경향이 있습니다.](적극 권장) <p>
Component 관련<p>[JSX에서 단일 파일 구성 요소, 문자열 템플릿 및 내용이 없는 구성 요소는 자체적으로 닫혀야 합니다. 하지만 DOM 템플릿에서는 이 작업을 수행하지 마세요.] (강력히 권장됨) <p>자체 닫는 구성 요소는 내용이 없을 뿐만 아니라 , 그러나 의도적으로 내용이 없습니다<p>
[구성요소 스타일 범위 설정](필수)<p>이 규칙은 단일 파일 구성요소에만 관련됩니다.
scoped
속성을 사용하는 것은
필요하지 않습니다. 범위 설정은 CSS 모듈을 사용하거나 다른 라이브러리 또는 규칙을 사용하여 수행할 수도 있습니다. <p>
delimiters
comments
로그인 후 복사
[단일 파일 구성 요소는 항상