Vue рдореЗрдВ рд╕реНрд▓реЙрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрддреНрдкрд╛рдж рд╕реНрдирд┐рдкреЗрдЯ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рдЬрдм SSR (рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд░реЗрдВрдбрд░рд┐рдВрдЧ) рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдХрд┐ рдХреБрдЫ рдХрд╛рд░реНрдп рдпрд╛ рддрд░реНрдХ рд╕реНрдереИрддрд┐рдХ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рджреЛ рдмрд╛рд░ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ рдЬреЛ рдмреИрдХрдПрдВрдб рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреБрдП рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдПред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдЙрддреНрдкрд╛рдж рд╕реНрдирд┐рдкреЗрдЯ рдШрдЯрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рд╣реИрдВ:

  • рдпрд╣ рдПрд╕рдИрдУ рдФрд░ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдмреИрдХрдПрдВрдб рд╕реЗ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдпрдорд┐рдд Vue рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, v-bind рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХреНрд▓рд┐рдХ рдЗрд╡реЗрдВрдЯреНрд╕ рд╕рдВрд▓рдЧреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЖрджрд┐ред
  • рдЗрд╕реЗ рдЦрд░реАрдж рдмрдЯрди рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП
  • "рдЦрд░реАрджреЗрдВ" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рдкреНрд░реАрд▓реЛрдбрд░ рдХреЛ рдЯреЛрдХрд░реА рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рдПрдХ рд╕рдорд╛рдзрд╛рди:

  1. рд╕реНрдереИрддрд┐рдХ рд╕реНрдирд┐рдкреЗрдЯ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рд▓рд┐рдЦрд┐рдП, рдХреНрд▓рд┐рдХ рдХреА рдЧрдИ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░, рдЦрд░реАрджреЗрдВ рдмрдЯрди рдкрд░ рд▓реЛрдб рдХрдХреНрд╖рд╛рдПрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдирд┐рдХрд╛рд▓реЗрдВ
  2. Vue рдкрд░ рдЕрд▓рдЧ рд╕реЗ рдПрдХ рдШрдЯрдХ рд▓рд┐рдЦреЗрдВ рдЬреЛ рд╕рдорд╛рди рддрд░реНрдХ рдХреЛ рдХреЗрд╡рд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ
  3. рдмреИрдХреЗрдВрдб рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдЖрдЗрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рджреВрд╕рд░рд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рд╛рдЬреНрдп рдпрд╛ рдЕрдЬрд╛рдХреНрд╕ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╕реНрд╡рдЪреНрдЫ рдбреЗрдЯрд╛ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдо рджреЛ рд▓реЙрдЬрд┐рдХ рд▓рд┐рдЦреЗрдВрдЧреЗ, рдПрдХ рд╕реАрдзреЗ DOM рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛, рджреВрд╕рд░рд╛ рд╢реБрджреНрдз рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рдеред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╕реНрд▓реЙрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рд╛рдордЧреНрд░реА рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛, рдЬрд┐рд╕рдореЗрдВ рдЧрддрд┐рд╢реАрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА, рдпрджрд┐ рдШрдЯрдХ рдХреЛ рдЗрдирд▓рд╛рдЗрди-рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрди рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмреИрдХрдПрдВрдб рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЖрдЗрдП рдПрдХ рдРрд╕рд╛ рдШрдЯрдХ рд▓рд┐рдЦреЗрдВ, рдЬреЛ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдФрд░ рдЧрддрд┐рдХреА рджреЛрдиреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХреЗ:

рдШрдЯрдХ рд╕реВрдЪреА
<template> <div> <!--   image   ,       --> <slot name="image"> <!--    --> <a :href="url" class="snippet__image"> <img :src="image"> </a> </slot> <slot name="title"> <a :href="url" class="snippet__title">{{ title }}</a> </slot> <div v-if="!inCart" @click="add" :class="{ 'snippet__buy--load': load }" class="snippet__control" > <slot name="button"> <div class="snippet__button"></div> </slot> </div> <div v-if="inCart" class="snippet__control"> <div class="snippet__button"></div> </div> <div v-if="load" class="snippet__load"></div> </div> </template> <script> //  vuex     import { mapState, mapActions } from 'vuex' export default { props: { id: { type: Number, required: true }, url: { type: String }, image: { type: String }, title: { type: String } }, data() { return { //   load: false, //     inCart: false, } }, computed: { ...mapState({ //     cartItems: ({cart}) => cart.items }), }, mounted() { this.$nextTick(() => { //      this.inCart = this.cartItems.some(item => item.id === this.id) }) }, methods: { ...mapActions([ //     'addToCart' ]), add() { //    this.load = true //   this.addToCart({ id: this.id }) } }, watch: { //      cartItems(items) { //    this.load = false //      this.inCart = items.some(item => item.id === this.id) } } } </script> 


рдмреИрдХрдПрдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:

 <snippet :id="1" class="snippet"> <a slot="image" href="#" class="snippet__image"> <img src="photo.jpg"> </a> <a slot="title" href="#" class="snippet__title"> 1</a> <div slot="button" class="snippet__button"></div> </snippet> 

рдЕрдиреНрдп рдШрдЯрдХреЛрдВ рдореЗрдВ рдПрдХ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:

 <catalog-list> <snippet v-for="item in items" :key="item.id" v-bind="item"></snippet> </catalog-list> 

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдШрдЯрдХ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреА рд░рд╛рдп рд╕реБрдирдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рд╢рд╛рдпрдж рдПрдХ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реИред

Source: https://habr.com/ru/post/hi422465/


All Articles