рдирдорд╕реНрдХрд╛рд░, рд╣реЗрдмреНрд░! рджреВрд╕рд░реЗ рджрд┐рди рдореИрдВ рдкреБрд░реНрддрдЧрд╛рд▓реА рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рд▓реЗрдЦ рд▓реЗрдХрд░ рдЖрдпрд╛ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдо рдЗрд╕рдХрд╛ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдВрд╕реНрдХрд░рдг рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред рдореИрдВ рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдореЗрдВ рд░реВрд╕реА рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рд▓рд╛рддрд╛ рд╣реВрдВред рдЖрдк рдореЗрд░реЗ рдкреЗрдЬ рдкрд░ рдореЗрд░реЗ рдЕрдиреНрдп рдЕрдиреБрд╡рд╛рдж рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдореВрд▓ рд▓рд┐рдВрдХ:
рдкреБрд░реНрддрдЧрд╛рд▓реА ,
рдЕрдВрдЧреНрд░реЗрдЬреАрдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╡рд┐рд╖рдп рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред рд╕реНрдЯрд╛рдЗрд▓-рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕, рд░рд┐рдПрдХреНрдЯ рдФрд░ Ract- рджреЗрд╢реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмреАрдЪ рдПрдХ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рд╕реАрдзреЗ рдЬреЗрдПрд╕ рдореЗрдВ рдХрд╕реНрдЯрдо рд╕реАрдПрд╕рдПрд╕ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
Vue рдореЗрдВ, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рдВрдЧрд▓-рдлрд╛рдЗрд▓ рдШрдЯрдХреЛрдВ (SFC) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдПрдХрддреНрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред SFC рдкреИрдЯрд░реНрди рдиреЗ Vue рдХреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдореЗрдВ рдХрд╛рдлреА рд╡реГрджреНрдзрд┐ рдХреА рд╣реИред
рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рдорд╣реАрдиреЛрдВ рдореЗрдВ рдореБрдЭреЗ рд░рд┐рдПрдХреНрдЯ рдкрд░ рдПрдХ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рд╛ред рд╣рдордиреЗ рдЗрд╕рдореЗрдВ рд╕реНрдЯрд╛рдЗрд▓-рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛, рдФрд░ рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рдЕрдиреБрднрд╡ рдерд╛ред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореЗрд░реА рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдореИрдВ Vue рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реИ рдХрд┐ рдореИрдВ рд╕реНрдЯрд╛рдЗрд▓-рдХрдВрдкреЛрдиреЗрдВрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдирдП рдЕрдиреБрднрд╡ рдФрд░ Vue.js рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рд▓рд╛рднреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдпрд╣ рддрдм рдерд╛ рдЬрдм рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИ рдФрд░ рдЙрд╕реА рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд░рд┐рдПрдХреНрдЯ рдХреЗ рддрд╣рдд рдПрдХ рд╣реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИ:
vue- рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ ред
рд╢реБрд░реБрдЖрдд
рдЦрд╛рд▓реА рдЪреИрдЯрд░ рдХреЛ рдЕрд▓рдЧ рд░рдЦреЗрдВ рдФрд░ рдХреЛрдб рдкрд░ рдЬрд╛рдПрдВред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдпрд╛рд░реНрди рдпрд╛ рдПрдирдкреАрдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
// for yarn yarn add vue-styled-components // for npm npm install --save vue-styled-components
рдореЗрд░реЗ
рдЧрд┐рддреБрдм рдкрд░ рдЖрдкрдХреЛ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рднрдВрдбрд╛рд░ рдорд┐рд▓реЗрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдШрдЯрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╛ рдЕрдиреНрдп рдШрдЯрдХреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ рд╡реАрдпреВ рд╕реНрдЯрд╛рдЗрд▓ рдШрдЯрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдорд╛рд░рд╛ рдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдг рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдмрдЯрди рд╣реИред
import styled from "vue-styled-components"; const CButton = styled.button` font-size: 1em; text-align: center; color: #FFFFFF; border-radius: 5px; padding: 10px 15px; background-color: #0057AA; `; export default CButton;
рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдХрд╣реАрдВ рднреА рд╣рдо рдЗрд╕ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
import CButton from '@/components/elements/Button' export default { name: 'app', components: { CButton }, }
рдкрд╛рд╕рд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░
Vue- рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдореЗрдВ, рдЖрдк рдЧреБрдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдХреЗ рдПрдХ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдмрдЯрди рдХреЛ рдПрдХ рдирдИ рдкреГрд╖реНрдарднреВрдорд┐ рд╢реИрд▓реА рдФрд░ рдлрд╝реЙрдиреНрдЯ рд░рдВрдЧ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред
import styled from "vue-styled-components"; const typeButton = { primary: Boolean }; const CButtonProps = styled('button', typeButton)` font-size: 1em; text-align: center; color: ${props => props.primary ? '#0057AA' : '#FFFFFF'}; border-radius: 5px; padding: 10px 15px; background-color: ${props => props.primary ? '#FFFFFF' : '#0057AA'}; `; export default CButtonProps;
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдирдП рдЧреБрдгреЛрдВ рдХреЛ рднреА рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЖрдк рдЬрд┐рддрдиреА рдЪрд╛рд╣реЗрдВ рдЙрддрдиреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рд╕рдм рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рднреАрддрд░ рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЪрд▓рддрд╛ рд╣реИред
рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдорджрдж рд╕реЗ рд╣рдореЗрдВ рддрд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рддрд╛ рд╣реИред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рдЪреБрдирдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕ рд░рдВрдЧ рдпреЛрдЬрдирд╛ рдХреЛ рджреВрд╕рд░реЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдЕрдкрдиреЗ рдмрдЯрди рдкрд░ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдореЗрдВ рд╡рд┐рд╡рд┐рдзрддрд╛ рдЖрдПред
import styled from "vue-styled-components"; const typeButton = { type: String, radius: Boolean }; const styleButton = type => { switch (type) { case "primary": return ` background-color: #FFFFFF; color: #0057AA; `; case "error": return ` background-color: #B4000B; color: #FDFDFD; `; case "success": return ` background-color: #00C887; color: #37435F; `; default: return ` background-color: #0057AA; color: #FFFFFF; `; } } const CButtonPropsCond = styled('button', typeButton)` font-size: 1em; text-align: center; padding: 10px 15px; border-radius: ${({ radius }) => radius ? "6px" : null}; ${(props) => styleButton(props.type)} `; export default CButtonPropsCond;
рдЗрд╕ рдмрдЯрди рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП: рд╣рдо рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ (рд╣рдореЗрд╢рд╛) рд╡реАрдпреВ-рд╕реНрдЯрд╛рдЗрд▓-рдШрдЯрдХреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рдареАрдХ рдЙрд╕рдХреЗ рдмрд╛рдж (рдкрдВрдХреНрддрд┐ 3 рд╕реЗ рд▓рд╛рдЗрди 6 рддрдХ) рд╣рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдШрдЯрдХ рдХреЛ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкрдВрдХреНрддрд┐ 8 рд╕реЗ 31 рддрдХ, рд╣рдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рд▓реЗрддрд╛ рд╣реИ, рдЬреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЙрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдпрд╣ рдкреГрд╖реНрдарднреВрдорд┐ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред рд░рдВрдЧ рдФрд░ рдЙрдирдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рд░рдВрдЧ, рдпрджрд┐ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рднреА рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмрдЯрди рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╕реМрдВрдкрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕ рдЬреНрдЮрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдк рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рдХрд╕реНрдЯрдо рдШрдЯрдХ рдХреЛ рдмрд╣реБрдд рдЧрддрд┐рд╢реАрд▓ рдмрдирд╛ рджреЗрдЧрд╛ред
рдореИрдВрдиреЗ рдЗрди рдЫреЛрдЯреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдЕрдкрдиреЗ GitHub рдореЗрдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рддрд╛рдХрд┐ рдЖрдк рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрджрдо рдЙрдард╛ рд╕рдХреЗрдВред рдЗрд╕рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ ред