рдпрд╣рд╛рдБ BEM рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдмреНрд░рд╣реНрдорд╛рдВрдб рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдХрд╣рд╛рдиреА рд╣реИред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝реА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рд╛рдордЧреНрд░реА рдпреИрдВрдбреЗрдХреНрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдЕрдиреБрднрд╡ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдЬреЛ рд░реВрд╕ рдореЗрдВ рд╕рдмрд╕реЗ рдмрдбрд╝реА рдФрд░ рд╕рдмрд╕реЗ рднрд░реА рд╣реБрдИ рд╕реЗрд╡рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ - Yandex.Searchред рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХрднреА рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдирд╣реАрдВ рдХреА рдФрд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдмрддрд╛рдпрд╛ рдХрд┐ рд╣рдордиреЗ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛, рдФрд░ рдЕрдиреНрдпрдерд╛ рдирд╣реАрдВ, рд╣рдореЗрдВ рдХреНрдпрд╛ рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рдереЗред рдмрд╛рд╣рд░реА рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рдореНрдореЗрд▓рдиреЛрдВ рдореЗрдВ рд╕реВрдЦрд╛ рд░рд┐рд▓реАрдЬ рдФрд░ рд╕рдореАрдХреНрд╖рд╛ рдорд┐рд▓реАред рдХреЗрд╡рд▓ рдХрд┐рдирд╛рд░реЗ рдкрд░ рдХреЛрдИ рдРрд╕рд╛ рдХреБрдЫ рд╕реБрди рд╕рдХрддрд╛ рдерд╛ред рд╕рд╣-рд▓реЗрдЦрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рдерд╛, рддреЛ рдмрд╛рд╣рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рдореИрдВ рдирд╛рд░рд╛рдЬ рдерд╛ред рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░ рд╣рдо рд╕рднреА рд╡рд┐рд╡рд░рдг рд╕рд╛рдЭрд╛ рдХрд░реЗрдВрдЧреЗред

рдмреАрдИрдПрдо рдкрджреНрдзрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдиреЗ рд╕реБрдирд╛ рд╣реИред рд╕реАрдПрд╕рдПрд╕ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЗ рд╕рд╛рдеред рдШрдЯрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА, рд╕реАрдПрд╕рдПрд╕ рд╕реАрдПрд╕рдПрд╕ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдПред рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдореЗрдВ CSS рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╢рдмреНрдж рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдХреЗрд╡рд▓ рдЬреЗрдПрд╕, рдХреЗрд╡рд▓ рдХрдЯреНрдЯрд░!
рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдХреНрдпреЛрдВ рджрд┐рдЦрд╛рдИ рджреА рдФрд░ рдпрд╛рдВрдбреЗрдХреНрд╕ рдиреЗ рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛, рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдмреАрдИрдПрдо рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рд╕реЗ рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░реЗрдВ ред
рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛
рдмреАрдИрдПрдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдордЬрдмреВрдд рдХрдиреЗрдХреНрдЯрд┐рд╡рд┐рдЯреА рдФрд░ рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ рдШреЛрдВрд╕рд▓реЗ рд╕реЗ рдореБрдХреНрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдкреИрджрд╛ рд╣реБрдЖ рдерд╛ред рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ, рддрддреНрд╡ рдпрд╛ рд╕рдВрд╢реЛрдзрдХ рдХреЗ рд▓рд┐рдП рдлрд╛рдЗрд▓ рдореЗрдВ style.css
рд╢реАрдЯ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЗ рд╕рдорд╛рди рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ред
2011 рдореЗрдВ, рдУрдкрди рд╕реЛрд░реНрд╕ рдиреЗ i-bem.js
рдХрд╛ рдкрд╣рд▓рд╛ рдХрдорд┐рдЯ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛, рдЬреЛ bem-xjst
рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ред рджреЛрдиреЛрдВ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпрд╛рдВ XSLT рд╕реЗ рдЖрдЧреЗ рдмрдврд╝реАрдВ рдФрд░ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдФрд░ рдШрдЯрдХ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рддрддреНрдХрд╛рд▓реАрди рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рдЪрд╛рд░ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ред рдмрд╛рд╣рд░ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдпреЗ рд╣реИрдВрдбрд▓рдмрд╛рд░реНрд╕ рдФрд░ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЗ рдорд╣рд╛рди рд╕рдордп рдереЗред
bem-xjst
рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рд╣реИред рдорд╛рдирдХреАрдХрд░рдг рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕рд░реНрдЧреЗрдИ рдмреЗрд░реЗрдЬрд╝реНрдиреЙрдп рдХреА рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВред bem-xjst
рдСрдирд▓рд╛рдЗрди рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореЗрдВ bem-xjst
рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди bem-xjst
рд╕рдХрддреЗ рд╣реИрдВ ред
рдпрд╛рдВрдбреЗрдХреНрд╕ рдЦреЛрдЬ рд╕реЗрд╡рд╛рдУрдВ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдо рдкреГрд╖реНрда рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╡реЗрд░реА рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рд╣реИред

рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬ рдХреНрд╡реЗрд░реА

рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬ рдХреНрд╡реЗрд░реА

рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬ рдХреНрд╡реЗрд░реА
рдЬрдм рдПрдХ рдмреНрд▓реЙрдХ, рдПрд▓реАрдореЗрдВрдЯ рдФрд░ рдореЙрдбрд┐рдлрд╛рдпрд░ рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдХреЛ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЗрд╕рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рдПрдХрддреНрд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ред рд▓реЗрдХрд┐рди рдХреИрд╕реЗ?
src/components тФЬтФАтФА ComponentName тФВ тФЬтФАтФА _modName тФВ тФВ тФЬтФАтФА ComponentName_modName.tsx тАФ тФВ тФВ тФФтФАтФА ComponentName_modName_modVal.tsx тАФ тФВ тФЬтФАтФА ElementName тФВ тФВ тФФтФАтФА ComponentName-ElementName.tsx тАФ ComponentName тФВ тФЬтФАтФА ComponentName.i18n тАФ тФВ тФВ тФЬтФАтФА ru.ts тАФ тФВ тФВ тФЬтФАтФА en.ts тАФ тФВ тФВ тФФтФАтФА index.ts тАФ тФВ тФЬтФАтФА ComponentName.test тАФ тФВ тФВ тФЬтФАтФА ComponentName.page-object.js тАФ Page Object тФВ тФВ тФЬтФАтФА ComponentName.hermione.js тАФ тФВ тФВ тФФтФАтФА ComponentName.test.tsx тАФ unit- тФВ тФЬтФАтФА ComponentName.tsx тАФ тФВ тФЬтФАтФА ComponentName.scss тАФ тФВ тФЬтФАтФА ComponentName.examples.tsx тАФ Storybook тФВ тФФтФАтФА README.md тАФ
рдЖрдзреБрдирд┐рдХ рдШрдЯрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛
рдпреИрдВрдбреЗрдХреНрд╕ рдореЗрдВ рдХреБрдЫ рдЕрдиреНрдп рдХрдВрдкрдирд┐рдпреЛрдВ рдХреА рддрд░рд╣, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдлреНрд░рдВрдЯрдПрдВрдб рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рднрд╛рдЧ рдФрд░ Node.js
рдкрд░ рд╕рд░реНрд╡рд░ рднрд╛рдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ Node.js
рд╕рд░реНрд╡рд░ рднрд╛рдЧ "рдмрдбрд╝реА" рдЦреЛрдЬ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрди рдкрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓рдЧрд╛рддрд╛ рд╣реИред рдкреНрд░рд╛рдердорд┐рдХ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ JSON рдХреЛ BEMJSON рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ bem-xjst
рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИред рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдкреЗрдбрд╝ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрд╕ рдкрд░ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓рдЧрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдкреНрд░рд╛рдердорд┐рдХ рд░реВрдкрд╛рдВрддрд░рдг рд╕рд░реНрд╡рд░ рдкрд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░, рдЫреЛрдЯреА рд╕рдВрд╕реНрдерд╛рдУрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдХреЗ рдХрд╛рд░рдг, рдиреЛрдбреНрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрддреЗ рд╣реИрдВ, рдЯреЗрдореНрдкрд▓реЗрдЯ рдкреАрдврд╝реА рдХреЗ рджреМрд░рд╛рди рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛрдб рдХреЛ рдзрдХреНрдХрд╛ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдиреАрдЪреЗ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП BEMJSON рдиреЛрдбреНрд╕ рдХрд╛ рдкрддреНрд░рд╛рдЪрд╛рд░ рд╣реИред
module.exports = { block: 'Select', elem: 'Item', elemMods: { type: 'navigation' } };
src/components тФЬтФАтФА Select тФВ тФЬтФАтФА Item тФВ тФВ _type тФВ тФВ тФЬтФАтФА Select-Item_type_navigation.js тФВ тФВ тФФтФАтФА Select-Item_type_navigation.css
YModules
рдореЙрдбреНрдпреВрд▓рд░ рд╕рд┐рд╕реНрдЯрдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдерд╛ред рдпрд╣ рдЖрдкрдХреЛ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдФрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдореЙрдбреНрдпреВрд▓ рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдШрдЯрдХ YModules
рдФрд░ i-bem.js
рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, YModules
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдЖрдЬ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП, webpack
рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдЖрдпрд╛рдд рдХреЗ рдЕрд╕рдВрдмрдВрдзрд┐рдд рдорд╛рдирдХ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ ред
рдмреАрдИрдПрдо рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдПрдХ рд╕реЗрдЯ, рдШреЛрд╖рдгрд╛рддреНрдордХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдФрд░ рдПрдХ рдореЙрдбреНрдпреВрд▓рд░ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рдЬреЗрдПрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдиреЗ рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛ рджрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рд╕рдордп рдХреЗ рд╕рд╛рде, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдЧрддрд┐рд╢реАрд▓рддрд╛ рдЖ рдЧрдИ рд╣реИред
рдирдИ рдЙрдореНрдореАрдж
2013 рдореЗрдВ, рд░рд┐рдПрдХреНрдЯ рдиреЗ рдУрдкрди рд╕реЛрд░реНрд╕ рдХреЛ рдордВрддреНрд░рдореБрдЧреНрдз рдХрд░ рджрд┐рдпрд╛ ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдлреЗрд╕рдмреБрдХ рдиреЗ 2011 рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдерд╛ред рдЬреЗрдПрд╕ рдХреЙрдиреНрдлрд┐рдбреЗрдВрд╕ рдпреВрдПрд╕ рдХреЙрдиреНрдлреНрд░реЗрдВрд╕ рдХреЗ рдЕрдкрдиреЗ рдиреЛрдЯреНрд╕ рдореЗрдВ рдЬреЗрдореНрд╕ рд▓реЙрдиреНрдЧ рдХрд╣рддреЗ рд╣реИрдВ:
рдкрд┐рдЫрд▓реЗ рджреЛ рд╕рддреНрд░ рд╣реИрд░рд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдереЗред рдкрд╣рд▓реЗ рджреЛ рдлреЗрд╕рдмреБрдХ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдереЗ рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдлреЗрд╕рдмреБрдХ рд░рд┐рдПрдХреНрдЯ рдХреА рдШреЛрд╖рдгрд╛ рдХреАред рдореИрдВрдиреЗ рдХрдИ рдиреЛрдЯ рдирд╣реАрдВ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рджрдореЗ рдореЗрдВ рдерд╛ рдХрд┐ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рдпрд╣ рдХрд┐рддрдирд╛ рдмреБрд░рд╛ рд╣реИред рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рдЙрдиреНрд╣реЛрдВрдиреЗ JSX рдирд╛рдордХ рдПрдХ рднрд╛рд╖рд╛ рдмрдирд╛рдИ, рдЬреЛ рдЖрдкрдХреЛ рд▓рд╛рдЗрд╡ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП XML рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рддреА рд╣реИред рдПрдХреНрд╕рдПрдордПрд▓ред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВред
рд░рд┐рдПрдХреНрдЯ рдиреЗ рдбрд┐рдЬрд╛рдЗрдирд┐рдВрдЧ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред рдпрд╣ рдЗрддрдирд╛ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЖрдЬ рдЖрдкрдХреЛ рдРрд╕рд╛ рдбреЗрд╡рд▓рдкрд░ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ рд░рд┐рдПрдХреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдмрд╛рдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ: рдЖрд╡реЗрджрди рдЕрд▓рдЧ рд╣реЛ рдЧрдП рд╣реИрдВ, рдПрд╕рдкреАрдП рд╣рдорд╛рд░реЗ рдЬреАрд╡рди рдореЗрдВ рдЖ рдЧрдП рд╣реИрдВред
рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╛рдВрдбреЗрдХреНрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╕реБрдВрджрд░рддрд╛ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖ рднрд╛рд╡рдирд╛ рд╣реИред рдХрднреА-рдХрднреА рдЕрдЬреАрдм рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдмрд╣рд╕ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ рдХрд╛рд░рдг рдХреЗ рдХрднреА рдирд╣реАрдВред рдЬрдм рд░рд┐рдПрдХреНрдЯ рдиреЗ рдЧрд┐рдЯрд╣рдм рдкрд░ рд╕рд┐рддрд╛рд░реЛрдВ рдХреЛ рд╕реНрдХреЛрд░ рдХрд┐рдпрд╛, рддреЛ рдХрдИ рдЬреЛ рдХрд┐ рдпреИрдВрдбреЗрдХреНрд╕ рд╡реЗрдм рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдереЗ, рдиреЗ рдЬреЛрд░ рджреЗрдХрд░ рдХрд╣рд╛: рдлреЗрд╕рдмреБрдХ рдиреЗ рдЬреАрдд рд╣рд╛рд╕рд┐рд▓ рдХреА, рдЕрдкрдиреЗ рд╢рд┐рд▓реНрдк рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрд╣реБрдд рджреЗрд░ рд╣реЛ рдЪреБрдХреА рд╣реИред рджреЛ рдмрд╛рддреЛрдВ рдХреЛ рд╕рдордЭрдирд╛ рдЬрд░реВрд░реА рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреЛрдИ рдпреБрджреНрдз рдирд╣реАрдВ рдерд╛ред рдХрдВрдкрдирд┐рдпрд╛рдВ рдкреГрдереНрд╡реА рдкрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдврд╛рдВрдЪрд╛ рдмрдирд╛рдиреЗ рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рдХрдВрдкрдиреА рдПрдХ рд╣реА рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЗ рд╕рд╛рде рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдБрдЪреЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдХрдо рд╕рдордп (рдкрдврд╝рд╛ рд╣реБрдЖ рдкреИрд╕рд╛) рдЦрд░реНрдЪ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреА рд╣реИ, рддреЛ рд╕рднреА рдХреЛ рдЗрд╕рд╕реЗ рд▓рд╛рдн рд╣реЛрдЧрд╛ред рдлреНрд░реЗрдорд╡рд░реНрдХ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдлреНрд░реЗрдорд╡рд░реНрдХ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЙрдкрдХрд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдХрдВрдкрдиреА рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рд░реНрд╡реЛрддреНрддрдо рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред рдХрдВрдкрдирд┐рдпреЛрдВ, рд╕реЗрд╡рд╛рдУрдВ, рд▓рдХреНрд╖реНрдпреЛрдВ - рдпрд╣ рд╕рдм рдЕрд▓рдЧ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХреА рд╡рд┐рд╡рд┐рдзрддрд╛ред
рджреВрд╕рд░реЗ, рд╣рдо рд░рд┐рдПрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рдереЗ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╣рдо рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗред рдЙрди рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЬреЛ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣рдорд╛рд░реА рддрдХрдиреАрдХреЛрдВ рдиреЗ рджреА рд╣реИрдВред
рдпрд╣ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд░рд┐рдПрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рддреЗрдЬ рд╣реИред рдЕрдЧрд░ рдЖрдк рднреА рдРрд╕рд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрд╕реЗ рдЧрд╣рд░реА рдЧрд▓рддреА рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рд░рд┐рдПрдХреНрдЯ рдХрд░рддреА рд╣реИ, рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, DOM рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИред
рд╕рдВрд╕реНрдХрд░рдг 16 рддрдХ, рд░рд┐рдПрдХреНрдЯ рдореЗрдВ рдПрдХ рдШрд╛рддрдХ рджреЛрд╖ рдерд╛ред рдпрд╣ рд╕рд░реНрд╡рд░ рдкрд░ bem-xjst
рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 10 рдЧреБрдирд╛ рдзреАрдорд╛ рдерд╛ред рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреА рдмрд░реНрдмрд╛рджреА рдмрд░реНрджрд╛рд╢реНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдереЗред рдпрд╛рдВрдбреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп рдкреНрд░рдореБрдЦ рдореАрдЯреНрд░рд┐рдХ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЬрдм рдЖрдк рдПрдХ рдореБрд▓реНрддрд╛рдиреА рд╢рд░рд╛рдм рдмрдирд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдкреВрдЫрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд╕реЗ 10 рдЧреБрдирд╛ рдзреАрдорд╛ рдЬрд╡рд╛рдм рдорд┐рд▓реЗрдЧрд╛ред рдЖрдк рдмрд╣рд╛рдиреЗрдмрд╛рдЬреА рд╕реЗ рдЦреБрд╢ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рднрд▓реЗ рд╣реА рдЖрдк рд╡реЗрдм рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрд╛рдирддреЗ рд╣реЛрдВред рд╣рдо рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ "рд▓реЗрдХрд┐рди рдпрд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП DOM рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рдЧрдпрд╛"ред рдпрд╣рд╛рдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рд▓рд╛рдн рдХреА рдХреАрдордд рдХрд╛ рдЕрдиреБрдкрд╛рдд рдЬреЛрдбрд╝реЗрдВ - рдФрд░ рдЖрдк рдЦреБрдж рд╣реА рдПрдХрдорд╛рддреНрд░ рд╕рд╣реА рдирд┐рд░реНрдгрдп рд▓реЗрдВрдЧреЗред
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рджреБрдЦ рдХреЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЕрдЬреАрдм рд▓реЛрдЧ рд╣реИрдВред рдЕрдЧрд░ рдХреБрдЫ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдм рдХреБрдЫ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ ...
рдЙрд▓рдЯрд╛ рд╣реЛ рдЧрдпрд╛
рд╣рдореЗрдВ рднрд░реЛрд╕рд╛ рдерд╛ рдХрд┐ рд╣рдо рд░рд┐рдПрдХреНрдЯ рдХреА рд╕реБрд╕реНрддреА рдХреЛ рд╣рд░рд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рддреНрд╡рд░рд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рд╣реИред рдЖрдк рд╕рднреА рдХреА рдЬрд░реВрд░рдд рд╣реИ bem-xjst
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рд░реНрд╡рд░ рдкрд░ HTML рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдЗрд╕ рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдмрд▓" рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ред рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЗрддрдирд╛ рд╕рд░рд▓ рдерд╛ рдХрд┐ рдХреБрдЫ рднреА рд╡рд┐рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖред
15 рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рд░рд┐рдПрдХреНрдЯ рдиреЗ рд╣реИрд╢ рд░рд╛рд╢рд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рд░реНрдХрдЕрдк рдХреА рд╡реИрдзрддрд╛ рдХреЛ рдорд╛рдиреНрдп рдХрд┐рдпрд╛ - рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЬреЛ рдХрд┐рд╕реА рднреА рдЕрдиреБрдХреВрд▓рди рдХреЛ рдХрджреНрджреВ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдорд╛рд░реНрдХрдЕрдк рдХреА рд╡реИрдзрддрд╛ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдИрдбреА рдиреАрдЪреЗ рд░рдЦрдирд╛ рдФрд░ рд╕рднреА рдиреЛрдбреНрд╕ рдХреЗ рд╣реИрд╢ рд░рд╛рд╢рд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдерд╛ рдХрд┐ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рджреЛрд╣рд░реЗ рд╕реЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛: рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП bem-xjst
ред рдЖрдИрдбреА рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рд╕рд╛рде рд╕рд░рд▓ рдЧрддрд┐ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдиреЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рдХрд┐ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рдерд╛ред
bem-xjst
рдПрдХ рдмрд╣реБрдд рд╣реА рдХрдо рдЙрдкрдХрд░рдг рд╣реИред рдЧреНрд▓реЛрд░реА рдУрд▓рд┐рдпрд╛рдирдЪреБрдХ рдХреЗ рдореБрдЦреНрдп рдЕрдиреБрд░рдХреНрд╖рдХ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рджреЗрдЦреЗрдВ рдФрд░ рдЕрдкрдиреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ ред bem-xjst
рдПрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╕реНрд░реЛрдд рдЯреНрд░реА рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдмрд╣реБрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд╣реИ рдирд╛? рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЖрдЬ react-sketchapp
рдЬреИрд╕реЗ рдЯреВрд▓ react-sketchapp
ред
рдмреЙрдХреНрд╕ рдореЗрдВ рд╕реЗ bem-xjst
рдореЗрдВ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рд╣реИрдВ: HTML рдореЗрдВ рдФрд░ JSON рдореЗрдВред рдХреЛрдИ рднреА рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдореЗрд╣рдирддреА рдбреЗрд╡рд▓рдкрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЗрдВрдЬрди рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИред рд╣рдордиреЗ bem-xjst
рдбреЗрдЯрд╛ рдЯреНрд░реА рдХреЛ рдХреЙрд▓ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдмрджрд▓рдирд╛ рд╕рд┐рдЦрд╛рдпрд╛ред рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓ рдбреЛрдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд░рд┐рдПрдХреНрдЯ рдФрд░ рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рд╕рдВрдЧрддрддрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░реАрдХреНрдЯ ред
рд╣рд╛рдЗрдкрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдкреАрдврд╝реА рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдкрд░рд┐рдЪрдп
рдЪреВрдВрдХрд┐ рд░рд┐рдПрдХреНрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рд▓реЗрдЖрдЙрдЯ рдФрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЗ рд╕рд╣-рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ i-bem.js
рд╕реЗ рд▓реЙрдЬрд┐рдХ рдХреЛ рдЕрдкрдиреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рд▓рд╛рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рдирд╣реАрдВ рдереЗред рдЙрдирдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдкреНрд░рд╛рдХреГрддрд┐рдХ рдерд╛ред рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬрд╛ рд░рд╣реЗ рдереЗред рд╡реИрд╕реЗ!
рдиреАрдЪреЗ рдПрдХ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рджреБрдирд┐рдпрд╛ рдХреА gluing рдХреА рдЧрд╣рд░рд╛рдИ рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
block('select').elem('menu')( def()(function() { const React = require('react'); const Menu = require('../components/menu/menu'); const MenuItem = require('../components/menu-item/menu-item'); const _select = this.ctx._select; const selectComponent = _select._select; return React.createElement.apply(React, [ Menu, { mix: { block : this.block, elem : this.elem }, ref: menu => selectComponent._menu = menu, size: _select.mods.size, disabled: _select.mods.disabled, mode: _select.mods.mode, content: _select.options, checkedItems: _select.bindings.checkedItems, style: _select.bindings.popupMenuWidth, onKeyDown: _select.bindings.onKeyDown, theme: _select.mods.theme, }].concat(_select.options.map(option => React.createElement( MenuItem, { onClick: _select.bindings.onOptionCheck, theme: _select.mods.theme, val: option.value, }, option.content) )) ); }) );
рдмреЗрд╢рдХ, рд╣рдорд╛рд░реА рдЕрдкрдиреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдереАред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдСрдкрд░реЗрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЙрдиреНрд╕реЗрдЯрди рд╣реИред рдЗрд╕ рдкрд░ bem-xjst
рдЗрдВрдЬрди рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕ рдкрд░ рдЕрд╕реЗрдВрдмрд▓реА рдмрдирд╛рдИ рдЧрдИ рдереАред рдмреНрд▓реЙрдХ, рдПрд▓рд┐рдореЗрдВрдЯреНрд╕ рдФрд░ рдореЙрдбрд┐рдлрд╛рдпрд░реНрд╕ рдХреА рдлрд╛рдЗрд▓реЗрдВ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рдмрд┐рдЫ рдЬрд╛рддреА рд╣реИрдВ, рдФрд░ рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рдХреЗрд╡рд▓ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд╣реА рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдЧреЛрдВрдж рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рдерд╛ред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдЖрдк рдЬреЗрдПрд╕, рд╕реАрдПрд╕рдПрд╕ рдФрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЧреЛрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╕реНрд╡рдпрдВ рдХреЛ рднреАред рдпрд╣реА рд╣реИ, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЪрд╛рд░ рдШрдЯрдХ рд╣реИрдВ, рд▓реИрдкрдЯреЙрдк рдкрд░ рдЪрд╛рд░ рдХреЛрд░, рдФрд░ рдПрдХ рдШрдЯрдХ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдореЗрдВ рдПрдХ рд╕реЗрдХрдВрдб рд▓рдЧрддрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рджреЛ рд╕реЗрдХрдВрдб рд▓рдЧреЗрдВрдЧреЗред рдпрд╣рд╛рдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рдХреЛ рдХреИрд╕реЗ рдзрдХреЗрд▓рддреЗ рд╣реИрдВред
рдпрд╣ рд╕рдм рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдИрдПрдирдмреА рдиреЗ рдХрд┐рдпрд╛ред рд╣рдордиреЗ рдорд╛рдирдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдкреЗрдбрд╝ рдХреЗрд╡рд▓ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛, рдФрд░ рдЪреВрдВрдХрд┐ рдмрдВрдбрд▓ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдереЛрдбрд╝рд╛ рдкрд╣рд▓реЗ рдЙрдардирд╛ рдкрдбрд╝рд╛ рдерд╛, рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрд▓реНрдк-рдЬреНрдЮрд╛рдд deps.js
рддрдХрдиреАрдХ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдиреЗ рдЖрдкрдХреЛ рдШрдЯрдХреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдл рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдХрд▓реЗрдХреНрдЯрд░ рдЧреНрд░рд╛рдл рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдП рд╡рд╛рдВрдЫрд┐рдд рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдХреЛрдб рдХреЛ рдЧреЛрдВрдж рдХрд░ рд╕рдХрддрд╛ рдерд╛ред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг 16 рдиреЗ рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред рд╕рд░реНрд╡рд░ рдкрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ рдмрд░рд╛рдмрд░ рдереА ред рдЙрддреНрдкрд╛рджрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░, рдЕрдВрддрд░ рдЕрдЧреЛрдЪрд░ рд╣реЛ рдЧрдпрд╛ред
рдиреЛрдб: v8.4.0
рдмрдЪреНрдЪреЗ: 5K
рд░реЗрдВрдбрд░рд░ | рдорддрд▓рдм рд╕рдордп | рдСрдкреНрд╕ / рд╕реЗрдХ |
---|
рдЙрдкрджреЗрд╢ v8.2.6 | 66.235ms | 15 |
bem-xjst v8.8.4 | 71.326ms | 14 |
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ v16.1.0 | 73.966ms | 14 |
рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдХреНрдпрд╛ рд╣рдордиреЗ рдХреБрдЫ рдФрд░ рдЖрдЬрдорд╛рдпрд╛ рд╣реИ?

