рд╣рдо Ptah рдЯреАрдо рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдПрд╕рдкреАрдП рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдЬрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рд▓реИрдВрдбрд┐рдВрдЧ рдкреГрд╖реНрда рдбрд┐рдЬрд╛рдЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ Vue рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдФрд░ рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВредрдпрд╣ рд▓реЗрдЦ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрднреА-рдЕрднреА Vue рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдмреЗрд╣рддрд░ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдореИрдВ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬреЛ рдЕрдХреНрд╕рд░ рдиреМрд╕рд┐рдЦрд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд╛рдВрдЫрдиреАрдп рд░реВрдк рд╕реЗ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВредрд░реЗрдВрдбрд░ рдХрд╛рд░реНрдп
рдХрдВрдкреЛрдиреЗрдВрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЙрди рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкреНрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рд╕рд░рд▓ рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд░реВрдкрд░реЗрдЦрд╛ рдореЗрдВ рдХрдо рдкреНрд░рд╡реЗрд╢ рд╕реАрдорд╛ рд╣реИред рддрд╛рд░реНрдХрд┐рдХ рдФрд░ рд╕реБрдВрджрд░ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП 90% рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдХрд░реЗрдВ рдпрджрд┐ рдЖрдк рд╢реЗрд╖ 10% рдореЗрдВ рд╣реИрдВ, рдФрд░ рдЖрдк рдПрдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдШрдЯрдХ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ? рд░реЗрдВрдбрд░ рдлрдВрдХреНрд╢рди рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛редрдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпрд╛ рд╣реИ:Vue.component('anchored-heading', {
render: function (createElement) {
return createElement(
'h' + this.level,
this.$slots.default
)
},
props: {
level: {
type: Number,
required: true
}
}
})
рдПрдВрдХрд░рд┐рдВрдЧ-рд╣реЗрдбрд┐рдВрдЧ
рдШрдЯрдХ рд╕реНрддрд░ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╢реАрд░реНрд╖рдХ рдЯреИрдЧ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ<anchored-heading :level="1">, !</anchored-heading>
рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛<h1>, !</h1>
рдпрджрд┐ рдЗрд╕ рдШрдЯрдХ рдХреЛ рдПрдХ рдорд╛рдирдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЗрд╕рдореЗрдВ 6 v-if рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреА рдЬреЛ рд╣реЗрдбрд░ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИрдВ:<h1 v-if="level === 1">
<slot></slot>
</h1>
<h2 v-if="level === 2">
<slot></slot>
</h2>
<h3 v-if="level === 3">
<slot></slot>
</h3>
<h4 v-if="level === 4">
<slot></slot>
</h4>
<h5 v-if="level === 5">
<slot></slot>
</h5>
<h6 v-if="level === 6">
<slot></slot>
</h6>
рдпрд╣ рдХрд╛рдо рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ?
рд░реЗрдВрдбрд░ рдореЗрдердб рджреЛ рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИред CreateElement рдХрд╛ рдкрд╣рд▓рд╛ рддрд░реНрдХ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ Vue рддрддреНрд╡ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рдореБрджрд╛рдп рдореЗрдВ, рдпрд╣ рдПрдХ рдкрддреНрд░ - рдПрдЪ рдХреЗ рд▓рд┐рдП createElement рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ ред рджреВрд╕рд░рд╛ рддрд░реНрдХ рд╣реИ рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрджрд░реНрдн рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП,ред createElement рддреАрди рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ:- рдмрдирд╛рдиреЗ рдХреА рд╡рд╕реНрддреБред рдпрд╣ рди рдХреЗрд╡рд▓ рдПрдХ HTML рдЯреИрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдШрдЯрдХ рдирд╛рдо рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рддрд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ;
- рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБред рдЗрд╕рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ, рд╢реИрд▓рд┐рдпреЛрдВ, рдШрдЯрдХ рдХреЗ рдЗрдирдкреБрдЯ рдЗрдирдкреБрдЯ, рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдЖрджрд┐ рдХреА рд╕реВрдЪреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВред рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реНрдХ;
- рдмрд╛рд▓ рдЖрднрд╛рд╕реА рдиреЛрдбреНрд╕ред рдпрд╣ рдпрд╛ рддреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдПрдХ рд╕рд░рдгреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ $ рд╣реИ ред
рд░реЗрдВрдбрд░ рдлрд╝рдВрдХреНрд╢рди рд╕рдмрд╕реЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Ptah рдореЗрдВ, рд╣рдореЗрдВ рдЕрдХреНрд╕рд░ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдбрд┐рдЬрд╛рдЗрдирд░ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрда рдХреЗ рдЕрдВрджрд░ рд╢реИрд▓реА рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, Vue рдЯреЗрдореНрдкрд▓реЗрдЯ рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рдЗрд╕ рдЯреИрдЧ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ ред рдПрдХ рдЫреЛрдЯреЗ рдЖрд╡рд░рдг рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реАрдорд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рд╣реЛ рдЬрд╛рддреА рд╣реИ:Vue.component('v-style', {
render: function (h) {
return h('style', this.$slots.default)
}
})
рдЕрдм рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЕрдВрджрд░, рд╕реНрдЯрд╛рдЗрд▓ рдЯреИрдЧ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рд╡реА-рд╕реНрдЯрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ редрдЗрд╕рд▓рд┐рдП, рдЬреИрд╕реЗ рд╣реА рдЖрдкрдХреЛ рдпрд╣ рд▓рдЧрдиреЗ рд▓рдЧреЗ рдХрд┐ Vue рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреА рдорд╛рдирдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИрдВ - рд░реЗрдВрдбрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВред рд╡реЗ рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдЬрдЯрд┐рд▓ рд▓рдЧрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЙрди рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЬреЗрдПрд╕ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИредmixins
рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрдИ рд╕рдорд╛рди рдШрдЯрдХ рд╣реИрдВ? рдорд┐рдХреНрд╕реА рдпрд╛ рдЕрд╢реБрджреНрдзрд┐рдпрд╛рдВ DRY рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЕрдиреБрдкрд╛рд▓рди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреА - рдорд┐рд╢реНрд░рдг рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдПрдХ рд╕рд╛рде рдХрдИ рдШрдЯрдХреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓реЗрддреЗ рд╣реИрдВред рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдорд╛рди рддрд░реНрдХ рд╡рд╛рд▓реЗ 2 рдШрдЯрдХ рд╣реИрдВ:export default {
name: 'TextElement',
data () {
return {
elementName: 'Text',
showEditor: false,
editor: null
}
},
methods: {
initEditor () {
this.showEditor = true
this.editor = new Editor(this.elementName)
}
}
}
export default {
name: 'ButtonElement',
data () {
return {
elementName: 'Button',
showEditor: false,
editor: null
}
},
methods: {
initEditor () {
this.showEditor = true
this.editor = new Editor(this.elementName)
}
}
}
рдШрдЯрдХ рдЕрд▓рдЧ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рддрд░реНрдХ рд╣реИред рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдирд┐рдпрдорд┐рдд js рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреА рд╣реЛрдЧреАред рдШрдЯрдХреЛрдВ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдЗрд╕реЗ рдорд┐рдХреНрд╕рд┐рдВрд╕ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд░рдЦрдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реЛрдЧрд╛ ред
export default {
data () {
return {
showEditor: false,
editor: null
}
},
methods: {
initEditor () {
this.showEditor = true
this.editor = new Editor(this.elementName)
}
}
}
import mixin from './mixins/mixin'
export default {
name: 'TextElement',
mixins: [mixin]
data () {
return {
elementName: 'Text',
}
},
}
import mixin from './mixins/mixin'
export default {
name: 'ButtonElement',
mixins: [mixin]
data () {
return {
elementName: 'Button'
}
}
}
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓рдЧрднрдЧ рд╕рднреА рддрд░реНрдХ рдорд┐рдХреНрд╕рд┐рди рдореЗрдВ рдЪрд▓реЗ рдЧрдПред рдШрдЯрдХреЛрдВ рдХреЗ рдЕрдВрджрд░ рдЕрд╢реБрджреНрдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЙрдирдХреЗ рд╕рднреА рд╡рд┐рдХрд▓реНрдк рд╡рд┐рд▓реАрди рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдФрд░ рдШрдЯрдХ рдореЗрдВ, рдЖрдк рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ initEditor () рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ , рдФрд░, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЕрд╢реБрджреНрдзрддрд╛ рдореЗрдВ, рдШрдЯрдХ рдХрд╛ рддрддреНрд╡рдирд╛рдо рдпрд╣рд╛рдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдорд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдШрдЯрдХ рд╕реЗ рдЧреБрдг рдкреВрд░реНрд╡рд╡рд░реНрддреАрддрд╛ рд▓реЗрдВрдЧреЗредрддреЛ, рдЕрд╢реБрджреНрдзрд┐рдпреЛрдВ рдХреЗ рд▓рд╛рдн рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ - рдпрд╣ рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдПрдХ рдХрдореА рд╣реИред рдпрд╣ рдЙрджрд╛рд╣рд░рдг рд╕рд┐рдВрдереЗрдЯрд┐рдХ рд╣реИ, рдмрд╕ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдШрдЯрдХ, рдЬреИрд╕реЗ рдХрд┐ Ptah рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП, рдХреЛрдб рдХреА рдПрдХ рд╕реМ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╣рдореЗрд╢рд╛ рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдиреЗ рдЗрд╕ рдХреЛрдб рдХреЛ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рд╡рд╣ рдШрдЯрдХ рдореЗрдВ рдорд┐рд╢реНрд░рдг рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдирджреЗрдЦреА рдХрд░рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рдорд╛рдЗрдирд╕ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ред рдореИрдВ рджреЛ рдЪреАрдЬреЛрдВ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ: рдЬреЗрдПрд╕рдбреАрдУрд╕реА рдореЗрдВ рдШрдЯрдХ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ рдФрд░ рдЕрд╢реБрджреНрдзрддрд╛ рд╕реЗ рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдЙрдкрд╕рд░реНрдЧ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЖрдк рдЯреАрдо рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рд╕реЗ рд╕рд╣рдордд рд╣реЛрдВрдЧреЗ)редрдкреНрд░рджрд╛рди / рдЗрдВрдЬреЗрдХреНрд╢рди
рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдпрд╣ рдЬреЛрдбрд╝реА рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдореВрд▓ рдШрдЯрдХ рд╕реЗ рдЗрд╕рдХреЗ рд╡рдВрд╢рдЬреЛрдВ рдХреЗ рд╕рдВрдкреВрд░реНрдг рдкрджрд╛рдиреБрдХреНрд░рдо рддрдХ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЗрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рд▓реЗрдЦрди рдЙрдиреНрд╣реЗрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ, рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ Vuex рдкрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрдирд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЕрднреА рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИредрдпрд╣ рдХрд╛рдо рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ?
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдореВрд▓ рдШрдЯрдХ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдЗрд╕рдХреЗ рд╡рдВрд╢рдЬ рдкрд░ рдкрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗред
export default {
provide: {
device: 'is-desktop'
}
}
рдЕрдм рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдмрдЪреНрдЪреЗ рдХреЗ рдШрдЯрдХ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
export default {
inject: ['device'],
created () {
console.log(this.device)
}
}
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рдЗрдирд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдкреНрд░рджрд╛рди / рдЗрдВрдЬреЗрдХреНрд╢рди рдмрдВрдбрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдирд╣реАрдВ рд╣реИ! рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдЦрд╛рдореА рдХреЛ Object.defineProperty рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рджрд░рдХрд┐рдирд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ :provide () {
let device = {}
Object.defineProperty(device, 'type', { enumerable: true, get: () => this.device })
return { device }
},
data () {
return {
device: 'is-desktop'
}
}
рдЕрдм рдмрджрд▓ рд░рд╣рд╛ рд╣реИ this.device рдорд╛рддрд╛-рдкрд┐рддрд╛ рдореЗрдВ рд╡рдВрд╢ рдореЗрдВ рднреА рдмрджрд▓ рдЬрд╛рдПрдЧрд╛редрдШрдЯрдХ рдореЗрдЯрд╛
рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрдм рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдб рдореЗрдВ рдХрд┐рд╕ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдорд╛рд░реЗ рд╕рдВрдкрд╛рджрдХ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдХрд╛рд░реНрдп рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рдХреА рд╕рд╢рд░реНрдд рдЦрдВрдб рдореЗрдВ FirstScreen, рджрд┐рдЦрд╛рдиреЗ рдХреЗ рдкрд╛рда, рд▓реЛрдЧреЛ, рдмрдЯрди рддрддреНрд╡реЛрдВ, рддреЛ рдЬреЛрдбрд╝рдиреЗ SocialIcons рдЗрди рддрддреНрд╡реЛрдВ рдХреЛ редрддреЛ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрдиреБрднрд╛рдЧ рдШрдЯрдХ рд╣реЛрдЧрд╛ рдЬреЛ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдФрд░ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП 4 рдШрдЯрдХ рд╕реНрд╡рдпрдВред рд╕рдВрд░рдЪрдирд╛ рд▓рдЧрднрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧреА:/ sections
-- FirstScreen.vue
/ elements
-- Text.vue
-- Logo.vue
-- Button.vue
-- SocialIcons.vue
рдлрд░реНрд╕реНрдЯрд╕реНрдХреНрд░реАрди
рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП , рдФрд░ рдлрд┐рд░ рд╢рд░реНрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рдирд╛рд╕рдордЭ рдирд┐рд░реНрдгрдп рд╣реЛрдЧрд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдФрд░ рдЕрджреНрднреБрдд рдЙрдкрдХрд░рдг рд╣реИ:<component :is="%componentName%"/>
рдХреЗ рд╕рд╛рде рдШрдЯрдХ рддрддреНрд╡ рд╣реИ : рд╡рд┐рд╢реЗрд╖рддрд╛ , рдЬреЛ рдмрд╕ рдШрдЯрдХ рдХрд╛ рдирд╛рдо рд▓рд┐рдЦрддрд╛ рд╣реИред рдФрд░ рдЙрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдорд╛рд░рд╛ рдХрд╛рдо рдмрд╕ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ:<script>
export default {
name: 'FirstScreen',
data () {
return {
elements: [
'Text',
'Logo',
'Button',
],
}
}
}
</script>
<template>
<div class="first-screen">
<component v-for="element in elements" :is="element"/>
</div>
</template>
рддрддреНрд╡реЛрдВ рдХреА
рд╕рд░рдгреА рдореЗрдВ, рд╣рдордиреЗ рдШрдЯрдХреЛрдВ рдХреЗ рдирд╛рдо рд▓рд┐рдЦреЗ рдФрд░ рдлрд╝рд░реНрд╕реНрдЯрд╕реНрдХреНрд░реАрди рд╕реНрдХреНрд░реАрди рдХреЗ рдЕрдВрджрд░ рдПрдХ рд▓реВрдк рдореЗрдВ рдЗрди рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд┐рдпрд╛ ред рдЕрдм, рд╣рдорд╛рд░реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЖрдЗрдХрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рддрддреНрд╡ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдмрд╕ рдЗрд╕ ред