Share
Embed
Transcript
27 slides
-
Скользим по Рельсам или “Мама, откуда берутся сайты?” Леонид Шевцов
для RailsGirls, Днепропетровск, октябрь 2012 Saturday, October 6, 12 -
Что такое Ruby on Rails? Ruby on Rails (или, любовно,
“Рельсы”) - это “каркас” для создания веб-приложений. Рельсы - это удобная “рамка”, в которую можно расположить нужные элементы (как фотографии в альбом). С Рельсами не обязательно разбираться в нюансах работы веб-сервера, базы данных, и других технических скучностях. Saturday, October 6, 12 -
Из чего состоят сайты Из HTML, картинок, CSS, Javascript... (и
других умных слов) Saturday, October 6, 12 -
Как устроены сайты Давным-давно, на заре Интернета, каждая веб-страничка была
обыкновенным текстовым документом, который был набран в текстовом редакторе, например, в Ворде. Такие веб-странички до сих пор встречаются на просторах Сети. Но... Saturday, October 6, 12 -
Проблема 1: Скучно! Странички, набранные вручную, можно было менять только
вручную. Хотелось более “живых” страниц, которые можно было не только смотреть, но и изменять их содержимое без привлечения редактора. Вывод: странички должна была создавать программа (веб-приложение). Saturday, October 6, 12 -
Проблема 2: Неудобно! Многие страницы на одном и том же
сайте очень похожи друг на друга; например, страница одного пользователя ВКонтакте состоит из тех же элементов (аватарка, ник, стена), что и любого другого. Набирать каждую такую страницу вручную оказалось неудобно и непрактично. Saturday, October 6, 12 -
Шаблоны! Поэтому люди придумали “шаблоны”. Шаблон - это страничка, в
которой все изменяющиеся места заменили на “пробелы”, в которые подставляются данные. Приложение использует шаблоны, чтобы построить конечный вид странички. Точно так же работают бумажные формы и бланки. Saturday, October 6, 12 -
Чем заполнять шаблоны? Итак, странички сайтов получаются из шаблонов. Но
чем их заполнять? Откуда берется информация? Откуда ВКонтакте знает, что на страничке твоей любимой школьной учительницы надо написать “Марфа Петровна”, а не “Павел Дуров”? Можно так выразиться, что в эту страницу нужно “вписать” какого-то человека. А что такое “человек” в устройстве сайта? Saturday, October 6, 12 -
Отступление о вещах Люди очень хорошо умеют раскладывать предметы по
категориям. Например, туфли у тебя лежат отдельно от помады, а тарелки - отдельно от кастрюль. Предметы одной категории наделены одинаковым набором характеристик (у всякой помады есть цвет), поэтому их легко сравнивать, считать и выбирать нужный. Saturday, October 6, 12 -
Модели! Точно так же программы работают с такими категориями вещей,
как “человеки”, “фотографии”, “сердечки”, и даже... “категории”. Категории предметов принято называть “моделями” (или “классами”), а предметы - “объектами”. Свойства также называют “атрибутами”. Saturday, October 6, 12 -
Модель “Туфли” Название (строка) Размер (число) Тип (строка) Высота каблука
(число) Цвет (строка) Дата покупки (дата) Saturday, October 6, 12 -
Объект “Туфли #123” Название: “Любимые красненькие” Размер: 37 Тип: “шпильки”
Высота каблука: 9 Цвет: “барбарисовый” Дата покупки: 02.09.2012 Saturday, October 6, 12 -
Модель - не только данные Модель также хранит связи между
данными: “Корзина для покупок” содержит много “Туфель”. Модель также обрабатывает данные. Стоимость Корзины = сумма цен Туфель. Saturday, October 6, 12 -
Кто отвечает браузеру? Пока шаблоны и модели никак не привязаны
к, собственно, “сайту” как чему-то, что можно открыть в браузере. Когда ты вводишь адрес странички или переходишь по ссылке на сайт, откуда приложение знает, какой шаблон взять и какие объекты в него подставить? Saturday, October 6, 12 -
Контроллеры! Поэтому третий элемент сайта - это “контроллеры”. Контроллер -
это кусочек программы, который получает запрос от браузера, выбирает для страницы шаблон и подготавливает для неё данные. Например, есть контроллер для страницы пользователя; для страницы со списком пользователей; для страницы загрузки фотографии. Saturday, October 6, 12 -
Сохранение данных Контроллеры, как часть сайта, “говорящая” с браузером, также
ответственны за прием данных, отправленных пользователем. Например, когда ты отправляешь сообщение, его текст (и адресат) попадает в контроллер отправки сообщения, и контроллер выполняет доставку. А когда ты обновляешь свой статус, то другой контроллер обновляет его в “твоем” объекте пользователя. Saturday, October 6, 12 -
Маршруты! Контроллеры привязываются к адресам страничек с помощью “карты маршрутов”
Например, в ней сказано, что для адреса “/users/любое-имя” должен запуститься контроллер профиля пользователя, а для адреса “/users” - списка пользователей. Saturday, October 6, 12 -
Твой браузер Приложение Контроллер Маршрутизатор Шаблоны Дай мне страницу /books/123
Контроллер: Books, действие show, id: 123 Нарисуй мне шаблон books#show для вот этой книги А пожалуйста Модели Дай мне книгу с id: 123 А вот она Веб-страница Saturday, October 6, 12 -
Как сделать сайт? Теперь мы знаем, что для того, чтобы
добавить страничку на сайт, нужно: добавить для неё маршрут; описать в контроллере нужные данные; создать нужные модели, если их еще нет; и написать шаблон. Saturday, October 6, 12 -
Сложно? Один из важных принципов программирования - Не Повторяй Уже
Сделанного (DRY). Часто используемые подходы уже реализованы в Рельсах. Другие возможности уже реализованы в других библиотеках (их огромное множество!) Saturday, October 6, 12 -
С чего начать Scaffold - встроенная в Рельсы программка для
создания “отправной точки” твоего приложения. Создает новую модель, и все необходимые шаблоны, маршруты и контроллер для ее просмотра и редактирования. Saturday, October 6, 12 -
Scaffold подробнее Scaffold создает в приложении такие страницы (для модели
“Книга”): список книг страницу отдельной книги страницу редактирования книги страницу создания книги ссылку для удаления книги Saturday, October 6, 12 -
Следующий шаг Изменить шаблоны, созданные скаффолдом (по умолчанию страница книги
выглядит довольно скучно) Добавить новые страницы (страницу с книгами из серии “Сумерки”) Добавить еще один скаффолд! Saturday, October 6, 12 -
Одни люди хотят, чтобы что-то произошло. Другие мечтают об этом.
А третьи — берут и делают. Майкл Джордан Удачи! Saturday, October 6, 12