рдкреНрд░реЗрд░рдгрд╛
рдХрд╣рд╛рдиреА рдХреЗ рдмреАрдЪ рдореЗрдВ, рдпрд╣ рдмрд╛рдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА рдХрд┐ рд╣рдореЗрдВ рдХрд┐рд╕ рдмрд╛рдд рдиреЗ рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред рдпрд╣ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдерд╛, рд▓реЗрдХрд┐рди - рдЬреЛ рдПрдХ рдЙрдкрд╣рд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрд░рд╛рдиреЗ, рдЙрд╕ рдЖрдВрдЦ рдХреЛ рдпрд╛рдж рдХрд░рддрд╛ рд╣реИред рд╣рдореЗрдВ рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ рдЪрд╛рд╣рд┐рдП? рдмреАрдИрдПрдо рдХреНрдпрд╛ рд▓рд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд░рд┐рдПрдХреНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рд╕рд╡рд╛рд▓ рдЬреЛ рд▓рдЧрднрдЧ рд╣рд░ рдХреЛрдИ рдкреВрдЫрддрд╛ рд╣реИред
рд╕рдбрд╝рди
рдШрдЯрдХреЛрдВ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд░реНрд╖-рджрд░-рд╡рд░реНрд╖ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдФрд░ рд╡рд┐рд╡рд┐рдзрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рдпрд╣ if
рдпрд╛ switch
рдирд┐рд░реНрдорд╛рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХреЛрдб рдЖрдзрд╛рд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдмрдврд╝рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк - рдШрдЯрдХ рдХрд╛ рд╡рдЬрди рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдХреЗ рддрд░реНрдХ рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ render()
рд╡рд┐рдзрд┐ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдПрдХ рдШрдЯрдХ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЕрддреНрдпрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдШрдЯрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдПрдХ рдШрд╛рддреАрдп рд╡реГрджреНрдзрд┐ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред
рд╣рд░ рдХреЛрдИ рдореИрдЯреЗрд░рд┐рдпрд▓-рдпреВрдЖрдИ , рдлреИрдмреНрд░рд┐рдХ-рдпреВрдЖрдИ рдФрд░ рд░рд┐рдПрдХреНрдЯ-рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬрд╛рдирддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рднреА рдкреНрд░рд╕рд┐рджреНрдз рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдПрдХ рд╣реА рджреЛрд╖ рд╣реИред рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ рдФрд░ рд╕рднреА рдПрдХ рд╣реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рд╕рдорд╛рди рдШрдЯрдХреЛрдВ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рднрд┐рдиреНрдирддрд╛рдУрдВ рдореЗрдВ: рдпрд╣рд╛рдВ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЪрдпрди рд╣реЛрддреЗ рд╣реИрдВ, рдХреЛрдИ рдирд╣реАрдВ рд╣реИрдВ, рдПрдХ рдЖрдЗрдХрди рдХреЗ рд╕рд╛рде рдиреАрд▓реЗ рдмрдЯрди рд╣реИрдВ, рдмрд┐рдирд╛ рд▓рд╛рд▓ рдмрдЯрди рд╣реИрдВред рд╕реАрдПрд╕рдПрд╕ рдФрд░ рдЬреЗрдПрд╕ рдХрд╛ рд╡рдЬрди рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд╛рддрд╛ рд╣реИ, рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕рдорд╛рди рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВ? рдШрдЯрдХреЛрдВ рдХреЗ рднрд┐рдиреНрдирддрд╛ рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рд╣реА рдПрдореНрдмреЗрдбреЗрдб рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ рдЖрдк рдЗрд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред
рдпрд╛рдВрдбреЗрдХреНрд╕ рдХреЗ рдкрд╛рд╕ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдЦреБрдж рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рднреА рд╣реИ - рд▓реЗрдЧреЛред рдЗрд╕реЗ ~ 200 рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЦреЛрдЬ рдореЗрдВ рд▓реЗрдЧреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ Yandex.Health рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реЛ? рдЖрдкрдХреЛ рдЬрд╡рд╛рдм рдкрддрд╛ рд╣реИред
рдХрдИ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреНрдпрд╛рджрд╛рддрд░ рд╡реЗ рдкреНрд░рддреНрдпреЗрдХ рдордВрдЪ рдХреЗ рд▓рд┐рдП рдпрд╛ рддреЛ рдПрдХ рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ, рдпрд╛ рдПрдХ рдЕрдиреБрдХреВрд▓реАред
рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рдЕрдзрд┐рдХ рдордВрдЪ, рдЕрдзрд┐рдХ рдкреНрд░рдпрд╛рд╕ред рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЙрддреНрдкрд╛рдж рдЧреБрдгреЛрдВ рдХреЗ рд╕рдордХрд╛рд▓рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рд╕реЗ рдирдИ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ред
рдПрдХ рдЕрдиреБрдХреВрд▓реА рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХреЛрдб рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддрд╛ рд╣реИ, рд╡рдЬрди рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рдмреАрдЪ рдЙрдЪрд┐рдд рдЕрдВрддрд░ рдХреЗ рд╕рд╛рде рдЙрддреНрдкрд╛рдж рдХреА рдЧрддрд┐ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред
рдХреНрдпрд╛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ / рдорд┐рддреНрд░ / рд╕рд╣рдХрд░реНрдореА / рдмрдЪреНрдЪреЗ рдореЛрдмрд╛рдЗрд▓ рдкрд░ рдбреЗрд╕реНрдХрдЯреЙрдк рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдо рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реНрдкреАрдб рдФрд░ рдХрдо рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЗ рд╕рд╛рде рдХрд░реЗрдВ? рдЖрдкрдХреЛ рдЬрд╡рд╛рдм рдкрддрд╛ рд╣реИред
рдкреНрд░рдпреЛрдЧреЛрдВ
рдпрджрд┐ рдЖрдк рдмрдбрд╝реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╣рд░ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред A / B рдкреНрд░рдпреЛрдЧ рдЙрд╕ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред
рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ:
- рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдХрд╛рдВрдЯрд╛ рдФрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╕реЗрд╡рд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг;
- рдХреЛрдб рдмреЗрд╕ рдХреЗ рдЕрдВрджрд░ рдмрд┐рдВрджреБ рд╕реНрдерд┐рддрд┐рдпрд╛рдВред
рдпрджрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдмрд╣реБрдд рд▓рдВрдмрд╛ рдкреНрд░рдпреЛрдЧ рд╣реИ, рддреЛ рдХреЛрдб рдЖрдзрд╛рд░ рдХреЛ рд╢рд╛рдЦрд╛ рджреЗрдиреЗ рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдЧрдд рд╣реЛрддреА рд╣реИред рдкреНрд░рдпреЛрдЧ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рд╢рд╛рдЦрд╛ рдХреЛ рдЕрджреНрдпрддрд┐рдд рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ: рдкреЛрд░реНрдЯ рдХреА рдЧрдИ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдФрд░ рдЙрддреНрдкрд╛рдж рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ред рдХреЛрдбрдмреЗрд╕ рдмреНрд░рд╛рдВрдЪрд┐рдВрдЧ рдХрдИ рдмрд╛рд░ рдЗрдВрдЯрд░рд╕реЗрдХреНрдЯрд┐рдВрдЧ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддреА рд╣реИред
рдмрд┐рдВрджреБ рдХреА рд╕реНрдерд┐рддрд┐ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдЖрдзрд╛рд░ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддреА рд╣реИ: рдкреНрд░рдпреЛрдЧ рдХреА рд╢рд░реНрддреЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИрдВред рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдмрдврд╝рд╛рдХрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХрдо рдХрд░рддреА рд╣реИрдВред рд╢рд░реНрддреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ, рдХреЛрдб рдХреЛ рдореВрд▓ рдмрдирд╛рдиреЗ рдпрд╛ рдЕрд╕рдлрд▓ рдкреНрд░рдпреЛрдЧ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рд╡рд┐рднрд┐рдиреНрди рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдпреЛрдЬрдиреЛрдВ рдореЗрдВ рдЦреЛрдЬ ~ 100 рдСрдирд▓рд╛рдЗрди рдкреНрд░рдпреЛрдЧред рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рд▓рд┐рдП рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛рдж рд░рдЦреЗрдВ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рд╣реЛ, рдФрд░ рдПрдХ рд╣рдлреНрддреЗ рдмрд╛рдж рдпрд╣ рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ред рдХреНрдпрд╛ рд╣рдо 500,000 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рдХреНрд░рд┐рдп рдХреЛрдб рдЖрдзрд╛рд░ рдХреА рд╕реИрдХрдбрд╝реЛрдВ рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдХреАрдордд рдкрд░ рдЙрддреНрдкрд╛рдж рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рджреИрдирд┐рдХ ~ 60 рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдЖрдкрдХреЛ рдЬрд╡рд╛рдм рдкрддрд╛ рд╣реИред
рд╡реИрд╢реНрд╡рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ Button
рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдПрдХ CustomButton
рдШрдЯрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА CustomButton
Button
рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рд╕рднреА рдШрдЯрдХреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрдЧреАред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ Input
рдФрд░ Button
рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдПрдХ Search
рдШрдЯрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ CustomButton
Search
рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдо рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреВрд░реЗ рдХреЛрдб рдЖрдзрд╛рд░ рдкрд░ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ Button
рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?

