
рдкреБрдП рдорд┐рдХреНрд╕рд┐рди рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрд╢рдВрд╕рд┐рдд рддрд░реАрдХрд╛ рд╣реИред рд╡реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдареАрдХ рд╣реИрдВ рдЬрдм рддрдХ рдЖрдк рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдбрд┐рдЬрд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдирд┐рд╣рд┐рдд рд╣реИрдВ рдФрд░ рдЖрдкрдХреЗ рдШрдЯрдХ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдкреНрд░рджреВрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЖрдЗрдП рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЧрд╡рд╛рд╣реА рджреЗрдХрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред
рд▓рдХреНрд╖реНрдп
рд╣рдо рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдорд┐рдХреНрд╕рд┐рди рд░рдЦрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдЬреЛ рдХрд┐рд╕реА рднреА рдШрдЯрдХ рдХреЛ рдПрдХ types
рдирд╛рдо рджреЗрддрд╛ рд╣реИ рдФрд░ рд╕реАрдПрд╕рдПрд╕ рд╡рд░реНрдЧреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ baseClass
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ baseClass
рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
рдЗрд╕ рдорд╛рд░реНрдХрдЕрдк рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП:
<SampleComponent :types="['active', 'block']"></SampleComponent>
рд╣рдо рдпрд╣ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░реЗрдВрдЧреЗ (рд╣рдорд╛рд░рд╛ baseClass
sample-component
)
<div class="sample-component sample-component--active sample-component--block"></div>
рднреЛрд▓рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг
рдХреЗрд╡рд▓ Vue рдкреНрд░рд▓реЗрдЦрди рдкрдврд╝рдиреЗ рд╕реЗ рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рд╕рд┐рд░реНрдл рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдВрдкрддреНрддрд┐ рдорд░реНрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдШрдЯрдХ рдореЗрдВ рдЧрдгрдирд╛ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ mods
рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред
// SampleComponent.vue <template> <div class="sample-component" :class="mods"><slot /></div> </template>
import bemMods from 'bemMods.js'; export default { name: 'SampleComponent', mixins: [ bemMods('sample-component') ] }
рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдЧреНрд░рд╕реНрдд рд╣реИ:
- рд╣рд░ рдШрдЯрдХ рдореЗрдВ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдбред (рдХрдо рд╕реЗ рдХрдо рд╡реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ)
baseClass
рддрд░реНрдХ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ред- рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реИ рдХрд┐
mods
рд╕рдВрдкрддреНрддрд┐ рдХрд╣рд╛рдВ рд╕реЗ рдЖрдИ рд╣реИред - рдирд╛рдо рд╕рдВрдШрд░реНрд╖ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрднрд╡ рд╣реИред
рд╣рдо рдЕрдЧрд▓реЗ рдЪрд░рдг рдореЗрдВ рдЗрди рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред
рдПрдХ рд╕реНрдкрд╖реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд╕рд╛рде рдорд┐рдХреНрд╕рд┐рди
Vue рдореЗрдВ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рддрдВрддреНрд░ рд╣реИ, рдЬрд┐рд╕реЗ Inject \ Prov рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рджреВрд╖рдг рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдкрд╣рд▓реЗ, рдЪрд▓реЛ рдПрдХ рд╕рд░рд▓ рдорд┐рдХреНрд╕рд┐рди рд╕реЗ рдПрдХ рдкреНрд▓рдЧрдЗрди рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдмрд╛рдж рдореЗрдВ рдирд╛рдо рд╕рдВрдШрд░реНрд╖ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рджреВрд╕рд░реА рдмрд╛рдд, рд╣рдо рдЕрдкрдиреЗ рдШрдЯрдХ рдХреЗ рдирд╛рдо рдХреЛ baseClass
рд░реВрдк рдореЗрдВ рдкреБрдирдГ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рд░ рдПрдХ рдШрдЯрдХ рдореЗрдВ рдПрдХ рдХрд╕реНрдЯрдо рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдФрд░ рдЕрдВрдд рдореЗрдВ рд╣рдо baseClass
рдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ, рдпрджрд┐ рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдХрд╛ baseClass
рдЗрд╕рдХреЗ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИред
рдЕрдм рд╣рдо рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдЕрдкрдирд╛ рдкреНрд▓рдЧрдЗрди рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред
import Vue from 'vue'; import bemMods from 'bemMods.js'; Vue.use(bemMods);
рд╣рдо рдпрд╣ рднреА рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╡рд╕реНрддреБ рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рд╣рдорд╛рд░реЗ рдкреНрд░реЙрдкреНрд╕ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
import Vue from 'vue'; import bemMods from 'bemMods.js'; Vue.use(bemMods, { propName: 'modifiers', modsName: 'classes' });
рдФрд░ рдпрд╣рд╛рдБ рдХреИрд╕реЗ рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдорд┐рд╢реНрд░рдг refactoring рдХреЗ рдмрд╛рдж рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рд╣реИ:
<template> <div class="sample-component" :class="mods"><slot /></div> </template>
export default { name: 'SampleComponent',
рдЖрдЗрдП рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдХрд╛ name
рдирд╣реАрдВ рд╣реИ рдпрд╛ рдЙрд╕рдХреЗ name
рд╕реЗ рдЕрд▓рдЧ baseClass
рд╣реИ:
<template> <div class="special-component" :class="mods('snowflake')"><slot /></div> </template>
export default { name: 'SpecialComponent', inject: ['mods'] }
рдпрд╛ рдпрджрд┐ рд╣рдо рдПрдХ рд░рд┐рдлрд▓реЗрдХреНрдЯрд░рд┐рдВрдЧ рдпрд╛ рдкреНрд▓рдЧрдЗрди рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
export default { name: 'SomeComponent', inject: {
рдЖрдк рдирд╛рдо рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Symbol
рдЙрдкрдпреЛрдЧ рдПрдХ mods рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рд╣рд░ рдПрдХ рдШрдЯрдХ рдореЗрдВ рдЙрд╕ рдкреНрд░рддреАрдХ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд╣рд╛рдБ рдЖрдк bemMods
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рд╣рдордиреЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдк рдирд╛рдо рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдореБрдЦреНрдп рдорд┐рд╢реНрд░рдг рд╕реАрдорд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдПрдХ рдкреНрд▓рдЧрдЗрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдХрд╕реНрдЯрдо рдкреНрд░реЛрдк рдирд╛рдо рдХреЗ рд╕рд╛рде рдкрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИред
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдерд╛ рдФрд░ рдЖрдкрдХреЛ Vue рдХреЗ рд▓рд┐рдП рдорд┐рдХреНрд╕рд┐рдиреНрд╕ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИред