| Сайт Игоря Кононученко → | Статьи ↓ |
Движок презентации в браузере7 апреля 2010 |
|
В этой статье пойдет речь о создании презентационного движка, который я использовал в своих докладах (Опенвебкемп, Айфорум). ПредпосылкиВ прошлом году посетил Яндекс-субботник, на котором увидел и запомнил презентацию Виталия Харисова, которую он делал прямо из браузера, выделившись на фоне других докладчиков. В этом же году мне предстояло выступить на Опенвебкемпе с докладом об использовании Канваса, а после нее на Айфоруме с докладом о Джанго. В первом докладе я планировал показать разные интерактивные примеры прямо в презентации, поэтому, вспомнив о прошлологднем докладе, решил сделать что-то подобное. Первой мыслью было не тратить время на реализацию реализованного и просто использовать движок Харисова. Я попробовал, но мне не понравилось на чужой кухне. Объясню. Не уверен, создавал ли Харисов у себя каждый слайд в отдельном штмл-файле («разделяй и властвуй»), но судя по всему — нет. Не, ну сверстано там все ок — просто, логично, семантично. А вот джаваскриптовая реализация оказалась сложной — и кодом, и системой рендера слайдов. Работает все так, начальная разметка парсится джаваскриптом, а потом рендерится в то, что мы листаем в браузере. Как по мне, подобный перерендер — излишество. Я понял, что хочу сделать все проще. Во-первых хранить все слайды в отдельных файлах, а во-вторых все преобразования возложить на серверный шаблонизатор (jinja2). Реализация на сервереУ меня очень классный сайт в том плане, что на нем очень легко создавать разделы и дописывать любой фунционал (про архитектуру сайта я написал статью). Поэтому, создав на сайте папку talks, я принялся за реализацию движка. Первоночально получилась довольно-таки грязно, поскольку доклад для Опенвебкемпа делался в последний момент в ночь перед выступлением:). По этой причине я оставлю за бортом первичный результат и сразу покажу структуру отрефакторенной версии. Ее я получил во время подготовки Джанго-доклада. На картинке видна файловая структура и шаблон доклада. Вся «черновая» работа происходит в базовом шаблоне, код которого ниже:
Для полноты картины приведу код базового слайда:
Структура страницыСистема такая. Снаружи находится контейнер, который задает размер и является окошком для слайдов:
Еще стоит сказать о другом нюансе. В докладе на Опенвебкемпе, было много мощнятского встроенного функционала. Например, слайд с прототипом линча. Во избежание конфликтов и замусоревания дом-структуры страницы, такие штуки я показывал в айфрейме. ДжаваскриптКонтейнер со слайдами я перемещал подобным образом:
Для анимации использовал Чикуеновский jTweener. Не скажу, что я остался доволен результатом. Все-таки при анимации больших дом-структур происходят лаги. Хочу попробовать цсс-реализацию, но пока руки не дошли. Помимо этого использовал jQuery, classy.js (позволяет удобно создавать классы), jquery.mousewheel (биндит колесо мышки) и jquery.shortcuts (шарткат-либ великое множество, либа Степана Резникова первой попалась на глаза). Моя реализацияТут джс-код, который управляет презентацией. Что дальше?Еще можно разобраться в другом подходе к созданию браузерных докладов, посмотрев на релизацию Юрия Артюха (он так же как и я делал доклады на этих двух мероприятиях), в которой он патриотично использует сугубо цсс и штмл. В свой же движок, по мере следующих выступлений, буду вносить разные приятные мелочи. А мысли и замечания буду рад получить по почте:) |