рд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рд▓рдВрдмреА рд╕рдбрд╝рдХ
рд╣рдордиреЗ рд░рдгрдиреАрддрд┐ рдмрджрд▓рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдкрд┐рдЫрд▓реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдпреИрдВрдбреЗрдХреНрд╕ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЛ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдФрд░ рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдирдИ рд░рдгрдиреАрддрд┐ рдиреЗ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмреЗрдо-рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдХреЛрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдпрд╛ред
рдЗрд╕реЗ рд░реЛрдХреЛ! рдЖрдЦрд┐рд░ рдХреНрдпреЛрдВ рд╣реБрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛?
рд╣рдордиреЗ рдЗрд╕реЗ HTML рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрдЦрд╛ рдФрд░ рдмрд╛рдж рдореЗрдВ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЬреЗрдПрд╕ рдШрдЯрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдореИрдиреБрдЕрд▓ рд╕рдорд░реНрдерди рд╕реЗ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, BEMHMTL рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдФрд░ рдЬреЗрдПрд╕ рдШрдЯрдХреЛрдВ рдХреЛ рдПрдХ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ред
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╣рдордиреЗ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ bem-xjst
рд╕рднреА рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИред рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рдЖрдкрдХреА рдЖрдВрдЦ рдХреЛ рдкрдХрдбрд╝рддреА рд╣реИ рд╡рд╣ рд╣реИ рд╣рд╕реНрддрд╛рдХреНрд╖рд░, рдпрд╛, рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдШрдЯрдХреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ред
рдЖрдкрдиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рд╣реИ, рдЬреЗрдПрд╕рдПрдХреНрд╕ рд╣реИ!
рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреЛ рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рд╡рд┐рд░рд╛рд╕рдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдореЗрдВ рд╕реЗ рдХреБрдЫ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдЙрди рджрд┐рдиреЛрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдХрдХреНрд╖рд╛рдПрдВ рдирд╣реАрдВ рдереАрдВ, рдХреЛрдИ super
рдирд╣реАрдВ рдерд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╡реЗ рдЕрднреА рднреА рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИрдВ, рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдпреЗ рд╡реЗ рд╡рд░реНрдЧ рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рдзреНрдпрд╛рди рдореЗрдВ рдЖрддреЗ рд╣реИрдВред inherit
рдиреЗ рд╕рдм рдХреБрдЫ рдХрд┐рдпрд╛ рдЬреЛ рдХрд┐ ES2015 рдорд╛рдирдХ рдореЗрдВ рдХрдХреНрд╖рд╛рдПрдВ рдЕрдм рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рдФрд░ рдЬрд┐рд╕реЗ рдХрд╛рд▓рд╛ рдЬрд╛рджреВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ: рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрдЬрд╛рдп рдХрдИ рд╡рд┐рд░рд╛рд╕рдд рдФрд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╡рд┐рд▓рдп, рдЬреЛ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЧрд▓рдд рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ Node.js рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдХреА рддрд░рд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдиреАрдЪреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯреНрд╕ bem-react-core@v1.0.0
рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрджрд╛рд╣рд░рдг bem-react-core@v1.0.0
ред
рдРрдк-Header.js
import { decl } from 'bem-react-core'; export default decl({ block: 'App', elem: 'Header', attrs: { role: 'heading' }, content() { return ' '; } });
App-Header@desktop.js
import { decl } from 'bem-react-core'; export default decl({ block: 'App', elem: 'Header', tag: 'h1', attrs() { return { ...this.__base(...arguments), 'aria-level': 1 }, }, content() { return ` ${this.__base(...arguments)} h1`; } });
App-Header@touch.js
import { decl } from 'bem-react-core'; export default decl({ block: 'App', elem: 'Header', tag: 'h2', content() { return ` ${this.__base(...arguments)} `; } });
index.js
import ReactDomServer from 'react-dom/server'; import AppHeader from 'b:App e:Header'; ReactDomServer.renderToStaticMarkup(<AppHeader />);
output@desktop.html
<h1 class="App-Header" role="heading" aria-level="1">A h1</h2>
output@touch.html
<h2 class="App-Header" role="heading"> </h2>
рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдЯреЗрдореНрдкрд▓реЗрдЯ рдпрд╣рд╛рдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред
рдЪреВрдВрдХрд┐ рдПрдХ рдХреНрд▓рд╛рд╕ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ, рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЙрдкрдпреБрдХреНрдд рд╣реИред рд╕рд┐рдВрдЯреИрдХреНрд╕ рдмрд╛рдж рдореЗрдВ рдЕрдкрдиреЗ рдорд╛рд╕реНрдЯрд░рдорд╛рдЗрдВрдб bem-xjst
ред
рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡рд╕реНрддреБ рдШреЛрд╖рдгрд╛рдУрдВ рдХрд╛ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рднрдВрдбрд╛рд░ рдерд╛ - рдШреЛрд╖рдгрд╛ рд╕рдорд╛рд░реЛрд╣, рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо: рдПрдХ рдмреНрд▓реЙрдХ, рддрддреНрд╡, рдпрд╛ рд╕рдВрд╢реЛрдзрдХред рдмреАрдИрдПрдо рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдирд╛рдордХрд░рдг рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рддрд┐рдЬреЛрд░реА рдореЗрдВ рдЪрд╛рдмрд┐рдпрд╛рдБ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХ рдХреЛ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдЪрд┐рдкрдХрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪрд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп decl
рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдпрд╣ рд╕рдВрдХреЗрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдЖрдпрд╛рдд рдХреА рдПрдХ рд╕рд░рд▓ рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд╛рди рдкрд░ рдШрдЯрдХ рдХреЗ рдХрд┐рди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╛рдж рд░рдЦреЗрдВ: рдШрдЯрдХ рдЬрдЯрд┐рд▓ рд╣реИрдВ, рдХрдИ рднрд╛рдЧ рд╣реИрдВ, рдЖрдпрд╛рдд рдХреА рд╕реВрдЪреА рд▓рдВрдмреА рд╣реИ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЖрд▓рд╕реА рд╣реИрдВред
рдЖрдпрд╛рдд рдЬрд╛рджреВ
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ import AppHeader from 'b:App e:Header'
рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВред
рдЖрдкрдиреЗ рдорд╛рдирдХ рддреЛрдбрд╝рд╛! рдпрд╣ рдЕрд╕рдВрднрд╡ рд╣реИ! рдпрд╣ рд╕рд┐рд░реНрдл рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛!
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдпрд╛рдд рдорд╛рдирдХ рднрд╛рд╡рдирд╛ рдореЗрдВ рд╢рд░реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ "рдЖрдпрд╛рдд рд▓рд╛рдЗрди рдореЗрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд╛рд╕реНрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП"ред рджреВрд╕рд░реЗ, рдпрд╣ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЪреАрдиреА рд╣реИ рдЬрд┐рд╕реЗ рдмреИрдмреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рддреАрд╕рд░рд╛, рдЕрдЬреАрдм import txt from 'raw-loader!./file.txt';
рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрди import txt from 'raw-loader!./file.txt';
рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдг import txt from 'raw-loader!./file.txt';
рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд╡реЗ рдХрд┐рд╕реА рдХреЛ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рдереЗред
рддреЛ, рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдХ рдХреЛ рджреЛ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: desktop
, touch
ред
import Hello from 'b:Hello';
рдпрд╣рд╛рдВ, рдХреЛрдб рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╕рднреА рдШрдЯрдХ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░реЗрдЧрд╛ Hello
, рдФрд░ рдлрд┐рд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ applyDecls
рдЬреЛ рд╡реИрд╢реНрд╡рд┐рдХ рднрдВрдбрд╛рд░ рд╕реЗ рд╕рднреА рдмреНрд▓реЙрдХ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдЧреЛрдВрдж inherit
рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рд╣реИред
рдЗрд╕ рд░реВрдкрд╛рдВрддрд░рдг рдХреЛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмреИрдмрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдФрд░ рд╡реЗрдмрдкреИрдХ рдХреЗ рд▓рд┐рдП рд▓реЛрдбрд░, рдЬреЛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдШрдЯрдХ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдерд╛, рдпрд╣рд╛рдВ рд╣реИ ред
рдЕрдВрдд рдореЗрдВ, рдЬреЛ рдЕрдЪреНрдЫрд╛ рдерд╛:
- рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд, рдШреЛрд╖рдгрд╛рддреНрдордХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЬреЛ рдЖрдкрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрд╣реАрдВ рднреА рдШрдЯрдХ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рднрд╛рдЧреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ;
- рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдХреЛрдИ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЪреЗрди рдирд╣реАрдВ;
- рдЙрдкрдпреЛрдЧ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХред
рдФрд░ рдпрд╣ рдмреБрд░рд╛ рдерд╛:
- TypeScript/Flow;
- React- ;
- - ;
- .
bem-react-core@v1.0.0
, .
import { Elem } from 'bem-react-core'; import { Button } from '../Button'; export class AppHeader extends Elem { block = 'App'; elem = 'Header'; tag() { return 'h2'; } content() { return ( <Button> </Button> ); } }
, . , , TypeScript/Flow. , inherit
┬л┬╗ , , .
:
тАФ webpack Babel;
тАФ ;
тАФ , .
HOC , .
import * as React from 'react'; import * as ReactDOM from 'react-dom'; import { Block, Elem, withMods } from 'bem-react-core'; interface IButtonProps { children: string; } interface IModsProps extends IButtonProps { type: 'link' | 'button'; }
, .
withMods
, (), . , , withMods , . . , , , ( ) . . , , тАФ , .
, :
- . , . , TS. , . ES5 TS super , . , TS , .
- . TS ES6 Babel ES5. , npm- . , Babel.
:
- , . , . : DOM-. HOC, . withMods .
- (, , ) . SFC .
- CSS-. CSS- JS- . , , .
v2.
, . . , , 1 2. .
тАФ . CSS- HOC, тАФ dependency injection .
React:
. . React.ComponentType
-. HOC compose .
.
dependency injection, React.ContextAPI
. , , . , . DI тАФ HOC, . . , , .
, , . , , 4 , 1.5Kb
.
. рдЕрдВрдд рддрдХ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рджред , React . .