рдХрдИ рдЧреБрдг рдпрд╛ рд╕рдВрдкрддреНрддрд┐-рд╡рд╕реНрддреБ: рдЪрдпрди рдорд╛рдирджрдВрдб



рдХрдИ рдЧреБрдг рдпрд╛ рд╕рдВрдкрддреНрддрд┐-рд╡рд╕реНрддреБ: рдЪрдпрди рдорд╛рдирджрдВрдб


Vue рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдШрдЯрдХреЛрдВ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреА рд╢рд░реНрддреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдХрд┐рд╕реА рднреА рдШрдЯрдХ рдХреЗ рдкреНрд░рдореБрдЦ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЗрд╕рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред Vue рдореЗрдВ, рдкрд╛рд░рд┐рдд рдЧреБрдг рдПрдХ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ, рдпрджрд┐ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ, рдШрдЯрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред


рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╣рд╛рдВ рдПрдХ рдШрдЯрдХ рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред


рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ


рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рддрд░реАрдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдкрд░рдорд╛рдгреБ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рдирд╛ рд╣реИред рдЖрдЗрдП рдПрдХ рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдШрдЯрдХ рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВ:


рдЯреЗрдореНрдкрд▓реЗрдЯ


<template> <div> <div>First name: {{ firstName }}</div> <div>Last name: {{ lastName }}</div> <div>Birth year: {{ birthYear }}</div> </div> </template> 

рд▓рд┐рдкрд┐


 const MIN_BIRTH_YEAR = 1900 export default { name: 'PersonInfo', props: { firstName: { type: String, required: true, validator: firstName => firstName !== '' }, lastName: { type: String, required: true, validator: lastName => lastName !== '' }, birthYear: { type: Number, required: true, validator: year => year > MIN_BIRTH_YEAR && year < new Date().getFullYear() } } } 

рдЖрдЗрдП рдЗрд╕ рдШрдЯрдХ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рджреЗрдЦреЗрдВред


  <!-- Other part of html template--> <PersonInfo first-name="Jill" last-name="Smith" :birth-year="2000" /> <!-- Other part of html template--> 

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ


рд▓рд╛рдн


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

 props: { firstName: { type: String, required: true, }, lastName: { type: String, required: true, }, birthYear: { type: Number, required: true, validator: year => year > MIN_BIRTH_YEAR && year < new Date().getFullYear() }, city: { type: String, default: 'New York' } } 

рдХрдорд┐рдпреЛрдВ


  • рдореВрд▓ рдШрдЯрдХ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдХреНрд░рд┐рдпрд╛ рдХреЛрдб, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддрдм рдЬрдм рдбреЗрдЯрд╛ рдХрд┐рд╕реА рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг:

  <!-- Other part of html template--> <PersonInfo :first-name="person.firstName" :last-name="person.lastName" :birth-year="person.birthYear" /> <!-- Other part of html template--> 

  • рдЧреБрдгреЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдХреНрд░рд┐рдпрд╛ (рд╡рд╕реНрддреБ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдореЗрдВ)

рд╡рд╕реНрддреБ рд╕рдВрдкрддреНрддрд┐


рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрдм рдкрд░рдорд╛рдгреБ рдбреЗрдЯрд╛ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдРрд╕рд╛ рдбреЗрдЯрд╛ рдПрдХ person рд╡рд╕реНрддреБ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:


рдЯреЗрдореНрдкрд▓реЗрдЯ


 <template> <div> <div>First name: {{ person.firstName }}</div> <div>Last name: {{ person.lastName }}</div> <div>Birth year: {{ person.birthYear }}</div> </div> </template> 

рд▓рд┐рдкрд┐


 import quartet from 'quartet' // npm validation package const v = quartet() const MIN_BIRTH_YEAR = 1900 export default { name: 'PersonInfo', props: { person: { type: Object, required: true, validator: v({ firstName: 'string', lastName: 'string', birthYear: v.and( 'safe-integer', v.min(MIN_BIRTH_YEAR), v.max(new Date().getFullYear()) ) }) } } } 

рдЖрдЗрдП рджреЗрдЦреЗрдВ:


  <!-- Other part of html template--> <PersonInfo :person="person"/> <!-- or (bad) --> <PersonInfo :person="{ firstName: 'Jill', lastName: 'Smith', birthYear: 2000 }"/> <!-- Other part of html template--> 

рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ


рд▓рд╛рдн


  • рдореВрд▓ рдШрдЯрдХ рдореЗрдВ рдХреЛрдб рдЫреЛрдЯрд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ
  • рдпрджрд┐ рдХреЛрдИ рдирд┐рд╢реНрдЪрд┐рдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬреЛ рдирд╣реАрдВ рдмрджрд▓рддреА рд╣реИ, рддреЛ рдХреЛрдб рдХрдо рдирд┐рд░рд░реНрдердХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ

рдХрдорд┐рдпреЛрдВ


  • рд╕рднреА рдореВрд▓реНрдп рдПрдХ рд╡рд╕реНрддреБ рд╕реЗ рдмрдВрдзреЗ рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рдорд╛рди рдЕрдорд╛рдиреНрдп рд╣реИ - рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рд╕рдВрдкреВрд░реНрдг рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрдорд╛рдиреНрдп рд╣реИ
  • рдореВрд▓ рдШрдЯрдХ рдореЗрдВ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп: рдкреНрд░реЗрд╖рд┐рдд рдбреЗрдЯрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдореВрд░реНрдд рдХреЗ рдкреАрдЫреЗ рдЫрд┐рдкреА рд╣реБрдИ рд╣реИ
  • рдШрдЯрдХ рдореЗрдВ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдХрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрддрд░
  • рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдВрджрд░ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдирдП рд╡реИрдХрд▓реНрдкрд┐рдХ рдЧреБрдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ (рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ)
  • рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдЙрд╕реА рд╕реАрдорд╛ рддрдХ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рддреНрдпрд╛рдкрди рдЙрдкрдХрд░рдг (рдЬреИрд╕реЗ quartet рд╕рддреНрдпрд╛рдкрди рдкреБрд╕реНрддрдХрд╛рд▓рдп) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдирд┐рд╖реНрдХрд░реНрд╖


рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдЖрдпрд╛:


  • рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдзрд┐рдХ рд╢реНрд░реЗрдпрд╕реНрдХрд░ рд╣реИред
  • рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ рдЬрдм рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реИрдХрд▓реНрдкрд┐рдХ рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рднрд░рдирд╛ рдирд╣реАрдВ рд╣реИред

рдкреАред рдПрд╕


рдореБрдЭреЗ рдЖрдкрдХреЗ рдЪрдпрди рдорд╛рдирджрдВрдб рдЬрд╛рдирдХрд░ рдЦреБрд╢реА рд╣реЛрдЧреАред рдЖрдк рдХрд┐рд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреНрдпреЛрдВ? рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рд╣реИред рдХреНрдпрд╛ рдЖрдк рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдФрд░ рдЙрдирдХреЗ рдФрдЪрд┐рддреНрдп рдХреЛ рдЬрд╛рди рд╕рдХрддрд╛ рд╣реИ? рдЖрдкрдХреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред


рдЕрдкрдбреЗрдЯ 19:26, 01/16/2019


рдПрдХ рддреАрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рднреА рд╣реИ, c v-bindред рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ рдЪрд░реНрдЪрд╛

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


All Articles