웹 프론트엔드 JS 튜토리얼 Vue 간소화된 스타일 코드 공유

Vue 간소화된 스타일 코드 공유

Jan 31, 2018 am 11:24 AM
공유하다 라이트 버전 스타일

Vue 공식 홈페이지의 스타일 가이드는 우선순위(필수, 적극 권장, 권장, 주의 사용)에 따라 분류되어 있으며, 코드 간격이 커서 쿼리하기 어렵습니다. 이 글은 Vue 스타일 가이드의 간소화된 버전이며, 구성 요소 이름, 지침 및 기능을 포함하여 관련 정보를 주로 소개합니다. 그것을 참조할 수 있습니다. 모두에게 도움이 되기를 바랍니다.

컴포넌트 이름

[컴포넌트 이름은 여러 단어로 구성되어야 합니다](필수)

컴포넌트 이름은 루트 컴포넌트 App을 제외하고 항상 여러 단어로 이루어져야 합니다. 이렇게 하면 모든 HTML 요소 이름이 단일 단어이기 때문에 기존 및 향후 HTML 요소와의 충돌을 피할 수 있습니다

//bad
Vue.component('todo', {})
//good
Vue.component('todo-item', {})
로그인 후 복사

[단일 파일 구성 요소 파일 이름은 항상 대문자(PascalCase)로 시작하거나 항상 줄 연결(kebab-)이어야 합니다. case)] (강력히 권장)

//bad
mycomponent.vue
//good
MyComponent.vue
//good
my-component.vue
로그인 후 복사

[기본 구성 요소 이름은 특정 접두사로 시작해야 합니다] (강력히 권장)

특정 스타일과 규칙을 적용하는 기본 구성 요소(즉, 논리 또는 상태 비저장 구성 요소가 없는 디스플레이 클래스)는 모두 Base, App 또는 V

//bad
components/
|- MyButton.vue
|- VueTable.vue
|- Icon.vue
//good
components/
|- BaseButton.vue
|- BaseTable.vue
|- BaseIcon.vue
로그인 후 복사

와 같은 특정 접두사로 시작하세요.[단일 활성 인스턴스만 있어야 하는 구성 요소는 고유성을 표시하기 위해 접두사로 이름을 지정해야 합니다](강력 권장)

이것은 구성 요소가 단일 페이지에서만 사용할 수 있지만 각 페이지에서는 한 번만 사용할 수 있습니다. 이러한 구성 요소는 어떠한 props도 허용하지 않습니다.

//bad
components/
|- Heading.vue
|- MySidebar.vue
//good
components/
|- TheHeading.vue
|- TheSidebar.vue
로그인 후 복사

[상위 구성 요소와 밀접하게 결합된 하위 구성 요소는 상위 구성 요소 이름을 접두사] (강력히 권장)

//bad
components/
|- TodoList.vue
|- TodoItem.vue
|- TodoButton.vue
//good
components/
|- SearchSidebar.vue
|- SearchSidebarNavigation.vue
로그인 후 복사

[컴포넌트 이름은 상위 수준(일반적으로 일반적인 설명) 단어로 시작하고 설명적인 수정자로 끝나야 합니다.] (강력히 권장)

//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
로그인 후 복사

[단일 파일 컴포넌트 및 문자열 템플릿에서 컴포넌트 이름은 항상 PascalCase여야 합니다. 하지만 DOM 템플릿에서는 항상 케밥 케이스입니다.】(강력 권장)

//bad
<!-- 在单文件组件和字符串模板中 -->
<mycomponent/>
<myComponent/>
<!-- 在 DOM 模板中 -->
<MyComponent></MyComponent>
//good
<!-- 在单文件组件和字符串模板中 -->
<MyComponent/>
<!-- 在 DOM 模板中 -->
<my-component></my-component>
로그인 후 복사

【컴포넌트 이름은 약어가 아닌 전체 단어로 구성되어야 합니다】(강력 권장)

//bad
components/
|- SdSettings.vue
|- UProfOpts.vue
//good
components/
|- StudentDashboardSettings.vue
|- UserProfileOptions.vue
로그인 후 복사

컴포넌트 관련

【 단일 파일 JSX에서 구성 요소, 문자열 템플릿 및 콘텐츠가 없는 구성 요소는 자동으로 닫혀야 합니다. 하지만 DOM 템플릿에서는 이 작업을 수행하지 마세요.] (강력히 권장됨)

