рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ BEM - рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╣рдпреЛрдЧред рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╣рд┐рд╕реНрд╕рд╛

рдпрд╣рд╛рдБ 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.666.235ms15
bem-xjst v8.8.471.326ms14
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ v16.1.073.966ms14

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



рдХреНрдпрд╛ рд╣рдордиреЗ рдХреБрдЫ рдФрд░ рдЖрдЬрдорд╛рдпрд╛ рд╣реИ?


  • https://github.com/veged/bem-compenders-react - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛;
  • https://github.com/Yeti-or/bem-hazard - BH рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдгред BH рдХреЗ рд╕рд╛рде, рд╡реИрд╕реЗ, рдЖрдк рдСрдирд▓рд╛рдЗрди рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВ;
  • https://github.com/dfilatov/bem-react - BEMJSON рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдШрдЯрдХ рдмрдирд╛рдирд╛;
  • https://github.com/rebem - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреБрдирд┐рдпрд╛ рдореЗрдВ BEM рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВред


рдкреНрд░реЗрд░рдгрд╛


рдХрд╣рд╛рдиреА рдХреЗ рдмреАрдЪ рдореЗрдВ, рдпрд╣ рдмрд╛рдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА рдХрд┐ рд╣рдореЗрдВ рдХрд┐рд╕ рдмрд╛рдд рдиреЗ рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред рдпрд╣ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдерд╛, рд▓реЗрдХрд┐рди - рдЬреЛ рдПрдХ рдЙрдкрд╣рд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрд░рд╛рдиреЗ, рдЙрд╕ рдЖрдВрдЦ рдХреЛ рдпрд╛рдж рдХрд░рддрд╛ рд╣реИред рд╣рдореЗрдВ рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ рдЪрд╛рд╣рд┐рдП? рдмреАрдИрдПрдо рдХреНрдпрд╛ рд▓рд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд░рд┐рдПрдХреНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рд╕рд╡рд╛рд▓ рдЬреЛ рд▓рдЧрднрдЧ рд╣рд░ рдХреЛрдИ рдкреВрдЫрддрд╛ рд╣реИред


рд╕рдбрд╝рди


рдШрдЯрдХреЛрдВ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡рд░реНрд╖-рджрд░-рд╡рд░реНрд╖ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдФрд░ рд╡рд┐рд╡рд┐рдзрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рдпрд╣ if рдпрд╛ switch рдирд┐рд░реНрдорд╛рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХреЛрдб рдЖрдзрд╛рд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдмрдврд╝рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк - рдШрдЯрдХ рдХрд╛ рд╡рдЬрди рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рд░рд┐рдПрдХреНрдЯ рдШрдЯрдХ рдХреЗ рддрд░реНрдХ рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ render() рд╡рд┐рдзрд┐ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдПрдХ рдШрдЯрдХ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЕрддреНрдпрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдШрдЯрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдПрдХ рдШрд╛рддреАрдп рд╡реГрджреНрдзрд┐ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред


рд╣рд░ рдХреЛрдИ рдореИрдЯреЗрд░рд┐рдпрд▓-рдпреВрдЖрдИ , рдлреИрдмреНрд░рд┐рдХ-рдпреВрдЖрдИ рдФрд░ рд░рд┐рдПрдХреНрдЯ-рдмреВрдЯрд╕реНрдЯреНрд░реИрдк рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬрд╛рдирддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рднреА рдкреНрд░рд╕рд┐рджреНрдз рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдПрдХ рд╣реА рджреЛрд╖ рд╣реИред рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ рдФрд░ рд╕рднреА рдПрдХ рд╣реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рд╕рдорд╛рди рдШрдЯрдХреЛрдВ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рднрд┐рдиреНрдирддрд╛рдУрдВ рдореЗрдВ: рдпрд╣рд╛рдВ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЪрдпрди рд╣реЛрддреЗ рд╣реИрдВ, рдХреЛрдИ рдирд╣реАрдВ рд╣реИрдВ, рдПрдХ рдЖрдЗрдХрди рдХреЗ рд╕рд╛рде рдиреАрд▓реЗ рдмрдЯрди рд╣реИрдВ, рдмрд┐рдирд╛ рд▓рд╛рд▓ рдмрдЯрди рд╣реИрдВред рд╕реАрдПрд╕рдПрд╕ рдФрд░ рдЬреЗрдПрд╕ рдХрд╛ рд╡рдЬрди рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд╛рддрд╛ рд╣реИ, рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕рдорд╛рди рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВ? рдШрдЯрдХреЛрдВ рдХреЗ рднрд┐рдиреНрдирддрд╛ рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рд╣реА рдПрдореНрдмреЗрдбреЗрдб рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ рдЖрдк рдЗрд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред


