ÐÑÐ¾Ñ Ñаздел опиÑÑÐ²Ð°ÐµÑ Ð½Ð°Ð±Ð¾Ñ ÑовÑеменнÑÑ ÑÑандаÑÑов Ð´Ð»Ñ Â«Ð²ÐµÐ±-компоненÑов».
Ðа ÑекÑÑий моменÑ, ÑÑи ÑÑандаÑÑÑ Ð½Ð°Ñ Ð¾Ð´ÑÑÑÑ Ð² пÑоÑеÑÑе ÑазÑабоÑки. ÐекоÑоÑÑе ÑиÑи имеÑÑ Ñ Ð¾ÑоÑÑÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÑ Ð¸ инÑегÑаÑÐ¸Ñ Ð² ÑовÑеменнÑй ÑÑандаÑÑ HTML/DOM, в Ñо вÑÐµÐ¼Ñ ÐºÐ°Ðº дÑÑгие пока еÑÑ Ð² ÑеÑÐ½Ð¾Ð²Ð¸ÐºÐ°Ñ . ÐÑ Ð¼Ð¾Ð¶ÐµÑе попÑобоваÑÑ Ð¿ÑимеÑÑ Ð² лÑбом ÑовÑеменном бÑаÑзеÑе (Google Chrome, ÑкоÑее вÑего, Ð¸Ð¼ÐµÐµÑ Ð½Ð°Ð¸Ð±Ð¾Ð»ÐµÐµ полнÑÑ Ð¿Ð¾Ð´Ð´ÐµÑжкÑ, Ñак как ÑебÑÑа из Google ÑÑоÑÑ Ð·Ð° болÑÑинÑÑвом ÑпеÑиÑикаÑий по ÑÑой Ñеме).
ЧÑо обÑего междÑâ¦
Ридее ÑамоÑÑоÑÑелÑного компоненÑа Ð½ÐµÑ Ð½Ð¸Ñего нового. Такой Ð¿Ð¾Ð´Ñ Ð¾Ð´ иÑполÑзÑеÑÑÑ Ð²Ð¾ Ð¼Ð½Ð¾Ð³Ð¸Ñ ÑÑеймвоÑÐºÐ°Ñ .
ÐÑежде Ñем Ð¼Ñ Ð¿Ð¾Ð³ÑÑзимÑÑ Ð² деÑали ÑеализаÑии, взглÑниÑе на ÑÑо великое доÑÑижение ÑеловеÑеÑÑва:
ÐÑо междÑнаÑÐ¾Ð´Ð½Ð°Ñ ÐºÐ¾ÑмиÑеÑÐºÐ°Ñ ÑÑанÑÐ¸Ñ (ÐÐС).
Ð ÑÑо Ñо, как она ÑÑÑÑоена (пÑиблизиÑелÑно):
ÐеждÑнаÑÐ¾Ð´Ð½Ð°Ñ ÐºÐ¾ÑмиÑеÑÐºÐ°Ñ ÑÑанÑиÑ:
- СоÑÑÐ¾Ð¸Ñ Ð¸Ð· множеÑÑва компоненÑов.
- ÐаждÑй ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ Ð² ÑÐ²Ð¾Ñ Ð¾ÑеÑедÑ, ÑоÑÑÐ¾Ð¸Ñ Ð¸Ð· множеÑÑва более Ð¼ÐµÐ»ÐºÐ¸Ñ Ð´ÐµÑалей.
- ÐомпоненÑÑ Ð¸Ð¼ÐµÑÑ Ð¾ÑÐµÐ½Ñ Ñложное ÑÑÑÑойÑÑво, и гоÑаздо Ñложнее болÑÑинÑÑва ÑайÑов.
- ÐомпоненÑÑ ÑазÑабоÑÐ°Ð½Ñ Ð½Ð° междÑнаÑодной оÑнове, командами из ÑазнÑÑ ÑÑÑан и говоÑÑÑÐ¸Ñ Ð½Ð° ÑазнÑÑ ÑзÑÐºÐ°Ñ .
â¦Ð ÑÑа ÑÑÑка леÑаеÑ, поддеÑÐ¶Ð¸Ð²Ð°Ñ Ð¶Ð¸Ð·Ð½Ð¸ лÑдей в коÑмоÑе!
Ðак ÑоздаÑÑÑÑ ÑÑÐ¾Ð»Ñ ÑложнÑе ÑÑÑÑойÑÑва?
Ðакие пÑинÑÐ¸Ð¿Ñ Ð¼Ñ Ð¼Ð¾Ð³Ð»Ð¸ Ð±Ñ Ð¿Ð¾Ð·Ð°Ð¸Ð¼ÑÑвоваÑÑ, ÑÑÐ¾Ð±Ñ ÑделаÑÑ Ð½Ð°ÑÑ ÑазÑабоÑÐºÑ Ñакой же надÑжной и маÑÑÑабиÑÑемой? Ðли, по кÑайней меÑе, пÑиблизиÑÑÑÑ Ðº ÑÐ°ÐºÐ¾Ð¼Ñ ÑÑовнÑ.
ÐомпоненÑÐ½Ð°Ñ Ð°ÑÑ Ð¸ÑекÑÑÑа
ХоÑоÑо извеÑÑное пÑавило ÑазÑабоÑки Ñложного пÑогÑаммного обеÑпеÑÐµÐ½Ð¸Ñ Ð³Ð»Ð°ÑиÑ: не Ñоздавай Ñложное пÑогÑаммное обеÑпеÑение.
ÐÑли ÑÑо-Ñо ÑÑановиÑÑÑ ÑложнÑм â Ñаздели ÑÑо на более пÑоÑÑÑе ÑаÑÑи и Ñоедини наиболее оÑевиднÑм ÑпоÑобом.
ХоÑоÑий аÑÑ Ð¸ÑекÑÐ¾Ñ â ÑÑо ÑоÑ, кÑо Ð¼Ð¾Ð¶ÐµÑ ÑделаÑÑ Ñложное пÑоÑÑÑм.
ÐÑ Ð¼Ð¾Ð¶ÐµÐ¼ ÑазделиÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑÑкий инÑеÑÑÐµÐ¹Ñ Ð½Ð° визÑалÑнÑе компоненÑÑ: каждÑй из Ð½Ð¸Ñ Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ ÑÐ²Ð¾Ñ Ð¼ÐµÑÑо на ÑÑÑаниÑе, вÑполнÑÐµÑ Ð¾Ð¿ÑеделÑннÑÑ Ð·Ð°Ð´Ð°ÑÑ, и оÑделен Ð¾Ñ Ð¾ÑÑалÑнÑÑ .
РаÑÑмоÑÑим какой-нибÑÐ´Ñ ÑайÑ, напÑÐ¸Ð¼ÐµÑ Twitter.
Ðн еÑÑеÑÑвеннÑм обÑазом ÑазделÑн на компоненÑÑ:
- ÐеÑÑ Ð½ÑÑ Ð½Ð°Ð²Ð¸Ð³Ð°ÑиÑ.
- ÐаннÑе полÑзоваÑелÑ.
- ÐÑÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸ÑаÑÑÑÑ.
- ФоÑма оÑпÑавки ÑообÑениÑ.
- (а Ñак же 6 и 7) â ÑообÑениÑ.
ÐомпоненÑÑ Ð¼Ð¾Ð³ÑÑ ÑодеÑжаÑÑ Ð¿Ð¾Ð´ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½ÑÑ, напÑÐ¸Ð¼ÐµÑ ÑообÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ ÑаÑÑÑми ÑодиÑелÑÑкого компоненÑа «ÑпиÑок ÑообÑений». ÐликабелÑное ÑоÑо полÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑамоÑÑоÑÑелÑнÑм компоненÑом и Ñ.д.
Ðак Ð¼Ñ Ð¾Ð¿ÑеделÑем, ÑÑо ÑвлÑеÑÑÑ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñом? ÐÑо пÑÐ¸Ñ Ð¾Ð´Ð¸Ñ Ð¸Ð· ÑообÑажений здÑавого ÑмÑÑла, а Ñакже Ñ Ð¸Ð½ÑÑиÑией и опÑÑом. ÐбÑÑно ÑÑо обÑекÑ, оÑделимÑй визÑалÑно, коÑоÑÑй Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ опиÑаÑÑ Ñ ÑоÑки зÑÐµÐ½Ð¸Ñ Ñого, ÑÑо он Ð´ÐµÐ»Ð°ÐµÑ Ð¸ как он взаимодейÑÑвÑÐµÑ Ñо ÑÑÑаниÑей. РпÑимеÑе вÑÑе, ÑÑÑаниÑа ÑодеÑÐ¶Ð¸Ñ Ð±Ð»Ð¾ÐºÐ¸, каждÑй из коÑоÑÑÑ Ð¸Ð³ÑÐ°ÐµÑ ÑÐ²Ð¾Ñ ÑолÑ, и логиÑно вÑделиÑÑ Ð¸Ñ Ð² компоненÑÑ.
ÐÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ Ð¸Ð¼ÐµÐµÑ:
- Ñвой ÑобÑÑвеннÑй JavaScript-клаÑÑ.
- DOM-ÑÑÑÑкÑÑÑа ÑпÑавлÑеÑÑÑ Ð¸ÑклÑÑиÑелÑно Ñвоим клаÑÑом, и внеÑний код не Ð¸Ð¼ÐµÐµÑ Ðº ней доÑÑÑпа (пÑинÑип «инкапÑÑлÑÑии»).
- CSS-ÑÑили, пÑименÑннÑе к компоненÑÑ.
- API: ÑобÑÑиÑ, меÑÐ¾Ð´Ñ ÐºÐ»Ð°ÑÑа и Ñ.п., Ð´Ð»Ñ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð´ÐµÐ¹ÑÑÐ²Ð¸Ñ Ñ Ð´ÑÑгими компоненÑами.
ÐÑÑ Ñаз замеÑим, в компоненÑном Ð¿Ð¾Ð´Ñ Ð¾Ð´Ðµ как Ñаковом Ð½ÐµÑ Ð½Ð¸Ñего оÑобенного.
СÑÑеÑÑвÑÐµÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво ÑÑеймвоÑков и меÑодов ÑазÑабоÑки Ð´Ð»Ñ Ð¸Ñ ÑозданиÑ, каждÑй из коÑоÑÑÑ Ñо Ñвоими плÑÑами и минÑÑами. ÐбÑÑно оÑобÑе CSS клаÑÑÑ Ð¸ ÑоглаÑÐµÐ½Ð¸Ñ Ð¸ÑполÑзÑÑÑÑÑ Ð´Ð»Ñ ÑмÑлÑÑии компоненÑов â облаÑÑи видимоÑÑи CSS и инкапÑÑлÑÑÐ¸Ñ DOM.
«Ðеб-компоненÑÑ» пÑедоÑÑавлÑÑÑ Ð²ÑÑÑоеннÑе возможноÑÑи бÑаÑзеÑа Ð´Ð»Ñ ÑÑого, поÑÑÐ¾Ð¼Ñ Ð½Ð°Ð¼ болÑÑе не нÑжно ÑмÑлиÑоваÑÑ Ð¸Ñ .
- ÐолÑзоваÑелÑÑкие ÑлеменÑÑ â Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑелÑÑÐºÐ¸Ñ HTML-ÑлеменÑов.
- Теневой DOM â Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð²Ð½ÑÑÑеннего DOM компоненÑа, ÑкÑÑÑого Ð¾Ñ Ð¾ÑÑалÑнÑÑ .
- ÐблаÑÑи видимоÑÑи CSS â Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ ÑÑилей, коÑоÑÑе пÑименÑÑÑÑÑ ÑолÑко внÑÑÑи Ñеневого DOM компоненÑа.
- ÐеÑенапÑавление ÑобÑÑий и дÑÑгие мелоÑи Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð±Ð¾Ð»ÐµÐµ ÑдобнÑÑ Ð² ÑазÑабоÑке полÑзоваÑелÑÑÐºÐ¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñов.
Ð ÑледÑÑÑей главе Ð¼Ñ Ð¿Ð¾Ð³ÑÑзимÑÑ Ð² «полÑзоваÑелÑÑкие ÑлеменÑÑ» â ÑÑндаменÑалÑнÑÑ Ð´Ð»Ñ Ð²ÐµÐ±-компоненÑов ÑÐµÑ Ð½Ð¾Ð»Ð¾Ð³Ð¸Ñ, имеÑÑÑÑ Ñ Ð¾ÑоÑÑÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÑ Ð² бÑаÑзеÑÐ°Ñ .

ÐомменÑаÑии
<code>, Ð´Ð»Ñ Ð½ÐµÑколÑÐºÐ¸Ñ ÑÑÑок кода — Ñег<pre>, еÑли болÑÑе 10 ÑÑÑок — ÑÑÑÐ»ÐºÑ Ð½Ð° пеÑоÑниÑÑ (plnkr, JSBin, codepenâ¦)