Как мы делали БЭМ. Почему некоторые места сделаны именно так. Что лежит в основе методологии. Что важно, а что можно менять по своему вкусу. Какие технологии мы используем и как они облегчают нам разработку.
Возможно многие из вас уже пишут по БЭМу, просто не догадываются об этом, ведь БЭМ на самом деле не требует даже классов вида .block__element, срыв покровов в блице.
Web Standards Days
Kyiv
28 ноября 2015
#wstdays
https://wsd.events/2015/11/28/
Видео: https://www.youtube.com/watch?v=_Sx5jvT0qEU&t=2h22m00s
Слайды: http://bit.ly/bem-in-the-wild
Как сверстать сайт вручную «по-БЭМ» без классов "block__element__element", и на реальном примере со всеми его проблемами, а не меню-пункт_меню-ссылочка, как вы видели раньше. Без BEMJSON, BEM Tools, но с миксованием, модификаторами и разбором ошибок.
Я знаком с БЭМ давно, и все эти годы встречался с множеством заблуждений и стереотипов в использовании. В докладе постарался развеять популярные мифы и рассказал о своём трехлетнем опыте внедрения и использования БЭМ и связанным с этим наступании на грабли.
WebCamp: Front-end Developers Day
Одесса
4 июля 2015
#WebCampOdessa
#OIW2015
#WebCamp2015
Видео: https://youtu.be/hTmxbJF2Tts
Слайды: http://delka.github.io/talks/webcamp/2015/bem/
С ростом кодовой базы становится все более очевидной необходимость использования компонентного подхода, когда каждая логическая часть обособлена. Если говорить про JavaScript, то в нем есть области видимости, опираясь на которые можно соорудить изолированные компоненты. Но в CSS нет подобных механизмов, поэтому и придумываются Shadow DOM (Web Components) и различные методики вроде БЭМ.
Но что если взглянуть на проблему под другим углом? Адаптируя подходы, что уже используются для других задач, можно получить куда больше выгоды, чем просто изолированные стили!
FrontendConf, Москва, 21 мая 2015
WSD, Санкт-Петербург, 20 июня 2015
Запись трансляции: https://youtu.be/V7bnSOwuO4M?t=1h31m33s
В последнее время во фронтенде появляется столько нового и внедряется настолько быстро, что не все успевают осознать последствия. Хорошо это или плохо? Рассмотрим некоторые новинки с точки зрения «за», а главное – «против».
Конференция FrontTalks, Екатеринбург, 19 сентября
Видео: https://vimeo.com/107694664
Инструменты разные нужны, инструменты разные важныRoman Dvornov
В мире фронтенда уже существует большое количество инструментов: как браузерных, так и консольных. Но достаточно ли этих инструментов? Мне кажется, что нет. Веб-приложения становятся все больше и сложнее, и многое остается вне нашего поля зрения. Потому фреймворки и приложения должны предоставлять дополнительные инструменты, упрощающие разработку и улучшающие понимание того, что же происходит у них там — «под капотом». В ходе доклада я расскажу о таких инструментах: какими они могут быть, какие задачи могут решать, что необходимо для их создания.
CodeFest, Новосибирск, 28 марта 2015
http://www.youtube.com/watch?v=HMTc3DERw5c
Не бойся, это всего лишь данные... просто их многоRoman Dvornov
За последние 15 лет веб сильно изменился и ускорился. Но большинство по-прежнему боится большого количества данных и сложной логики на клиенте. Потому что "тормозит".
Я хочу сломать стереотипы и показать, как начать делать крутые штуки на client-side. Тысячи и сотни тысяч объектов, разные типы, зависимые вычисляемые свойства, агрегация, множество вариантов отображения. Все это в вашем браузере. Без тормозов, регистраций, смс.
Видео этого доклада на конференции DUMP, Екатеринбург, 14 марта 2014: https://vimeo.com/90836493
Возможно многие из вас уже пишут по БЭМу, просто не догадываются об этом, ведь БЭМ на самом деле не требует даже классов вида .block__element, срыв покровов в блице.
Web Standards Days
Kyiv
28 ноября 2015
#wstdays
https://wsd.events/2015/11/28/
Видео: https://www.youtube.com/watch?v=_Sx5jvT0qEU&t=2h22m00s
Слайды: http://bit.ly/bem-in-the-wild
Как сверстать сайт вручную «по-БЭМ» без классов "block__element__element", и на реальном примере со всеми его проблемами, а не меню-пункт_меню-ссылочка, как вы видели раньше. Без BEMJSON, BEM Tools, но с миксованием, модификаторами и разбором ошибок.
Я знаком с БЭМ давно, и все эти годы встречался с множеством заблуждений и стереотипов в использовании. В докладе постарался развеять популярные мифы и рассказал о своём трехлетнем опыте внедрения и использования БЭМ и связанным с этим наступании на грабли.
WebCamp: Front-end Developers Day
Одесса
4 июля 2015
#WebCampOdessa
#OIW2015
#WebCamp2015
Видео: https://youtu.be/hTmxbJF2Tts
Слайды: http://delka.github.io/talks/webcamp/2015/bem/
С ростом кодовой базы становится все более очевидной необходимость использования компонентного подхода, когда каждая логическая часть обособлена. Если говорить про JavaScript, то в нем есть области видимости, опираясь на которые можно соорудить изолированные компоненты. Но в CSS нет подобных механизмов, поэтому и придумываются Shadow DOM (Web Components) и различные методики вроде БЭМ.
Но что если взглянуть на проблему под другим углом? Адаптируя подходы, что уже используются для других задач, можно получить куда больше выгоды, чем просто изолированные стили!
FrontendConf, Москва, 21 мая 2015
WSD, Санкт-Петербург, 20 июня 2015
Запись трансляции: https://youtu.be/V7bnSOwuO4M?t=1h31m33s
В последнее время во фронтенде появляется столько нового и внедряется настолько быстро, что не все успевают осознать последствия. Хорошо это или плохо? Рассмотрим некоторые новинки с точки зрения «за», а главное – «против».
Конференция FrontTalks, Екатеринбург, 19 сентября
Видео: https://vimeo.com/107694664
Инструменты разные нужны, инструменты разные важныRoman Dvornov
В мире фронтенда уже существует большое количество инструментов: как браузерных, так и консольных. Но достаточно ли этих инструментов? Мне кажется, что нет. Веб-приложения становятся все больше и сложнее, и многое остается вне нашего поля зрения. Потому фреймворки и приложения должны предоставлять дополнительные инструменты, упрощающие разработку и улучшающие понимание того, что же происходит у них там — «под капотом». В ходе доклада я расскажу о таких инструментах: какими они могут быть, какие задачи могут решать, что необходимо для их создания.
CodeFest, Новосибирск, 28 марта 2015
http://www.youtube.com/watch?v=HMTc3DERw5c
Не бойся, это всего лишь данные... просто их многоRoman Dvornov
За последние 15 лет веб сильно изменился и ускорился. Но большинство по-прежнему боится большого количества данных и сложной логики на клиенте. Потому что "тормозит".
Я хочу сломать стереотипы и показать, как начать делать крутые штуки на client-side. Тысячи и сотни тысяч объектов, разные типы, зависимые вычисляемые свойства, агрегация, множество вариантов отображения. Все это в вашем браузере. Без тормозов, регистраций, смс.
Видео этого доклада на конференции DUMP, Екатеринбург, 14 марта 2014: https://vimeo.com/90836493
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...IT-Portfolio
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
Аннотация
Не так давно с некоторым изумлением узнал, что Java для нагруженных систем представляется совершенной terra incognita. Хотя и совершенно не хочется бороться с мифами, по крайней мере, с удовольствием расскажу, как просто и без хлопот использовать Java в вебе. Про "суровый" highload рассказывать не буду, а вот про простые решения - с удовольствием. Ну и на закуску расскажу, за что я нежно люблю блобы.
О себе
Teamlead сколько себя помню, успел поработать и в "Яндекс.Деньгах" и в "БК Марафон". Люблю простые решения, сложные задачи и хорошую коммуникацию.
<p><a><img src="http://strana-sovetov.com/images/stories/tip/health/calm-the-nerves_big.jpg"></a></p>
<p>Now therefore, if ye have done truly and sincerely, in that ye<br>have made Abimelech king, and if ye have dealt well with Jerubbaal and<br>his house, and have done unto him according to the deserving of his<br>hands; 9:17 (For my father fought for you, and adventured his life<br>far, and delivered you out of the hand of Midian: 9:18 And ye are<br>risen up against my father’s house this day, and have slain his sons,<br>threescore and ten persons, upon one stone, and have made Abimelech,<br>the son of his maidservant,
king over the men of Shechem, because he<br>is your brother;) 9:19 If ye then have dealt truly and sincerely with<br>Jerubbaal and with his house this day, then rejoice ye in Abimelech,<br>and let him also rejoice in you: 9:20 But if not, let fire come out<br>from Abimelech, and devour the men of Shechem, and the house of Millo;<br>and let fire come out from the men of Shechem, and from the house of<br>Millo, and devour Abimelech.<br><br>9:21 And Jotham ran away, and fled, and went to Beer, and dwelt there,<br>for
fear of Abimelech his brother.<br><br>9:22 When Abimelech had reigned three years over Israel, 9:23 Then God<br>sent an evil spirit between Abimelech and the men of Shechem; and the<br>men of Shechem dealt treacherously with Abimelech: 9:24 That the<br>cruelty done to the threescore and ten sons of Jerubbaal might come,<br>and their blood be laid upon Abimelech their brother, which slew them;<br>and upon the men of Shechem, which aided him in the killing of his<br>brethren.<br><br>
Мастер-класс наоборот: вы пишете БЭМ-проект, а мы подсказываем — Евгений Конс...Yandex
На прошлых BEMup’ах мы проводили мастер-классы по полному стеку БЭМ-технологий, на которых в реальном времени писали SSSR — агрегатор информации из социальных сетей. В этот раз мы хотим попробовать новый формат и дать вам возможность писать код самим. Для эффективной работы мы приготовим всё необходимое: настроенное окружение, задания с необходимой теоретической справкой, чтобы вы шаг за шагом освоили БЭМ-технологии, и тесты, на которых вы легко проверите, что выполнили задания правильно. И конечно, останемся в полном вашем распоряжении, чтобы отвечать на вопросы, помогать и советовать. Будет весело!
Как подготовиться
Для участия в мастер-классе вам потребуется ноутбук и аккаунт на GitHub, так как все задания мы берём из репозитория и складываем туда же выполненные. Нужный репозиторий находится здесь: bem/do-it-yourself-workshop — подпишитесь на него, пожалуйста.
Наши инструменты протестированы под Mac OS и Linux. Если вы используете Windows, вам потребуется виртуальная машина с Ubuntu. Мы рекомендуем установить Vagrant, VirtualBox и заранее скачать для него образ Ubuntu.
В системе должны быть установлены git, node.js, консоль и браузер.
Мы рассчитываем, что у вас есть базовые навыки по общению с Unix-консолью, вы умеете клонировать git-репозитории и имеете представление о npm. Также нелишним будет освежить базовую информацию о БЭМ и пройти туториал «Создаём свой проект на БЭМ», если у вас есть время и желание.
Презентация мастер-класса "Создание динамических пользовательских интерфейсов и AJAX-приложений промышленного класса с помощью Dojo Toolkit и Zend Framework"
БЭМ — это технология разработки сайтов, которые нужно быстро создать и долго поддерживать. Она используется в разработке фронтенда почти всех сервисов Яндекса и успела обрасти большим набором библиотек и инструментов, которым мы хотим с вами поделиться.
Имея в своих руках обширный арсенал БЭМ со всей его модульностью и мощью, остаётся «всего-то» придумать идею и реализовать её. На мастер-классе вы сможете вместе с нами создать то, что мы «только что» придумали.
Вы узнаете, в чём преимущество вёрстки независимыми блоками и что такое «уровни переопределения», познакомитесь с готовыми библиотеками блоков и инструментами для автоматизации сборки. Мы покажем, как разные инструменты для упрощения жизни разработчика, вроде autoprefixer, css-препроцессора roole и модульной системы YModules, встраиваются в процесс разработки на БЭМ и создают по-настоящему удобную платформу. На живом примере мы объясним, в чём польза декларативного подхода, когда одни и те же идеи можно использовать как для CSS, так и для JS. Более того, декларативным шаблонам: BEMHTML и BEMTREE, которые позволяют преобразовывать сырые данные во view-ориентированный BEMJSON, — будет посвящена одна из трёх частей мастер-класса.
В результате получится работающий сайт, а вы на практике познакомитесь с полным стеком БЭМ-технологий.
После мастер-класса запланировано дополнительное время на полезное общение: вы сможете рассказать о трудностях, с которыми встретились при реализации проекта на БЭМ, и мы вместе подумаем, как воплотить вашу идею в жизнь.
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...IT-Portfolio
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
Аннотация
Не так давно с некоторым изумлением узнал, что Java для нагруженных систем представляется совершенной terra incognita. Хотя и совершенно не хочется бороться с мифами, по крайней мере, с удовольствием расскажу, как просто и без хлопот использовать Java в вебе. Про "суровый" highload рассказывать не буду, а вот про простые решения - с удовольствием. Ну и на закуску расскажу, за что я нежно люблю блобы.
О себе
Teamlead сколько себя помню, успел поработать и в "Яндекс.Деньгах" и в "БК Марафон". Люблю простые решения, сложные задачи и хорошую коммуникацию.
<p><a><img src="http://strana-sovetov.com/images/stories/tip/health/calm-the-nerves_big.jpg"></a></p>
<p>Now therefore, if ye have done truly and sincerely, in that ye<br>have made Abimelech king, and if ye have dealt well with Jerubbaal and<br>his house, and have done unto him according to the deserving of his<br>hands; 9:17 (For my father fought for you, and adventured his life<br>far, and delivered you out of the hand of Midian: 9:18 And ye are<br>risen up against my father’s house this day, and have slain his sons,<br>threescore and ten persons, upon one stone, and have made Abimelech,<br>the son of his maidservant,
king over the men of Shechem, because he<br>is your brother;) 9:19 If ye then have dealt truly and sincerely with<br>Jerubbaal and with his house this day, then rejoice ye in Abimelech,<br>and let him also rejoice in you: 9:20 But if not, let fire come out<br>from Abimelech, and devour the men of Shechem, and the house of Millo;<br>and let fire come out from the men of Shechem, and from the house of<br>Millo, and devour Abimelech.<br><br>9:21 And Jotham ran away, and fled, and went to Beer, and dwelt there,<br>for
fear of Abimelech his brother.<br><br>9:22 When Abimelech had reigned three years over Israel, 9:23 Then God<br>sent an evil spirit between Abimelech and the men of Shechem; and the<br>men of Shechem dealt treacherously with Abimelech: 9:24 That the<br>cruelty done to the threescore and ten sons of Jerubbaal might come,<br>and their blood be laid upon Abimelech their brother, which slew them;<br>and upon the men of Shechem, which aided him in the killing of his<br>brethren.<br><br>
Мастер-класс наоборот: вы пишете БЭМ-проект, а мы подсказываем — Евгений Конс...Yandex
На прошлых BEMup’ах мы проводили мастер-классы по полному стеку БЭМ-технологий, на которых в реальном времени писали SSSR — агрегатор информации из социальных сетей. В этот раз мы хотим попробовать новый формат и дать вам возможность писать код самим. Для эффективной работы мы приготовим всё необходимое: настроенное окружение, задания с необходимой теоретической справкой, чтобы вы шаг за шагом освоили БЭМ-технологии, и тесты, на которых вы легко проверите, что выполнили задания правильно. И конечно, останемся в полном вашем распоряжении, чтобы отвечать на вопросы, помогать и советовать. Будет весело!
Как подготовиться
Для участия в мастер-классе вам потребуется ноутбук и аккаунт на GitHub, так как все задания мы берём из репозитория и складываем туда же выполненные. Нужный репозиторий находится здесь: bem/do-it-yourself-workshop — подпишитесь на него, пожалуйста.
Наши инструменты протестированы под Mac OS и Linux. Если вы используете Windows, вам потребуется виртуальная машина с Ubuntu. Мы рекомендуем установить Vagrant, VirtualBox и заранее скачать для него образ Ubuntu.
В системе должны быть установлены git, node.js, консоль и браузер.
Мы рассчитываем, что у вас есть базовые навыки по общению с Unix-консолью, вы умеете клонировать git-репозитории и имеете представление о npm. Также нелишним будет освежить базовую информацию о БЭМ и пройти туториал «Создаём свой проект на БЭМ», если у вас есть время и желание.
Презентация мастер-класса "Создание динамических пользовательских интерфейсов и AJAX-приложений промышленного класса с помощью Dojo Toolkit и Zend Framework"
БЭМ — это технология разработки сайтов, которые нужно быстро создать и долго поддерживать. Она используется в разработке фронтенда почти всех сервисов Яндекса и успела обрасти большим набором библиотек и инструментов, которым мы хотим с вами поделиться.
Имея в своих руках обширный арсенал БЭМ со всей его модульностью и мощью, остаётся «всего-то» придумать идею и реализовать её. На мастер-классе вы сможете вместе с нами создать то, что мы «только что» придумали.
Вы узнаете, в чём преимущество вёрстки независимыми блоками и что такое «уровни переопределения», познакомитесь с готовыми библиотеками блоков и инструментами для автоматизации сборки. Мы покажем, как разные инструменты для упрощения жизни разработчика, вроде autoprefixer, css-препроцессора roole и модульной системы YModules, встраиваются в процесс разработки на БЭМ и создают по-настоящему удобную платформу. На живом примере мы объясним, в чём польза декларативного подхода, когда одни и те же идеи можно использовать как для CSS, так и для JS. Более того, декларативным шаблонам: BEMHTML и BEMTREE, которые позволяют преобразовывать сырые данные во view-ориентированный BEMJSON, — будет посвящена одна из трёх частей мастер-класса.
В результате получится работающий сайт, а вы на практике познакомитесь с полным стеком БЭМ-технологий.
После мастер-класса запланировано дополнительное время на полезное общение: вы сможете рассказать о трудностях, с которыми встретились при реализации проекта на БЭМ, и мы вместе подумаем, как воплотить вашу идею в жизнь.
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Yandex
Лекция Дмитрия Васильева в Школе вебмастеров: «Технические особенности создания сайта».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Сайт — расплывчатое понятие
Раньше под словом «сайт» понимался набор HTML-страниц, расположенных в домене второго или третьего уровня. Появление социальных сетей размыло это понятие.
Как выбрать домен
Различные варианты, и какой из них подойдёт именно вашему сайту: доменные зоны, читаемые и нечитаемые домены, кириллица и латиница.
Подходы к созданию сайтов
Первые сайты делались на чистом HTML. Сейчас такой способ ещё встречается, но подавляющее большинство веб-страниц создаются при помощи CMS, фреймворков, конструкторов.
Составные сущности: структура, макеты дизайна, интерактивные элементы, контент, система прав. Размещение сайта на хостинге. Российские и зарубежные, дорогие и дешевые, облачные и традиционные провайдеры. Кратко о тонкостях взаимодействия с ними.
Что такое HTTPS
Всё более популярный безопасный протокол доступа к сайту. Нужен ли он вам и в каких случаях. Как выбрать платформу для сайта, основные системы управления сайтом (CMS) и конструкторы.
Сайт после запуска
Сайты создаются с конкретной целью, обычно связанной с получением дохода. Как контент сайта и его технические характеристики напрямую могут влиять на бизнес-эффективность.
More than fifty years ago, Paul Erd˝os and Alfred R´enyi discovered that the random graph G(n, p) underwent a phase transition (in modern language) near p = 1/n. For p a bit smaller (e.g., 0.99/n) all of the components were very small and had simple structures. But for p a bit bigger (e.g., 1.01/n) a “giant component” had emerged with a complex behavior. We now understand how to slow down this process so as to see the incipient giant component (the dominant component) at an early stage and to define a Critical Window through which the process moves from subcriticality to supercriticality.
Владимир Гриненко "i-bem.js: JavaScript в БЭМ-терминах"Yandex
Рассказ о том, как писать декларативный объектно-ориентированный JavaScript в БЭМ-терминах. Демонстрируются возможности блока i-bem из opensource библиотеки bem-bl для написания собственных блоков.
Александр Баумгертнер — Преимущества БЭМ для небольших проектов и компанийYandex
БЭМ хорош не только для крупных проектов и больших команд. БЭМ — не про именование CSS-классов и i-bem. Он вполне подходит для прототипирования. В докладе пойдет речь о библиотеке для создания основных блоков (форма регистрации, список новостей и статей, категория товаров, карточка товара, форма заказа и т.д.), сборке статичной html-версии сайта и практике разработки.
С ростом кодовой базы становится все более очевидной необходимость использования компонентного подхода, когда каждая логическая часть обособлена. Если говорить про JavaScript, то в нем есть области видимости, опираясь на которые можно соорудить изолированные компоненты. Но в CSS нет подобных механизмов, поэтому и придумываются Shadow DOM (Web Components) и различные методики вроде БЭМ.
Но что если взглянуть на проблему под другим углом? Адаптируя подходы, что уже используются для других задач, можно получить куда больше выгоды, чем просто изолированные стили!
Шаблонизация основанная на работе с DOM становится трендом: React, Ractive, Basis.js уже используют этот подход, другие идут в эту сторону. Главным преимуществом подхода считается скорость, но оно далеко не единственное!
В докладе немного рассказано о возможностях, что дает DOM подход.
Полный обзор существующих частей БЭМ-экосистемы. Рассказ о том, что у нас есть сейчас, в какой оно степени готовности, в чём нам можно помочь в разработке БЭМ, а также о наших желаниях на будущее.
Сергей Бережной, Варвара Степанова "Как использовать БЭМ! вне Яндекса"Yandex
Есть мнение, что БЭМ! можно применять только в Яндексе и подобных больших компаниях для сложных проектов. Мы расскажем, почему это не так. Доклад ориентирован на любого веб-разработчика, а примеры будут основываться на таких задачах как: вёрстка HTML+CSS по PSD, написание JS компонент, сборка динамического сайта с использованием PHP/Django/RoR.
Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"Yandex
28 мая 2011, Я.Субботник в Киеве
Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"
О докладе:
В докладе идет речь о внедрении используемой в Яндексе системы верстки на любой проект. Доводы «за» и рассказы о многочисленных плюсах перехода на БЭМ-верстку прилагаются.
Как не потерять контроль над написанным кодом через полгода? Как организовать работу нескольких верстальщиков при сохранении единства кода? Действительно ли нужно каждый раз верстать похожие блоки заново? Если вы хоть раз задавались подобными вопросами, то есть хорошая новость. Судя по всему, вам очень поможет используемая в Яндексе система верстки абсолютно независимыми блоками. Именно о внедрении и практическом использовании этой системы на ваших сайтах и пойдет речь в этом докладе.
Предсказание оттока игроков из World of TanksYandex
Одна из наиболее часто возникающих задач в бизнес-аналитике для компаний — это предсказание оттока клиентов. Ведь если заранее знать, что клиент собирается уйти к конкуренту, его можно попытаться остановить. Задача будет рассмотрена на примере прогнозирования оттока игроков из World of Tanks.
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Yandex
Лекция Сергея Царика в Школе вебмастеров: «Как принять/организовать работу по поисковой оптимизации сайта».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Основные этапы и методы поисковой оптимизации
Рассмотрим проработку стратегии продвижения, планирование ресурсов на проект, поймем как нужно прорабатывать семантическое ядро для продвижения, разберемся с очередностью всех работ.
Разложим по полочкам основные приемы оптимизации в связке с внутренними и внешними факторами ранжирования поисковых систем, а также в связке с поведенческими факторами и характеристиками. Разберемся с тем, что же должен делать оптимизатор для достижения топа.
Что должно включать в себя ТЗ на поисковую оптимизацию
Разберемся с основными блоками технического задания от оптимизатора, с тем, каким оно должно быть с точки зрения подачи информации и ее глубины.
Сравнение in-house подхода и агентства
Рассмотрим все «за» и «против» оптимизатора в штате компании и вне её.
На основе каких метрик нужно оценивать эффективность оптимизаторской работы
Выделим ключевые показатели эффективности работы оптимизатора, рассмотрим процесс их измерения, динамику, разберемся с возможными «миксами» и их связкой с мотивацией подрядчика.
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаYandex
Лекция Юлия Тихоход в Школе вебмастеров: «Структурированные данные на поиске»
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Что такое микроразметка и в чём её польза
Что такое микроразметка (семантическая разметка, семантическая микроразметка) и кому она нужна. Очень кратко — всё, что я знаю о применении семантической разметки поисковыми системами и другими веб-сервисами.
Передача данных в машиночитаемом виде
Какие ещё есть способы передать данные о сайте поисковым системам кроме микроразметки, особенности разных способов. Что бывает с плохими вебмастерами, которые пытаются обмануть поисковые системы и передать неверные данные.
Типы разметки
Из чего состоит микроразметка, какие бывают словари и синтаксисы. Популярные сочетания словарей и синтаксисов, как правильно выбирать нужную комбинацию для своего сайта.
Передача данных об интернет-магазине
Разбор семантической разметки: что в принципе доступно для разметки в интернет-магазине, что это даёт, а что можно не размечать вовсе.
Проверка правильности микроразаметки
Ошибки в микроразметке, способы их обнаружения и исправления. Популярные валидаторы микроразметки. Какие ошибки непременно нужно исправлять, а что можно игнорировать.
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаYandex
Лекция Сергея Лысенко в Школе вебмастеров: «Представление сайта в поиске»
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Основные элементы сниппетов: как влиять на их формирование
Как по внешнему виду и содержанию визитки судят, стоит ли «связываться», так и по представлению сайта на странице выдачи пользователи решают, стоит ли переходить на сайт. Как изменить представление сайта в выдаче поисковых систем? Что может повлиять на CTR и что для этого нужно сделать? Рассмотрим фавиконки, навигационные цепочки, быстрые ссылки и многое, многое другое.
Зачем нам заголовок: как им управлять
Что должно быть в заголовке, а чего уж точно не стоит делать. Как избавиться от мусора и расставить акценты. И как это скажется на представлении сайта в поиске.
Основной контент аннотации и мета-описания: что нам они дают
Сниппет — зачем он нужен? Как обрабатываются данные для аннотаций? Что в сниппете помогает, а что мешает пользователю сориентироваться? Как подсказать поисковой системе, что выводить в сниппете? От Open Graf до schema.org. Инструменты, возможности, рекомендации.
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Yandex
Лекция Екатерины Гладких в Школе вебмастеров: «Плохие методы продвижения сайта»
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Как завязывают с портянками
Как использовать wordstat, чтобы превратить текст в SEO-портянку. Как Яндекс определяет текстовый спам и какие ограничения могут быть применены к сайтам, злоупотребляющим ключевыми словами.
Эффектное размещение SEO-ссылок
Какие бывают SEO-ссылки и как они классифицируются в базе Яндекса. В чём отличие SEO-ссылок от рекламы. Как размещать SEO-ссылки наиболее эффектно. Методы борьбы против ссылочного спама – АГС и Минусинск. Снятие ссылок.
Поведенческие факторы, медитативные практики
Популярные сервисы накрутки: как это работает и как это не работает. Методы накрутки и методы борьбы с мошенничеством. Примеры пользовательских сессий и кто на самом деле посещает ваш сайт. Как выйти из-под санкций за накрутку поведенческих факторов.
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Yandex
Лекция Сергея Царика и Антона Роменского в Школе вебмастеров: «Основные принципы ранжирования»
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Как работает поиск
При запросе пользователя к поисковой системе происходит множество процессов, которые позволяют дать наиболее релевантный ответ. Рассмотрим основные механизмы формирования выдачи: формулы, Матрикснет, персонализацию и обновления.
Что учитывается при ранжировании сайтов
Так как сайты разные и по-разному решают пользовательские задачи, при ранжировании поисковой системе нужно учитывать множество факторов. Поговорим о том, что обязательно должно быть на сайте для правильной индексации.
Ещё о факторах ранжирования
Какой контент действительно важен и как его правильно представить. Для правильного ранжирования сайта важно разобраться с его региональной привязкой. Разберёмся, какой регион присваивать сайту и как сделать это правильно.
Реальный кейс долгосрочной работы над позициями
Посмотрим на реальном примере, как изменялись основные жизненные характеристики (трафик, конверсии) сайта на пути в топ выдачи поисковых систем.
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Yandex
Лекция Александра Смирнова в Школе вебмастеров: «Основные принципы индексирования сайта».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Как поиск находит страницу, её путь до появления в поиске
Поисковые системы постоянно собирают информацию о страницах в интернете. Как же это происходит и как добавить страницы своего сайта в поиск? Проверка индексирования сайта.
Как управлять роботом (зеркала, sitemap, robots.txt)
Множество сайтов в интернете доступны сразу по нескольким адресам. Как указать поисковому роботу на основной и как скорректировать индексирование?
Особенности индексирования
Современные сайты используют различные технологии в своей работе. Рассмотрим, как настроить их правильно и сделать контент доступным для робота.
Как улучшить индексирование (дубли, HTTP-ответ, удаление из поиска)
В поиск попадают различные страницы, которые известны роботу. Какие нужны, а какие нет? Как повлиять на их индексирование?
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Yandex
Лекция Александра Лукина в Школе вебмастеров: «Мобильное приложение: как и зачем»
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Проектирование. Быть или не быть
Обсудим обоснование для разработки мобильного приложения — какую ценность оно может принести для проекта и бизнеса. Определим основные типы приложений и сценарии использования. Рассмотрим основные технологии и выбор оптимальных для конкретных задач. ТЗ — как оценить и какие особенности необходимо учесть.
Разработка. Важные детали
На что обратить внимание на этапе разработки и тестирования, заметки по специфике мобильных экосистем. Выбираем арсенал SDK для всестороннего анализа проекта в полёте.
Публикация и продвижение
Кратко рассмотрим специфику Google Play и AppStore. Проведём экскурс в мир мобильного маркетинга, подчеркнём сходства с вебом и отличия от него. Рассмотрим ключевые метрики для анализа продукта и процесса продвижения, а также способы их повышения.
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Yandex
Лекция Олега Ножичкина в Школе вебмастеров: «Сайты на мобильных устройствах»
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Статистика и тренды по мобильному интернету
Основные показатели мобильного интернет-рынка. Тенденции роста мобильной аудитории.
Новые алгоритмы ранжирования поисковых систем
Адаптация сайта к мобильным пользователям и её влияние на позиции в поисковой выдаче.
Возможности для бизнеса в мобильном вебе
Мобильный сайт позволяет воспользоваться дополнительными возможностями взаимодействия с пользователем. Рассмотрим конкретные примеры.
Мобильный сайт и приложение — в чём разница
Чем отличается мобильное приложение от мобильно сайта. Какие преимущества и недостатки у каждого варианта.
Представление сайтов на мобильных устройствах
Адаптивные сайты. Мобильные сайты. Сайты для десктопа. Чем они отличаются, какие преимущества у каждого типа и нужно ли переключаться между мобильной и десктоп-версиями?
Удобный мобильный сайт для пользователя
Поведение пользователей на мобильном сайте. Отличия от десктопа, достижение целей и простые правила увеличения конверсии.
Специфика разработки мобильного сайта
Особенности проектирования, разработки и тестирования сайтов.
Инструменты для разработки мобильных сайтов
Готовые инструменты для проектирования и тестирования. Примеры фреймворков.
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Yandex
Лекция Юрия Батиевского в Школе вебмастеров: «Качественная аналитика сайта»
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Что мы хотим от аналитики сайта
На какие вопросы должна отвечать аналитика сайта. Как аналитика сайта связана с аналитикой бизнеса. На какие блоки можно поделить аналитику онлайн-процессов. Какой должна быть идеальная аналитическая система.
Анализ общих показателей бизнеса
Как построить систему аналитики бизнеса в интернете. Ключевые показатели эффективности (KPI). Построение воронки продаж. Business Intelligence — сквозная аналитика всех процессов.
Обзор инструментов для анализа сайта и аудитории
Яндекс.Метрика и Google Analytics как основа веб-аналитики. Инструменты для веб-мастеров. Инструменты для анализа действий пользователей (Kiss-metrics, Woopra, Mixpanel). Системы для подсчета целевых действий, CPA и ROMI.
Анализ каналов привлечения клиентов
Как анализировать источники трафика. Популярные инструменты для анализа.
Пройти тест по теме
Процесс развертывания системы аналитики сайта
Подготовка к установке систем веб-аналитики. Тонкости установки и настройки трекеров. Подключение коллтрекинга и дополнительных инструментов фиксации целевых действий. Настройка пользовательских сценариев. Пример по анализу пользовательского сценария.
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Yandex
Лекция Петра Аброськина в Школе вебмастеров: «Что можно и что нужно измерять на сайте».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Базовые принципы веб-аналитики
Как работает веб-аналитика и какие подводные камни есть в учёте и анализе данных. Как правильно работать с данными.
Основные метрики и термины
Посетители, визиты, глубина просмотра, время на сайте — какие метрики важны и чем они отличаются.
Как выбрать правильный KPI
Самый важный этап в веб-аналитике и продвижении сайта. Какие цели выбрать интернет-магазину, сайту услуг, контентному проекту и т.д.
Ключевые группы отчетов и применение знаний на практике
Семь главных типов отчётов для бизнеса. Анализ контекстной рекламы, SEO и контента сайта — на конкретных примерах.
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Yandex
Лекция Алексея Бородкина в Школе вебмастеров: «Как правильно поставить ТЗ на создание сайта».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
ТЗ: две буквы с большим потенциалом
Что такое техническое задание. Какое место оно занимает в веб-разработке. Какие цели преследует. И каким требованиям оно должно отвечать.
Что нужно сделать, прежде чем садиться за ТЗ
Зачем нужна подготовка к написанию ТЗ. Какую информацию нужно собрать и как выстроить этот процесс. На каком этапе веб-разработки нужно писать ТЗ — и что будет, если этот момент упустить. Какое отношение имеют к ТЗ прототипы, пользовательские истории и прочие инструменты проектирования.
Хорошее ТЗ
Как соединить в один документ описание интерфейсов, структуру данных и много чего ещё. Структура правильного, хорошего ТЗ с подробным разбором каждого пункта. С какой стороны приступать и как эффективнее всего выстроить работу.
Кто должен писать ТЗ
Кто может написать хорошее ТЗ. Где найти такого человека и как встроить его в общие процессы. Что делать, если ТЗ пишет сам заказчик.
Плохое ТЗ
Популярные ошибки. Чем они ужасны и как их избежать.
Жизнь с ТЗ
По какой схеме нужно согласовывать ТЗ. Как применять его в дальнейшей работе. Кому не нужно показывать ТЗ ни при каких обстоятельствах. Что делать, если ТЗ никому не нравится.
ТЗ по ГОСТ: ад на Земле
Краткая история развития ТЗ со времён Брежнева и до наших дней. Почему я старательно избегаю слова «ТЗ». Почему вы должны нервно вздрагивать при слове «ГОСТ». Что делать, если вы работаете с госзаказчиком.
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровYandex
Лекция Петра Волкова в Школе вебмастеров: «Как защитить свой сайт».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Актуальные типы угроз и динамика их развития
Компрометация сервера и её последствия. Распределённые атаки типа «отказ в обслуживании». Подмена или добавление рекламы на стороне клиента. Атаки, направленные на пользователей. Проблемы, связанные со внешним содержимым.
Управление рисками безопасности веб-сайтов
Разные типы сайтов подвержены разным типам рисков информационной безопасности. Понимание целей и подходов злоумылшенников как ключ к эффективному снижению рисков. Методы монетизации атак на сайты.
Доступный инструментарий и методики для обеспечения безопасности
Открытые инструменты форензики для типовых и сложных проектов. Системы обнаружения вторжений, подходы к проектированию безопасности в архитектуре и процессах.
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Yandex
Лекция Дмитрия Сатина в Школе вебмастеров: «Как правильно составить структуру сайта».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Структура сайта, ориентированная на человека; построение структуры, карточная сортировка
Содержимое сайтов часто организовано так, как кажется удобным разработчику или контент-менеджеру компании. Чаще всего такие структуры неудобны для реальных посетителей, потому что не совпадают с их знаниями, не поясняют, как устроен материал, и не помогают найти желаемое. Структура, ориентированная на пользователя, повышает вероятность того, что посетители найдут нужную информацию или товар и сделают это быстро.
Стройте структуру, исходя из пользовательских сценариев. Выделение на сайте разделов, соответствующих структуре компании или схеме процесса закупки, как правило, усложняет навигацию для пользователя. Правильная структура учитывает уровень знаний покупателя и использует понятные ему термины и способы группировки.
Разные типы структур, средства навигации, дальнейший поиск информации на странице
Структуры сайтов, на которых ищут что-то определённое, отличаются от тех, что используются на сайтах, посетители которых ещё не уверены, что именно они хотят или как называется нужная вещь. Строгие структуры — например, организация по наименованию товара, производителю, — предполагают один способ группировки. При нестрогой организации данные можно группировать по теме, по жизненной ситуации и так далее. Используйте средства навигации, которые помогают понять, как организован материал. Решая, какой будет визуальная реализация навигации на сайте, необходимо учитывать количество разделов и связи �
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Yandex
Лекция Елены Першиной в Школе вебмастеров: «Конструкторы для отдельных элементов сайта».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
О пользе тех или иных технологий
Взгляд в будущее, короткий обзор других полезных технологий и «опасностей», которые подстерегают на пути к правильному их выбору.
Как выбрать поиск для сайта
Поиск для сайта — важный инструмент навигации. Чтобы оценить качество поиска по своему сайту, посмотрите на количество уходов со страницы результатов. Полнота, скорость индексирования, обработка запросов (исправление ошибок, опечаток, неправильной раскладки) — без этого невозможно представить качественный поиск.
Как выбрать карты для сайта
Уход посетителя с сайта на «большие» Яндекс.Карты за точной информацией об организации может обернуться потерей клиента, который уже был готов к покупке. Чтобы этого не допустить, лучше сделать интерактивную карту прямо на сайте.
Автоматизация оплаты на сайте
Люди привыкают платить картой, сегодня даже уличные киоски принимают их. Поэтому многим посетителям кажется «подозрительным» интернет-магазин, в котором недоступны электронные платежи. Начать приём банковских карт в онлайне очень просто, главное выбрать для этого подходящую технологию.
Перевод важных страниц
На каких языках говорит ваша аудитория, много ли у вас посетителей из-за рубежа? Ответы на эти вопросы даст Яндекс.Метрика. Именно она поможет оценить, нужно ли тратиться на профессионального переводчика и готовить отдельные описания товаров или новости на других языках. Во многих случаях для совершения покупки достаточно и простого машинного перевода. Узнайте, как его настроить, чтобы ключевые разделы сайта автоматически переводились для иностранных посетителей.
Социальная интеграция
Как заставить пользователей говорить о себе в социальных сетях? В первую очередь нужно сделать хороший продукт или услугу, но и без удобного инструмента для «шаринга» в соцсетях — никуда. Рекомендации о том, как выбрать и установить такой инструмент к себе на сайт.
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Yandex
Лекция Катерины Ерошиной в Школе вебмастеров: «Контент для интернет-магазинов».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Виды контента для интернет-магазинов
Основные страницы, карточки товаров, каталог в целом. Письма покупателям. Статьи для интернет-магазина.
Основные сервисные страницы: что нужно знать покупателю
О страницах доставки, оплаты, контактов, условий работы.
Страница товара интернет-магазина: какой нужен текст, чтобы товар нашли
Признаки товаров. Сниппеты товарных позиций. Когда текст не нужен вообще. Постоянная и техническая информация на карточке.
Блог и внешние публикации интернет-магазина
О чем писать, чтобы подогреть интерес к магазину. Сторителлинг. UGC: методы вовлечения (кратко).
Персонализация интернет-магазина: стать ближе к покупателю
Красивый пример личного бренда директора магазина.
Копирайтинг для интернет-магазина: на чём можно и нельзя экономить
Что делать, если у вас 100 000 товарных позиций и они постоянно меняются.
Хорошее ТЗ копирайтеру для наполнения интернет-магазина
Что должен знать копирайтер, чтобы не писать ерунду.
Как оценить работу копирайтера
Стандартные проверки. Контроль качества текста средствами аналитики.
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Yandex
Лекция Катерины Ерошиной в Школе вебмастеров: «Как написать хороший текст для сайта».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Назначение и типы текстов на сайте и вне его
Цель текста — влиять на поведение пользователя. Самое простое — информировать, самое сложное — привести к покупке. Виды текстов для внешних публикаций. Белые книги и другие способы подтвердить экспертизу.
Контент-план для наполнения, развития сайта и внешних публикаций
Как проектировать контент для нового сайта. Как наращивать информационную массу сайта. Внешние контакты с потребителем.
Разные уровни вовлечения: информируем, продаём, помогаем
Пройти по пути покупателя, выдавать информацию, необходимую для совершения следующего шага. Ловушки на этом пути.
Информационный стиль: применение с пониманием
Чистить текст без фанатизма. Эмоциональное вовлечение. Рациональное обоснование.
Структура и вёрстка
Заголовки и подзаголовки, списки, абзацы, иерархия подачи информации.
SEO-аспекты и LSI-копирайтинг
Понимание ценности ключей. Зачем копирайтеру нужно семантическое ядро.
Оценка качества текста (чеклист)
Уникальность, фактическая достоверность, соответствие целям, информационная плотность, грамотность.
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Yandex
Лекция Алексея Иванова в Школе вебмастеров: «Usability и дизайн: как не помешать пользователю».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Что такое юзабилити и почему оно важно
Поведение пользователей на сайте и достижение ими запланированных целей зависит не только от контента, но и от удобства сайта.
Информационное и функциональное наполнение сайта
Перед созданием сайта нужно правильно определить, какая информация и какой функционал должны быть на сайте. При этом нужно исходить не из того, что у вас есть, а из того, что будет нужно будущим посетителям вашего сайта.
Проектирование входных страниц
В зависимости от целей сайта и источников посетителей нужно сформулировать требования к входным страницам сайта и их содержанию.
Сценарии поведения пользователя
Для правильного распределения информации нужно описать сценарии взаимодействия с сайтом для разных групп посетителей. Рассмотрим методы совмещения разных сценариев на одном сайте.
Пройти тест по теме
Управление конверсией
В большинстве случаев мы ждем от посетителя сайта какого-то целевого действия. Это может быть регистрация, отправка заявки, звонок или что-то ещё. Вы увидите способы мотивации посетителей к совершению целевого действия для различных типов сайтов.
Пройти тест по теме
Основные принципы распределения информации
В рамках этого блока вы увидите, как нужно распределять информацию на странице, чтобы посетители увидели всё, что вы хотите им показать.
Мобильная версия сайта и принципы юзабилити
Всё больше посетителей приходят на сайт с мобильных устройств. Рассмотрим основные особенности взаимодействия с информацией с мобильного устройства и подходы к адаптации сайта под них.
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Yandex
Лекция Алексея Иванова в Школе вебмастеров Яндекса: «Сайт. Зачем он и каким должен быть».
https://academy.yandex.ru/events/webmasters_school/yawebm2015/
Типы сайтов и потребности аудитории
В зависимости от решаемых задач, сайты можно разделить на несколько характерных типов с разными функциями и контентом. Перед созданием сайта важно понять, чего ждут посетители и какими хотят видеть веб-страницы. При этом на один и тот же сайт может попадать разная аудитория, которая ведёт себя по-разному и каждая имеет свои потребности. Для каждого сегмента нужно разработать отдельные сценарии взаимодействия с информацией на вашей площадке.
Сайт с точки зрения бизнеса
Чаще всего сайт создается для решения конкретных бизнес-задач. Рассмотрим различные типы монетизации сайтов и особенности каждого из них.
Основные показатели и методы измерения
Одно из главных преимуществ цифровых каналов — детальная аналитика взаимодействия посетителей с сайтом. В данном блоке рассмотрим основные инструменты измерения, ключевые показатели сайта, на которые нужно обращать внимание, и подходы к интерпретации полученных данных для принятия решений.
Эталонное описание фильма на основе десятков дубликатовYandex
Как сравнить миллионы описаний фильмов — из десятков источников и на разных языках? Как структурировать полученные данные и для каждого фильма агрегировать их в максимально полную информационную карточку?
Речь пойдёт о разных подходах к решению этой задачи (детерминированном, вероятностном, или методом машинного обучения), о необходимых библиотеках и инструментах, а также о сходных задачах.
Эталонное описание фильма на основе десятков дубликатов
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"
1. История создания БЭМ
Кратко, сбивчиво и неполно
Виталий Харисов
@harisov #b_ #yasubbotnik
Я.Субботник, Минск, 2 июня 2012 года
Сегодня я вам расскажу историю создания БЭМ, откуда взялись сущности БЭМ и почему они сейчас
именно такие.
В конце покажу, что БЭМ гибок и может применяться в том объёме, в каком это возможно в вашем
проекте.
2. Статья
clubs.ya.ru/bem/replies.xml?item_no=1398
2
Всё, что сейчас расскажу подробно описано в статье, опубликованной в нашем клубе на Яру.
4. Яндекс.Адреса, 2005
4
Когда я начал работать над Яндекс.Адресами в далёком 2005 году, вёрстку я делал так.
5. Яндекс.Адреса, 2005
Файловая система
about.html
index.html
…
adresa.css
adresa.js
i/
yandex.png
5
На файловой системе:
• Делались статические html-странички
• Стили для них складывались в один файл на весь проект — adresa.css
• Скрипты — в adresa.js. Скриптов было очень мало
• Картинки — в директорию в отдельную директорию
6. Яндекс.Адреса, 2005
Структура CSS-файла
/* Content container (begin) */
#body
{
font: 0.8em Arial, sans-serif;
margin: 0.5em 1.95% 0.5em 2%;
}
/* Content container (end) */
6
Все стили были в одном файле и для отделения стилей разных частей страницы использовались
комментарии с указанием начала и конца.
В вёрстке использовались как id, так и классы.
7. Яндекс.Музыка, 2006
7
Адреса были маленьким проектом с несколькими страницами и такой подход к вёрстке был
удобен.
При вёрстке первой версии Яндекс.Музыки в начале 2006 стало понятно, что для проекта с
большим количеством разных страниц этот подход работает плохо.
Тяжело подбирать названия классам, код всего проекта сложно держать в голове и писать так,
чтобы изменения на одной странице ничего не ломали на другой.
8. Яндекс.Музыка, 2006
Типичный CSS код
/* Albums (begin) */
.result .albums .info {…}
.result .albums .info i {…}
.result .albums .album .listen {…}
/* Albums (end) */
8
Типичный код того времени.
Используется длинный каскад.
9. Яндекс.Музыка, 2006
Типичный CSS код
/* Картинки на фоне (begin) */
.#foot div {…}
.#foot div div {…}
…
.#foot div div div div div div {…}
/* Картинки на фоне (end) */
9
Или вот ещё пример.
Используются id и тэги.
10. Яру, 2006
10
Одновременно с Музыкой началась вёрстка Яру.
Это проект с десятками страниц и такой подход не работает — вёрстка становится
неуправляемой.
11. Появление блоков
11
И мы ввели понятие блока для частей страниц, которые имеют самостоятельное значение в
дизайне.
12. Яру, 2006
Появление блоков
b- block
независимый блок, может использоваться
в любом месте страницы
с- control
контрол (независимый блок) с которым
ассоциирован javascript-объект
g- global
глобальное определение, используется по
необходимости, количество сведено к минимуму
12
Классы блоков получили префиксы (b-, c-, g-), чтобы отличаться от классов внутри.
14. Яру, 2006
Появление элементов
/* Head (begin) */
.b-head {…}
/* Search (begin) */
.b-head .search {…}
.b-head .search div div,
.b-head .search div div i {…}
/* Search (end) */
14
Элементы, у которых много кода, выделялись комментариями.
16. Яру, 2006
Структура вёрстки проекта
index.html
css/
yaru.css
yaru-ie.css
js/
yaru.js
i/
yandex.png
16
Ввели директории для технологий css и js.
17. Яру, 2006
yaru.css
/* Common definitions (begin) */
body {…}
* html body {…}
/* Common definitions (end) */
/* Head (begin) */
.b-head {…}
/* Head (end) */
17
Валидные хаки для MSIE писали в основном CSS-файле.
19. Зачатки общепортального
фреймворка
19
При верстке нескольких проектов с похожим дизайном есть общие блоки.
Очень быстро понимаешь, что copy/paste этих блоков с проекта на проект не выход и надо делать
common.
Так появилось общее хранилище для стилей шапки, подвала, статического текста на специальном
сервере.
20. Зачатки общепортального фреймворка
Структура CSS-файла
@import url(http://…/css/head/common.css);
@import url(http://…/css/foot/common.css);
/* Header (begin) */
/* Service (begin) */
.b-head .service h1 {…}
.b-head .service h1,
.b-head .service h1 a {…}
20
Cтили с него подключались в основной проектный файл с помощью импортов.
Чтобы с этим можно было уйти в продакшн, появился процесс сборки, во время которого вместо
@import подставляется содержимое этих файлов.
21. Вёрстка независимыми
блоками
21
К осени 2007 года правила вёрстки уже устоялись, и о них захотелось рассказать вне Яндекса.
22. Доклад на ClientSide‘2007
«Вёрстка независимыми блоками»
22
На ClientSide'2007 я сделал доклад «Вёрстка независимыми блоками»
23. Доклад на ClientSide‘2007
Статья
vitaly.harisov.name/
article/independent-blocks.html
23
Содержимое доклада можно прочитать в статье, а я сейчас расскажу самое важное.
24. Доклад на ClientSide‘2007
Блок
Блоком будем называть фрагмент
страницы, который описывается
своей разметкой и стилями.
24
В докладе вводится понятие «Блок».
25. Доклад на ClientSide‘2007
Правила независимости блока
1) для описания элемента используется
class, но не id
2) каждый блок имеет префикс
3) в таблице стилей нет классов
вне блоков
clubs.ya.ru/bem/replies.xml?item_no=4
25
Формулируются правила независимости блока.
Отказ от id даёт возможность использовать один и тот же блок несколько раз на странице.
А также позволяет использовать на одном DOM-узле несколько классов, что в дальнейшем нам
пригодилось.
26. Доклад на ClientSide‘2007
Простые и составные блоки
В простые блоки нельзя вкладывать
другие блоки, в составные — можно.
clubs.ya.ru/bem/replies.xml?item_no=42
26
Блоки делятся на простые и составные.
В простые блоки нельзя вкладывать другие блоки, в составные — можно.
Это было очень наивное деление, мы неоднократно сталкивались с тем, что даже в самые простые
блоки вкладывались другие и приходилось переделывать вёрстку.
27. Доклад на ClientSide‘2007
Полная независимость блоков
1) никогда не опираться на элементы,
только на классы:
.b-user b => .b-user .first-letter
2) всем классам внутри блока давать
имена начинающиеся с имени этого
блока:
.b-user .first-letter => .b-user__first-letter
27
Так же были сформулированы правила полной независимости блоков:
1) Нельзя использовать теги в селекторах
2) Нужно задавать каждому DOM-узлу свой класс
28. Доклад на ClientSide‘2007
Абсолютно-независимые блоки
clubs.ya.ru/bem/replies.xml?item_no=43
28
Позже мы назвали это АНБ (абсолютно-независимые блоки): clubs.ya.ru/bem/replies.xml?
item_no=43
Но класс у каждого DOM-узла существенно увеличивает HTML-код.
На тот момент мы считали, что это дорого и применяли такой подход в исключительных случаях.
29. Доклад на ClientSide‘2007
Префиксы
Имена блоков начинаются с префиксов
b- обычные блоки
h- обёртки
l- раскладки
g- глобальные стили
29
Тогда же, сформулировали правила для префиксов.
30. Доклад на ClientSide‘2007
Модификация блоков
1. Модификация блока от контекста
2. Модификация постфиксом
не зависимо от контекста,
добавляя постфикс к имени блока:
b-block b-block-postfix
30
Ввели понятие модификации:
1. Блок может изменить свой внешний вид в зависимости от того, где он находится.
Это модификация от контекста.
2. Можно добавить блоку второй класс, это модификация постфиксом, она не зависит от
контекста.
31. Общепортальный фреймворк
31
Весной 2008 года была поставлена задача сделать брендбук, описывающий наш портальный
стиль.
Я начал с того, что умел лучше всего — делать HTML/CSS код.
Если делать просто описание — оно устареет, не успев дописаться до конца.
33. Лего 1.0, 2008
Структура репозитория
css/
html/
js/
xml/
xsl/
33
Первичное разделение на верхнем уровне репозитория идёт по технологиям.
В каждой технологии своя структура.
34. Лего 1.0, 2008
Структура репозитория: CSS
css/
block/
b-dropdown/
b-dropdown.css
service/
auto/
block/
b-head-logo-auto.css
head.css
util/
b-hmenu/
b-hmenu.css
34
CSS раскладывается в три разные директории.
35. Лего 1.0, 2008
Структура репозитория: CSS
css/
block/
b-dropdown/
b-dropdown.css
service/
auto/
block/
b-head-logo-auto.css
head.css
util/
b-hmenu/
b-hmenu.css
35
block — общепортальные блоки
util — блоки, которые имеют смысл вне Яндекса, их можно выложить в Open Source
service — стили для конкретных сервисов Яндекса, подключив их на сервис можно отобразить
шапку, подвал
36. Лего 1.0, 2008
Структура репозитория: HTML
html/
block/
b-dropdown.html
service/
auto/
l-head.html
util/
b-hmenu.html
36
Структура директории html аналогична css.
37. Лего 1.0, 2008
Структура репозитория: JS
js/
check-is-frame.js
check-session.js
clean-on-focus.js
dropdown.js
event.add.js
event.del.js
37
JS находится в зачаточном состоянии.
38. Лего 1.0, 2008
Структура репозитория: XML
xml/
block/
b-head-tabs-communication.xml
common-services.ru.xml
head-messages.ru.xml
service/
auto/
head.xml
38
У каждого сервиса есть XML-файл, использующийся для построения шапки.
39. Лего 1.0, 2008
Структура репозитория: XSL
xsl/
block/
b-dropdown.xsl
b-head-line.xsl
i-common.xsl
i-locale.xsl
l-foot.xsl
l-head.xsl
39
XSL блоков лежит в одной директории.
Каждому блоку соответствует один файл.
40. Лего 1.0, 2008
Что ещё можно выделить
Подключение через svn:externals
Директории из Лего подключались на проект
Статическая линковка
40
Подключение Лего на проекты делалось через svn:externals.
При сборке для продакшена, код библиотеки полностью включается в проект, что можно сравнить
со статической линковкой.
Такой подход позволяет выпускать версии сервисов с разными версиями Лего и переходить на
новую версию, когда это удобно команде проекта.
Мы используем его до сих пор.
41. Лего 1.0, 2008
Что ещё можно выделить
Ручная поддержка структуры
@import url(../../block/l-head/
l-head.css);
Файлы состоят из import’ов
@import url(../../block/b-head-logo/
b-head-logo.css);
@import url(../../block/b-head-logo/
b-head-logo_name.css);
@import url(block/b-head-logo-auto.css);
41
Файлы, подключавшиеся на страницах, состояли из @import'ов реализации блоков.
Эти import’ы писались вручную.
42. Лего 1.0, 2008
Что ещё можно выделить
Именование файлов ещё не устоялось
42
Именование файлов ещё не устоялось, мы пробуем разные варианты.
43. Лего 1.0, 2008
Что ещё можно выделить
Префиксы:
b- визуальные блоки
l- раскладка блоков
i- вспомогательные блоки
43
Используются три типа префиксов:
b- для визуальных блоков
l- для блоков задающих раскладку
i- для вспомогательных блоков
44. Лего 1.2, 2008
44
Чуть позже в рамках версии 1.2 был сделан рефакторинг…
46. Лего 1.2, 2008
Структура репозитория: CSS
common/
css/
b-dropdown/
arr/
b-dropdown.arr.css
b-dropdown.arr.ie.css
b-dropdown.css
b-dropdown.ie.css
46
Убрано разделение на util и block, весь общий CSS лежит в common/css.
От идеи выноса кода в Open Source на тот момент отказались.
Вернулись к ней только через два года.
47. Лего 1.2, 2008
Структура репозитория: CSS
common/
css/
b-dropdown/
arr/
b-dropdown.arr.css
b-dropdown.arr.ie.css
b-dropdown.css
b-dropdown.ie.css
47
Файлы для MSIE переименованы.
Расширения у файлов теперь могут быть из нескольких слов.
48. Лего 1.2, 2008
Структура репозитория: CSS
common/
css/
b-dropdown/
arr/
b-dropdown.arr.css
b-dropdown.arr.ie.css
b-dropdown.css
b-dropdown.ie.css
48
Опциональный CSS блоков вынесен в директории.
В основном файле блока стало меньше кода.
49. Лего 1.2, 2008
Структура репозитория: CSS
.b-head-tabs-grey
.b-head-tabs_grey
b-head-tabs_grey.css
49
Для модификации постфиксом вместо минуса начали использовать подчёркивание.
Это позволило визуально отделить имя блока от модификатора, что потом пригодилось при
реализации инструментов, помогающих работать с кодом.
50. БЭМ
50
В марте 2009 выходит версия Лего 2.0.
Этим событием заканчивается «Вёрстка независимыми блоками» и начинается «БЭМ».
51. Лего 2.0, 2009
51
Что же принципиально изменилось с выходом версии 2.0?
52. Лего 2.0, 2009
Блоки первичны
Блоки первичны
Технологии вторичны
clubs.ya.ru/bem/replies.xml?item_no=237
52
Самое главное изменение — мы вывели вперёд блоки, а не технологии.
Блоки стали первичны, а технологии их реализации — вторичны.
Реализация блока делалась в отдельной директории, а технологии — это файлы внутри неё.
В том числе появилась документация к блоку — это файл .wiki внутри блока.
53. Терминология
53
Какими терминами мы тогда оперировали?
54. Лего 2.0, 2009
Терминология: Блоки
XML: <lego:l-head>
<lego:b-head-logo>
HTML: <table class="l-head">
<div class="b-head-logo">
CSS: .l-head
.b-head-logo
54
Независимый блок,
который может быть использован в любом месте страницы.
В XML он представлен тегом в неймспейсе lego, в HTML класс у блока, такой же, как имя этого
тега.
55. Лего 2.0, 2009
Терминология: Блоки
common/
block/
b-head-logo/
b-head-logo.css
b-head-logo.xsl
b-head-logo.js
b-head-logo.wiki
55
Все файлы (css, js, html, xsl), относящиеся к блоку, кладутся в его директорию.
56. Лего 2.0, 2009
Терминология: Элементы
XML: <lego:b-head-logo>
<lego:name/>
</lego:b-head-logo>
HTML: <div class="b-head-logo">
<span class="name">Авто</span>
</div>
CSS: .b-head-logo .name
56
Элементы в XML пишутся в неймспейсе lego без префикса.
Класс в HTML — тоже без префикса.
57. Лего 2.0, 2009
Терминология: Элементы
common/
block/
b-head-logo/
name/
b-head-logo.name.css
b-head-logo.name.png
b-head-logo.name.wiki
57
Файлы для вложенного элемента кладутся в отдельную директорию.
58. Лего 2.0, 2009
Терминология: Модификаторы
XML: <lego:b-head-tabs lego:theme="grey">
HTML: <div class="b-head-tabs
b-head-tabs_grey">
CSS: .b-head-tabs_grey
58
Модификаторы в XML представлены атрибутами в неймспейсе lego.
В HTML используется дополнительный класс.
59. Лего 2.0, 2009
Терминология: Модификаторы
common/
block/
b-head-logo/
_theme/
b-head-logo_gray.css
b-head-logo_gray.png
b-head-logo_gray.wiki
59
Файлы для модификатора кладутся в отдельную директорию, с подчёркиванием в начале имени.
Модификатор имеет тип и значение.
61. Лего 2.0, 2009
Декларация
<lego:page>
<lego:l-head>
<lego:b-head-logo>
<lego:name/>
</lego:b-head-logo>
<lego:b-head-tabs
type="search-and-content"/>
61
…в XML-файле.
Из него генерируются…
62. Лего 2.0, 2009
Генерируется CSS
@import url(../../common/block/
b-head-logo/b-head-logo.css);
@import url(../../common/block/
b-head-logo/name/
b-head-logo.name.css);
@import url(block/
b-head-logo/b-head-logo.css);
62
…CSS-файлы.
Сначала идёт общий код, а потом добавляются стили, чтобы привести лего-блоки к дизайну
проекта.
Имена файлов элементов пишутся через точку: b-head-logo.name.css
63. Лего 2.0, 2009
Генерируется JS
include("../../common/block/
i-locale/i-locale.js");
include("../../common/block/
b-dropdown/b-dropdown.js");
include("../../common/block/b-search/
sample/b-search.sample.js");
63
Из XML-декларации генерируются и JS-файлы.
64. Лего 2.0, 2009
Генерируется XSL
<xsl:import href="../../common/block/
l-head/l-head.xsl"/>
<xsl:import href="../../common/block/
b-head-logo/b-head-logo.xsl"/>
<xsl:import href="../../common/block/
b-head-logo/name/
b-head-logo.name.xsl"/>
64
А также XSL-файлы.
Мы перестали писать эти файлы руками, началась генерация кода.
65. Проблема скорости
селекторов, 2009
65
При реализации новой версии Яндекс.Почты была задача сделать её такой быстрой как программа
на компьютере.
Но возникли проблемы.
При исследовании обнаружили, что тормозят селекторы CSS.
66. Скорость селекторов, 2009
clubs.ya.ru/bem/replies.xml?item_no=338
66
Результаты исследования подробно описаны в статье.
67. Скорость селекторов, 2009
Решение
Абсолютно-Независимые Блоки (АНБ)
clubs.ya.ru/bem/replies.xml?item_no=43
67
Мы поняли, что решение этой проблемы у нас есть давно — это абсолютно-независимые блоки.
68. Скорость селекторов, 2009
Решение
<div class="b-head-logo">
<span class="b-head-logo__name">
Авто
</span>
</div>
68
В классы элементов вносится имя блока, селекторы получаются простыми и быстрыми.
69. Стабилизация нотации
69
Постепенно мы пришли к тому, что нотация в коде и структура на файловой системе устоялась и с
тех пор уже не меняется.
70. Стабилизация нотации
Разделитель элемента
Было
b-block.elem.css
Стало
b-block__elem.css
70
В именах файлов разделитель . был заменён на __.
Теперь они совпадают с CSS-селекторами.
71. Стабилизация нотации
Модификаторы элементов
.b-block__elem_theme_green
по аналогии с
.b-block_theme_green
71
Были реализованы модификаторы у элементов по аналогии с модификаторами блоков.
72. Стабилизация нотации
Тип модификатора
Было
.b-menu__item_current
Стало
.b-menu__item_state_current
72
В имя файла модификатора и в его класс внесён тип модификатора.
Причина этого изменения — работа с модификаторами из JS.
73. Open Source (2010)
github.com/bem
73
В 2010 году мы создали организацию bem на github’е чтобы вести разработку в open source.
74. Библиотека блоков bem-bl
74
Мы начали выносить блоки из Лего в bem-bl, проводя одновременно с этим рефакторинг.
75. Библиотека блоков bem-bl
github.com/bem/bem-bl
clubs.ya.ru/bem/posts.xml?tag=8486525
75
Вместе с выносом блоков публиковали информацию про них в клубе.
Работы по выносу блоков в Open Source пока не закончены.
76. Инструменты
github.com/bem/bem-tools
76
Начали реализацию инструментов bem-tools, которые помогают работать с файлами по БЭМ-
методу.
Инструменты реализуются на JavaScript под Node.js.
77. Инструменты
Уровни переопределения
bem-bl/
b-logo/
lego/
b-logo/
auto/
blocks/
b-logo/
77
Директории с реализацией блоков стали называть «уровнем переопределения».
Например, на проекте может быть
1) публичная библиотека блоков с github
2) внутренняя библиотека lego
3) и блоки самого проекта
78. Инструменты
Схемы именования
.bem/
level.js
78
На уровне переопределения можно задать другую схему именования папок/файлов, отличную от
нашей.
Например, вы можете задать другие разделители между именем блока и элемента, или не
раскладывать всё по директориям, а сделать плоскую структуру из файлов.
79. BEMHTML
JavaScript шаблонизатор
79
После экспериментов с разными шаблонизаторами, был разработан шаблонизатор BEMHTML.
80. BEMHTML
JavaScript шаблонизатор
— Шаблоны в БЭМ-терминах
— Уровни переопределения
— На сервере и в браузере
80
Этот шаблонизатор
1) позволяет писать шаблоны в БЭМ-терминах
2) доопределять их на уровнях переопределения
3) исполнять эти шаблоны, как на сервере, так и в браузере, поскольку шаблоны компилируются в
простой и быстрый JavaScript
81. BEMHTML
JavaScript шаблонизатор
clubs.ya.ru/bem/replies.xml?item_no=898
clubs.ya.ru/bem/replies.xml?item_no=899
clubs.ya.ru/bem/replies.xml?item_no=1153
clubs.ya.ru/bem/replies.xml?item_no=1172
clubs.ya.ru/bem/replies.xml?item_no=1391
81
Подробности в клубе на Яру.
82. Варианты использования БЭМ
82
Как вы можете видеть, БЭМ не появился сразу. У нас был долгий период проб и подбора наиболее
подходящего нам варианта.
Но хочу обратить внимание, что всё это время это был БЭМ.
То, что мы используем сейчас — не единственно верное решение.
Наоборот, вы можете использовать БЭМ на своих проектах в том объёме, в котором он принесёт
наибольшую пользу.
БЭМ методология очень гибкая и позволяет вам настраивать её под свои процессы, под свои
текущие технологии.
Давайте посмотрим на примерах.
83. Блоки в одном файле
83
У вас есть проект, в котором вы хотите применить БЭМ для вёрстки и ни для чего более.
Хорошо, мы тоже с этого начинали.
Выбирайте подходящую вам схему…
84. Блоки в одном файле
Префиксы и классы без них
.b-block
.b-block .elem
.b-block_size_l
.b-block .elem_size_l
84
С префиксами и каскадом.
85. Блоки в одном файле
АНБ с префиксами
.b-block
.b-block__elem
.b-block_size_l
.b-block__elem_size_l
85
Или задайте класс каждому DOM-узлу и используйте абсолютно-независимые блоки.
86. Блоки в одном файле
АНБ без префиксов
.block
.block__elem
.block_size_l
.block__elem_size_l
86
Или можно убрать префиксы.
87. Блоки в одном файле
И верстаете
myfacebook/
myfacebook.css
myfacebook.js
myfacebook.html
87
И начинайте делать вёрстку на проекте по БЭМ.
Используйте самую простую схему на файловой системе, когда реализация блоков лежит в одном
файле.
При использовании этого варианта всё делается руками, без bem-tools.
88. Блоки в директории
88
Когда вы поймёте, что ваш проект вырос, можно начать раскладывать реализацию блоков по
файлам и использовать сборку.
89. Блоки в директории
blocks/
b-myblock.css
b-myblock.js
b-yourblock.css
b-yourblock.js
89
В этом случае можно начинать использовать bem-tools для сборки проекта.
90. Не обязательное в файлах
90
Если в ваших блоках есть элементы/модификаторы, которые используются не на всех страницах…
91. Не обязательное в файлах
blocks/
b-myblock/
b-myblock_mod_val1.css
b-myblock__opt-elem.css
b-myblock__opt-elem_mod_val1.css
b-myblock.css
91
…можно вынести их реализацию в отдельные файлы, чтобы подключать только то, что нужно.
93. Модификаторы в директориях
blocks/
b-myblock/
_mod/
b-myblock_mod_val1.css
b-myblock__opt-elem.css
b-myblock__opt-elem_mod_val1.css
b-myblock.css
93
…для каждого можно сделать отдельную директорию. Это разгрузит корневую директорию
блока.
95. Опциональные элементы
в директориях
blocks/
b-myblock/
_mod/
b-myblock_mod_val1.css
__opt-elem/
b-myblock__opt-elem.css
b-myblock.css
95
…в директории выносятся ещё и необязательные элементы, а код обязательных элементов лежит в
основных файлах блока.
Мы используем сейчас именно этот вариант при разработке Лего и bem-bl.
96. ВСЕ элементы/модификаторы
в директориях
96
Самый сложный в разработке, но самый понятный вариант по конечной структуре, когда ВСЕ
элементы блока и ВСЕ модификаторы имеют свои директории.
97. Все элементы/модификаторы
в директориях
blocks/
b-myblock/
_mod/
b-myblock_mod_val1.css
__elem/
b-myblock__elem.css
b-myblock.css
97
Этот вариант очень наглядный, при взгляде на файловую систему можно увидеть всю структуру
блока.
Мы сейчас спорим, надо нам переходить на него в Лего или нет.
99. Подведём итог
методология организации работы
нет единственно правильного варианта
набор правил
команда встраивает в свой процесс
99
БЭМ — это методология организации работы над проектом, которая позволяет команде работать
c единым кодом и говорить на одном языке.
При этом нет единственно правильного варианта и мы не стремимся его получить.
Наоборот, мы рассматриваем БЭМ как набор правил.
Каждая конкретная команда встраивает его в свой процесс разработки и использует так, как им
удобно.
100. Статья
clubs.ya.ru/bem/replies.xml?item_no=1398
100
Ещё раз обращаю ваше внимание, что всё, что я сейчас рассказывал более подробно описано в
статье, опубликованной в нашем клубе на Яру.
101. Виталий Харисов
vitaly@yandex-team.ru
@harisov
#b_ #yasubbotnik
Спасибо за внимание.
Я готов ответить на вопросы сейчас и после доклада.