рдпрд╛рдВрдбреЗрдХреНрд╕ рдХреЗ рдкрд╛рд╕ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдЦреБрдж рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рднреА рд╣реИ - рд▓реЗрдЧреЛред рдЗрд╕реЗ ~ 200 рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЦреЛрдЬ рдореЗрдВ рд▓реЗрдЧреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ Yandex.Health рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реЛ? рдЖрдкрдХреЛ рдЬрд╡рд╛рдм рдкрддрд╛ рд╣реИред


рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╡рд┐рдХрд╛рд╕


рдХрдИ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреНрдпрд╛рджрд╛рддрд░ рд╡реЗ рдкреНрд░рддреНрдпреЗрдХ рдордВрдЪ рдХреЗ рд▓рд┐рдП рдпрд╛ рддреЛ рдПрдХ рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ, рдпрд╛ рдПрдХ рдЕрдиреБрдХреВрд▓реАред


рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рдЕрдзрд┐рдХ рдордВрдЪ, рдЕрдзрд┐рдХ рдкреНрд░рдпрд╛рд╕ред рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЙрддреНрдкрд╛рдж рдЧреБрдгреЛрдВ рдХреЗ рд╕рдордХрд╛рд▓рд┐рдХ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рд╕реЗ рдирдИ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ред


рдПрдХ рдЕрдиреБрдХреВрд▓реА рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХреЛрдб рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддрд╛ рд╣реИ, рд╡рдЬрди рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рдмреАрдЪ рдЙрдЪрд┐рдд рдЕрдВрддрд░ рдХреЗ рд╕рд╛рде рдЙрддреНрдкрд╛рдж рдХреА рдЧрддрд┐ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред


рдХреНрдпрд╛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ / рдорд┐рддреНрд░ / рд╕рд╣рдХрд░реНрдореА / рдмрдЪреНрдЪреЗ рдореЛрдмрд╛рдЗрд▓ рдкрд░ рдбреЗрд╕реНрдХрдЯреЙрдк рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдо рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реНрдкреАрдб рдФрд░ рдХрдо рдЙрддреНрдкрд╛рджрдХрддрд╛ рдХреЗ рд╕рд╛рде рдХрд░реЗрдВ? рдЖрдкрдХреЛ рдЬрд╡рд╛рдм рдкрддрд╛ рд╣реИред


рдкреНрд░рдпреЛрдЧреЛрдВ


рдпрджрд┐ рдЖрдк рдмрдбрд╝реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╣рд░ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред A / B рдкреНрд░рдпреЛрдЧ рдЙрд╕ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред


рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ:


  • рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдХрд╛рдВрдЯрд╛ рдФрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╕реЗрд╡рд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг;
  • рдХреЛрдб рдмреЗрд╕ рдХреЗ рдЕрдВрджрд░ рдмрд┐рдВрджреБ рд╕реНрдерд┐рддрд┐рдпрд╛рдВред

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


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


рд╡рд┐рднрд┐рдиреНрди рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдпреЛрдЬрдиреЛрдВ рдореЗрдВ рдЦреЛрдЬ ~ 100 рдСрдирд▓рд╛рдЗрди рдкреНрд░рдпреЛрдЧред рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рд▓рд┐рдП рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╛рдж рд░рдЦреЗрдВ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рд╣реЛ, рдФрд░ рдПрдХ рд╣рдлреНрддреЗ рдмрд╛рдж рдпрд╣ рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ред рдХреНрдпрд╛ рд╣рдо 500,000 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рдХреНрд░рд┐рдп рдХреЛрдб рдЖрдзрд╛рд░ рдХреА рд╕реИрдХрдбрд╝реЛрдВ рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдХреАрдордд рдкрд░ рдЙрддреНрдкрд╛рдж рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рджреИрдирд┐рдХ ~ 60 рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдЖрдкрдХреЛ рдЬрд╡рд╛рдм рдкрддрд╛ рд╣реИред