자체 닫는 구성 요소는 콘텐츠가 없을 뿐만 아니라 의도적으로 콘텐츠도 없음을 의미합니다.

//bad
<!-- 在单文件组件、字符串模板和 JSX 中 -->
<MyComponent></MyComponent>
<!-- 在 DOM 模板中 -->
<my-component/>
//good
<!-- 在单文件组件、字符串模板和 JSX 中 -->
<MyComponent/>
<!-- 在 DOM 模板中 -->
<my-component></my-component>
로그인 후 복사

[구성 요소 스타일 범위 설정](필수)

이 규칙은 단일 파일 구성 요소에만 관련됩니다. 범위가 지정된 속성을 사용할 필요는 없습니다. 범위 설정은 CSS 모듈을 사용하거나 다른 라이브러리 또는 규칙을 사용하여 수행할 수도 있습니다.

//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>
로그인 후 복사

【하나의 파일에 하나의 컴포넌트만】(강력히 권장)

//good
<!-- ComponentA.vue -->
<script>/* ... */</script>
<template>...</template>
<style>/* ... */</style>
<!-- ComponentB.vue -->
<script>/* ... */</script>
<template>...</template>
<style>/* ... */</style>
로그인 후 복사

【컴포넌트 옵션의 기본 순서】(권장)

1. 부작용(컴포넌트 외부에서 발생하는 효과)

el


2. 인식(컴포넌트 이외의 지식 필요)

name

parent



3. 컴포넌트 유형(컴포넌트 유형 변경)

function

4. 템플릿 수정자(템플릿 컴파일 방식 변경)


delimiters

comments

5. 템플릿 종속성(템플릿에 사용되는 리소스)

comComponents

directives

filters


6. 조합(속성을 옵션으로 병합)

extends

mixins



7. 인터페이스(컴포넌트 인터페이스)

inheritAttrs

model

props /propsData


8, 로컬 상태(로컬 반응 속성)

data

computed



9, 이벤트(반응 이벤트에 의해 트리거되는 콜백)

watch


수명 주기 후크(순서에 따라 호출됨)


10. 비반응형 속성(반응형 시스템에 의존하지 않는 인스턴스 속성)

methods


11. 렌더링(구성 요소 출력에 대한 선언적 설명)

template/render

renderError



prop

[Prop 정의는 최대한 상세해야 합니다.] (필수)

상세한 prop 정의에는 두 가지 이점이 있습니다. 1. 컴포넌트의 API를 설명하므로 컴포넌트의 사용법을 쉽게 이해할 수 있습니다. 2. 개발 환경에서; , 구성 요소에 잘못된 형식의 prop을 제공하면 Vue가 오류의 잠재적 원인을 파악하는 데 도움이 되도록 경고합니다

//bad
Vue.component('TodoList', {})
Vue.component('TodoItem', {})
//good
components/
|- TodoList.vue
|- TodoItem.vue
로그인 후 복사

【prop를 선언할 때 이름 지정은 항상 camelCase를 사용해야 하며 템플릿과 JSX에서는 항상 kebab-case를 사용해야 합니다. (강력히 권장)

//bad
props: ['status']
//good
props: {
 status: String
}
//better
props: {
 status: {
 type: String,
 required: true
 }
}
로그인 후 복사

명령 및 기능

【항상 v-for와 함께 키 사용】(필수)

//bad
props: {'greeting-text': String}
<WelcomeMessage greetingText="hi"/>
//good
props: {greetingText: String}
<WelcomeMessage greeting-text="hi"/>
로그인 후 복사

【같은 요소에 v-if와 v-for를 동시에 사용하지 마세요】(필수 )

//bad
 <li v-for="todo in todos">
//good
 <li v-for="todo in todos":key="todo.id">
로그인 후 복사

[여러 기능을 가진 요소는 여러 줄로 작성해야 하며 각 기능마다 한 줄씩 작성해야 함] (강력히 권장)

//bad
<li v-for="user in users" v-if="user.isActive" :key="user.id" > {{ user.name }} <li>
//good
<li v-for="user in users" v-if="shouldShowUsers" :key="user.id" > {{ user.name }} <li>
로그인 후 복사

[요소 기능의 기본 순서] (권장)

1 정의(구성 요소에 대한 옵션 제공)

is


2. 목록 렌더링(동일한 요소의 여러 변형 생성)

v-for


3. 조건부 렌더링(요소가 렌더링/표시되는지 여부)

v-if

v-else- if

v-else
v-show
v-cloak


4. 렌더링 방법(요소의 렌더링 방법 변경)

v-pre

v-once



5. 글로벌 인식(구성 요소 이상의 지식 필요)

id


6. 고유 기능(고유한 값이 필요한 기능)

ref

key

slot


7. 양방향 바인딩(바인딩과 이벤트 결합)

v-model


8. 기능(모든 일반 바운드 또는 언바운드 기능)

9、事件 (组件事件监听器)

v-on

10、内容 (复写元素的内容)

v-html
v-text

属性

【私有属性名】(必要)

在插件、混入等扩展中始终为自定义的私有属性使用 $_ 前缀,并附带一个命名空间以回避和其它作者的冲突 (比如 $_yourPluginName_ )

//bad
 methods: {update: function () { }}
//bad
 methods: {_update: function () { } }
//bad
 methods: {$update: function () { }}
//bad
 methods: {$_update: function () { }}
//good
 methods: { $_myGreatMixin_update: function () { }}
로그인 후 복사

【组件的data必须是一个函数】(必要)

当在组件中使用 data 属性的时候 (除了 new Vue 外的任何地方),它的值必须是返回一个对象的函数

//bad
Vue.component('some-comp', {
 data: {
 foo: 'bar'
 }
})
//good
Vue.component('some-comp', {
 data: function () {
 return {
 foo: 'bar'
 }
 }
})
로그인 후 복사

【组件模板应该只包含简单的表达式,复杂的表达式则应该重构为计算属性或方法】(强烈推荐)

//bad
{{
 fullName.split(' ').map(function (word) {
 return word[0].toUpperCase() + word.slice(1)
 }).join(' ')
}}
//good
computed: {
 normalizedFullName: function () {
 return this.fullName.split(' ').map(function (word) {
 return word[0].toUpperCase() + word.slice(1)
 }).join(' ')
 }
}
로그인 후 복사

【应该把复杂计算属性分割为尽可能多的更简单的属性】(强烈推荐)

//bad
computed: {
 price: function () {
 var basePrice = this.manufactureCost / (1 - this.profitMargin)
 return (
 basePrice -
 basePrice * (this.discountPercent || 0)
 )
 }
}
//good
computed: {
 basePrice: function () {
 return this.manufactureCost / (1 - this.profitMargin)
 },
 discount: function () {
 return this.basePrice * (this.discountPercent || 0)
 },
 finalPrice: function () {
 return this.basePrice - this.discount
 }
}
로그인 후 복사

【当组件开始觉得密集或难以阅读时,在多个属性之间添加空行可以让其变得容易】(推荐)

//good
props: {
 value: {
 type: String,
 required: true
 },
 focused: {
 type: Boolean,
 default: false
 }
}
로그인 후 복사

谨慎使用

1、元素选择器应该避免在 scoped 中出现

在 scoped 样式中,类选择器比元素选择器更好,因为大量使用元素选择器是很慢的

//bad
<style scoped>
button {
 background-color: red;
}
</style>
//good
<style scoped>
.btn-close {
 background-color: red;
}
</style>
로그인 후 복사

2、应该优先通过 prop 和事件进行父子组件之间的通信,而不是 this.$parent 或改变 prop

3、应该优先通过 Vuex 管理全局状态,而不是通过  this.$root 或一个全局事件总线

4、如果一组 v-if +  v-else 的元素类型相同,最好使用  key (比如两个 

元素)

//bad
<p v-if="error">
 错误:{{ error }}
</p>
<p v-else>
 {{ results }}
</p>
//good
<p
 v-if="error"
 key="search-status"
>
 错误:{{ error }}
</p>
<p 
 v-else 
 key="search-results"
>
 {{ results }}
</p>
로그인 후 복사

相关推荐:

vue如何实现前进刷新后退不刷新

值得收藏的vue开发技巧实例

Vue header组件开发实例代码

위 내용은 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 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Quark Netdisk를 Baidu Netdisk에 공유하는 방법은 무엇입니까? Quark Netdisk를 Baidu Netdisk에 공유하는 방법은 무엇입니까? Mar 14, 2024 pm 04:40 PM

Quark Netdisk와 Baidu Netdisk는 매우 편리한 저장 도구입니다. 많은 사용자가 이 두 소프트웨어가 상호 운용 가능한지 묻고 있습니다. Quark Netdisk를 Baidu Netdisk에 공유하는 방법은 무엇입니까? 이 사이트에서는 Quark 네트워크 디스크 파일을 Baidu 네트워크 디스크에 저장하는 방법을 사용자에게 자세히 소개합니다. Quark Network Disk에서 Baidu Network Disk로 파일을 저장하는 방법 방법 1. Quark Network Disk에서 Baidu Network Disk로 파일을 전송하는 방법을 알고 싶다면 먼저 Quark Network Disk에 저장해야 하는 파일을 다운로드한 다음 엽니다. Baidu 네트워크 디스크 클라이언트에서 압축 파일을 저장할 폴더를 선택한 다음 두 번 클릭하여 폴더를 엽니다. 2. 폴더를 연 후 창 왼쪽 상단에 있는 "업로드"를 클릭하세요. 3. 컴퓨터에 업로드해야 하는 압축 파일을 찾아 클릭하여 선택합니다.

NetEase Cloud Music을 WeChat Moments에 공유하는 방법_NetEase Cloud Music을 WeChat Moments에 공유하는 방법에 대한 튜토리얼 NetEase Cloud Music을 WeChat Moments에 공유하는 방법_NetEase Cloud Music을 WeChat Moments에 공유하는 방법에 대한 튜토리얼 Mar 25, 2024 am 11:41 AM

1. 먼저 NetEase Cloud Music에 들어간 다음 소프트웨어 홈페이지 인터페이스를 클릭하여 노래 재생 인터페이스로 들어갑니다. 2. 그런 다음 노래 재생 인터페이스에서 아래 그림의 빨간색 상자에 표시된 것처럼 오른쪽 상단에서 공유 기능 버튼을 찾아 공유 채널에서 공유 채널을 선택하고 다음 위치에서 "공유 대상" 옵션을 클릭합니다. 하단에서 첫 번째 "WeChat Moments"를 선택하면 WeChat Moments에 콘텐츠를 공유할 수 있습니다.

Baidu Netdisk에서 친구들과 파일을 공유하는 방법 Baidu Netdisk에서 친구들과 파일을 공유하는 방법 Mar 25, 2024 pm 06:52 PM

최근 Baidu Netdisk Android 클라이언트는 새로운 버전 8.0.0을 선보였습니다. 이 버전은 많은 변화를 가져올 뿐만 아니라 많은 실용적인 기능도 추가했습니다. 그 중 가장 눈길을 끄는 것은 폴더 공유 기능 강화다. 이제 사용자는 쉽게 친구를 초대하여 업무와 생활에서 중요한 파일을 공유하고 더욱 편리하게 협업하고 공유할 수 있습니다. 그렇다면 친구들과 공유해야 하는 파일을 어떻게 공유합니까? 아래에서 이 사이트의 편집자가 자세한 소개를 해줄 것입니다. 1) Baidu Cloud 앱을 열고 먼저 홈페이지에서 관련 폴더를 클릭한 다음 인터페이스 오른쪽 상단에 있는 [...] 아이콘을 클릭합니다(아래 참조). 2) 그런 다음에서 [+]를 클릭합니다. "공유 멤버" 열 ]을 선택하고 마지막으로 모두 확인합니다.

win7 enterprise edition의 활성화 키는 무엇입니까? win7 enterprise edition의 활성화 키는 무엇입니까? Jul 09, 2023 pm 03:01 PM

win7 enterprise edition의 최신 활성화 키가 있습니까? 공식 win7 enterprise 버전을 설치하면 windows7 enterprise 제품 키로 활성화하라는 메시지가 표시됩니다. 그렇지 않으면 제대로 작동하지 않습니다. 따라서 편집자는 몇 가지 win7 엔터프라이즈 버전 활성화 비밀번호를 공유할 것입니다. 살펴보겠습니다. Q3VMJ-TMJ3M-99RF9-CVPJ3-Q7VF3KGMPT-GQ6XF-DM3VM-HW6PR-DX9G8MT39G-9HYXX-J3V3Q-RPXJB-RQ6D79JBBV-7Q7P7-CTDB7-KYBKG-X8HHCP72QK-2Y3B8-YDHDV-29DQB-QKWW M6JQ

망고tv 회원 계정공유 2023 망고tv 회원 계정공유 2023 Feb 07, 2024 pm 02:27 PM

