Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт...

25
1

Upload: yandex

Post on 15-Jun-2015

1.400 views

Category:

Technology


4 download

DESCRIPTION

На примере карточек контактов мы покажем, как создать сайт на трехуровневой архитектуре с использованием полного стека БЭМ-технологий. Сервер мы реализуем на Express, а в качестве базовой библиотеки возьмем bem-core. Сырые данные будем преобразовывать во view-ориентированный BEMJSON с помощью декларативных шаблонов BEMTREE. При написании шаблонов BEMJSON → HTML применим новый JS-синтаксис BEMHTML. JavaScript на клиенте будет писаться с использованием блока i-bem.js.

TRANSCRIPT

Page 1: Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»

1

Page 2: Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»

BEMup в Питере, 29 ноября 2013

Динамический БЭМ-сайт на Node.js

Артём Курбатов

2

Page 4: Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»

Результат

4

Page 5: Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»

Инструментарий

• Сборкаhttps://github.com/bem/bem-tools

• Библиотека базовых блоков– BEMTREE– BEMHTMLhttps://github.com/bem/bem-core

• Роутерhttps://github.com/visionmedia/express

• База данныхhttps://github.com/mongodb

5

Page 6: Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»

Этапы

• склонируем и соберём проект• пройдём путь от базы данных до браузера• посмотрим на JavaScript блоков• попробуем шаблонизацию на клиенте

6

Page 8: Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»

Клонирование проекта

8

› git clone [email protected]:tenorok/dynamic-bem-site.git› npm install› bem make libs

Page 9: Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»

ru.bem.info/news/bem-cli

bem-cli: запусти bem-tools локально

9

Page 10: Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»

Запуск проекта

10

› git clone [email protected]:tenorok/dynamic-bem-site.git› npm install› bem make libs› node data/insert.js› node index.js

Page 11: Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»

От базы данных до браузера

11

MongoDB

BEMTREE

данные

BEMHTML

bemjson

Express

html

ответ

Expressзапрос

Page 12: Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»

desktop.bundles/index/

• index.bemdecl.js

12

Page 13: Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»

desktop.bundles/index/

• index.bemdecl.js• index.deps.js

13

Page 14: Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»

desktop.bundles/index/

• index.bemdecl.js• index.deps.js• index.bemtree.js• index.bemhtml.js• index.js• index.css

14

Page 15: Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»

ru.bem.info/articles/deps-js-syntax

Декларирование зависимостей

15

Page 17: Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»

BEMTREE .apply({ block: 'page' }) .then(function(bemjson) { BEMHTML.apply(bemjson); // {String} HTML });

Формирование HTML в динамике

17

Page 19: Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»

github.com/ymaps/modules

Модульная система

19

Page 21: Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»

modules.define('i-bem__dom', ['BEMHTML'],

function(provide, BEMHTML, BEMDOM) { BEMHTML.apply({ block: 'contact', content: [...] }); // {String} HTML}

);

Шаблонизация на клиенте

21

Page 22: Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»

Запуск без сборки

22

› bem make desktop.bundles/index/› NODE_ENV=production node index.js

Page 24: Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»

24

БЭМru.bem.infogithub.com/bem

[email protected]

clubs.ya.ru/bem@bem_ru

facebook.com/groups/bem.info

Page 25: Артем Курбатов — Мастер-класс «Динамический БЭМ-сайт на Node.js»

Разработчик интерфейсов

[email protected]/tenorok

Спасибо

Артём Курбатов

25