рд╡реИрд╢реНрд╡рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди


рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ Button рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдПрдХ CustomButton рдШрдЯрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА CustomButton Button рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рд╕рднреА рдШрдЯрдХреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрдЧреАред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ Input рдФрд░ Button рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдПрдХ Search рдШрдЯрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ CustomButton Search рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдХреНрдпрд╛ рд╣рдо рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреВрд░реЗ рдХреЛрдб рдЖрдзрд╛рд░ рдкрд░ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ Button рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?



рд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рд▓рдВрдмреА рд╕рдбрд╝рдХ


рд╣рдордиреЗ рд░рдгрдиреАрддрд┐ рдмрджрд▓рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдкрд┐рдЫрд▓реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдпреИрдВрдбреЗрдХреНрд╕ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЛ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдФрд░ рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдирдИ рд░рдгрдиреАрддрд┐ рдиреЗ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмреЗрдо-рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛-рдХреЛрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдпрд╛ред


рдЗрд╕реЗ рд░реЛрдХреЛ! рдЖрдЦрд┐рд░ рдХреНрдпреЛрдВ рд╣реБрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛?

рд╣рдордиреЗ рдЗрд╕реЗ HTML рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрдЦрд╛ рдФрд░ рдмрд╛рдж рдореЗрдВ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЬреЗрдПрд╕ рдШрдЯрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдореИрдиреБрдЕрд▓ рд╕рдорд░реНрдерди рд╕реЗ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, BEMHMTL рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдФрд░ рдЬреЗрдПрд╕ рдШрдЯрдХреЛрдВ рдХреЛ рдПрдХ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ред


v1.0.0


рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╣рдордиреЗ рд░рд┐рдПрдХреНрдЯ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ 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'; //     : var Hello = [ require('path/to/desktop/Hello/Hello.js'), require('path/to/touch/Hello/Hello.js') ][0].applyDecls(); 

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


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


рдЕрдВрдд рдореЗрдВ, рдЬреЛ рдЕрдЪреНрдЫрд╛ рдерд╛:


  • рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд, рдШреЛрд╖рдгрд╛рддреНрдордХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЬреЛ рдЖрдкрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХрд╣реАрдВ рднреА рдШрдЯрдХ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рднрд╛рдЧреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ;
  • рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдХреЛрдИ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЪреЗрди рдирд╣реАрдВ;
  • рдЙрдкрдпреЛрдЧ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдШрдЯрдХред

рдФрд░ рдпрд╣ рдмреБрд░рд╛ рдерд╛:


  • TypeScript/Flow;
  • React- ;
  • - ;
  • .

v2.0.0


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'; } //   Text class Text extends Elem { block = 'Button'; elem = 'Text'; tag() { return 'span'; } } //   Button class Button<T extends IModsProps> extends Block<T> { block = 'Button'; tag() { return 'button'; } mods() { return { type: this.props.type }; } content() { return ( <Text>{this.props.children}</Text> ); } } //    Button,    type   link class ButtonLink extends Button<IModsProps> { static mod = ({ type }: any) => type === 'link'; tag() { return 'a'; } mods() { return { type: this.props.type }; } attrs() { return { href: 'www.yandex.ru' }; } } //   Button  ButtonLink const ButtonView = withMods(Button, ButtonLink); ReactDOM.render( <React.Fragment> <ButtonView type='button'>Click me</ButtonView> <ButtonView type='link'>Click me</ButtonView> </React.Fragment>, document.getElementById('root') ); 

, .


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:


  • CSS-.
  • (, );

. . React.ComponentType -. HOC compose .


.


dependency injection, React.ContextAPI . , , . , . DI тАФ HOC, . . , , .


, , . , , 4 , 1.5Kb .


. рдЕрдВрдд рддрдХ рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рджред , React . .

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


All Articles