Mango TV에는 다양한 유형의 영화, TV 시리즈, 예능 프로그램 및 기타 리소스가 있으며 사용자는 자유롭게 선택하여 시청할 수 있습니다. Mango TV 회원은 모든 VIP 드라마를 시청할 수 있을 뿐만 아니라 사용자가 드라마를 즐겁게 시청할 수 있도록 최고 화질을 설정할 수 있습니다. 아래에서 편집자는 사용자가 사용하고 서둘러 살펴볼 수 있도록 무료 Mango TV 멤버십 계정을 제공합니다. 구경하다. Mango TV 최신 회원 계정 무료 공유 2023: 참고: 이것은 최근 수집된 회원 계정이며 로그인하여 직접 사용할 수 있으며 비밀번호를 마음대로 변경하지 마십시오. 계좌번호: 13842025699 비밀번호: qds373 계좌번호: 15804882888 비밀번호: evr6982 계좌번호: 13330925667 비밀번호: jgqae 계좌번호: 1703

Discuz WeChat 공유가 표시되지 않는 문제 해결 Discuz WeChat 공유가 표시되지 않는 문제 해결 Mar 09, 2024 pm 03:39 PM

제목: Discuz WeChat 공유가 표시되지 않는 문제를 해결하려면 구체적인 코드 예제가 필요합니다. 모바일 인터넷의 발전으로 WeChat은 사람들의 일상생활에 없어서는 안될 부분이 되었습니다. 웹사이트 개발 시 사용자 경험을 개선하고 웹사이트 노출을 확대하기 위해 많은 웹사이트에 WeChat 공유 기능이 통합되어 사용자가 웹사이트 콘텐츠를 Moments 또는 WeChat 그룹에 쉽게 공유할 수 있습니다. 그러나 때때로 Discuz와 같은 오픈 소스 포럼 시스템을 사용할 때 WeChat 공유를 표시할 수 없는 문제가 발생하여 사용자 경험에 특정 어려움을 초래할 수 있습니다.

win7 시스템에서 Wi-Fi 핫스팟을 공유하는 방법 win7 시스템에서 Wi-Fi 핫스팟을 공유하는 방법 Jul 01, 2023 pm 01:53 PM

win7 시스템에서 Wi-Fi 핫스팟을 공유하는 방법은 무엇입니까? 컴퓨터가 네트워크에 연결된 후에는 무선 네트워크를 공유할 수도 있습니다. 많은 사용자는 컴퓨터의 네트워크를 휴대폰과 공유하여 사용하기를 원합니다. 많은 친구들이 자세한 작동 방법을 모릅니다. 아래 편집기는 win7 시스템에서 Wi-Fi 핫스팟을 공유하는 방법에 대한 단계를 정리했습니다. 관심이 있으시면 편집기를 따라가세요! win7 시스템에서 Wi-Fi 핫스팟을 공유하는 방법에 대한 단계 1. Wi-Fi 핫스팟을 켜려면 먼저 무선 네트워크 카드가 있어야 합니다. PC가 있는 경우 공유할 휴대용 Wi-Fi를 구입할 수 있습니다. 여기서는 설명하지 않겠습니다. 먼저 키보드의 Windows 키를 눌러 시작 메뉴를 엽니다.

HP 프린터 드라이버의 두 가지 설치 방법 공유 HP 프린터 드라이버의 두 가지 설치 방법 공유 Mar 13, 2024 pm 05:16 PM

HP 프린터는 많은 사무실에서 필수적인 인쇄 장비입니다. 컴퓨터에 프린터 드라이버를 설치하면 프린터가 연결되지 않는 등의 문제를 완벽하게 해결할 수 있습니다. 그렇다면 HP 프린터 드라이버를 설치하는 방법은 무엇입니까? 아래 편집기에서는 두 가지 HP 프린터 드라이버 설치 방법을 소개합니다. 첫 번째 방법: 공식 웹사이트에서 드라이버를 다운로드합니다. 1. 검색 엔진에서 HP China 공식 웹사이트를 검색하고 지원 열에서 [소프트웨어 및 드라이버]를 선택합니다. 2. [프린터] 카테고리를 선택하고 검색창에 프린터 모델을 입력한 후 [제출]을 클릭하여 프린터 드라이버를 찾으세요. 3. 컴퓨터 시스템에 따라 해당 프린터를 선택합니다. win10의 경우 win10 시스템용 드라이버를 선택합니다. 4. 다운로드가 성공적으로 완료되면 해당 폴더에서 찾아보세요.

See all articles