24
#6 Ruby on Rails. Пользовательский интерфейс Вьюшки, стили, скрипты Денис Калесников, главный программист Мэйк make.st

Ruby on Rails. Пользовательский интерфейс

  • Upload
    -

  • View
    288

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Ruby on Rails. Пользовательский интерфейс

#6 Ruby on Rails. Пользовательский интерфейсВьюшки, стили, скрипты

Денис Калесников, главный программист Мэйк

make.st

Page 2: Ruby on Rails. Пользовательский интерфейс

План1. Assets

a. Подключение фреймворка Twitter Bootstrap (практика)

2. Шаблонизаторыa. erbb. hamlc. slim (практика)

Page 3: Ruby on Rails. Пользовательский интерфейс

UI в веб-приложении1. Непосредственно html-документ2. Стили оформления3. javascript - интерактивность и удобства для пользователя4. Фоновые изображения и иконки5. Подключаемые шрифты

2-5 в терминах Ruby on Rails называются assets (материал)

Проблема - где складывать и как подключать ассеты.

Page 4: Ruby on Rails. Пользовательский интерфейс

Практическое задание №1Для изучения подключения ассетов в Rails-приложение, добавим в наш проект twitter bootstrap.

Сперва получим результат, а затем разберем - что как работает.

Page 5: Ruby on Rails. Пользовательский интерфейс

Подготовка учебного проекта1. Переходим в папку с проектом cd ruby_lesson12. Выполняем команду git stash before_lesson_63. Выполняем команду git pull

Page 6: Ruby on Rails. Пользовательский интерфейс

Twitter BootstrapBootstrap (также известен как Twitter Bootstrap) — свободный набор инструментов для создания сайтов и веб-приложений. Включает в себя HTML и CSS шаблоны оформления для типографики, веб-форм, кнопок, меток, блоков навигации и прочих компонентов веб-интерфейса, включая JavaScript-расширения.

Оф. сайт http://getbootstrap.com/

Page 7: Ruby on Rails. Пользовательский интерфейс

Основные фичи1. 12-столбцовая сетка. Очень удобна при взаимодействии дизайнера и

верстальщика2. Типографика http://getbootstrap.com/css/#type3. Формы http://getbootstrap.com/css/#forms4. Кнопки http://getbootstrap.com/css/#buttons 5. Меню http://getbootstrap.com/components/#navbar

Page 8: Ruby on Rails. Пользовательский интерфейс

3 способа добавить в проект1. Вручную, скачав файлы с оф. сайта.

a. Разместите их в папке vendor

2. Gem https://github.com/twbs/bootstrap-sass 3. Gem https://github.com/seyhunak/twitter-bootstrap-rails

Преимущество использования гема перед подключением файлов вручную - bundler будет добавлять в проект все свежие обновления и исправления ошибок, в противном случае это придется делать, вручную - самому.

Попробуем использовать гем twitter-bootstrap-rails. Этот гем помимо чистого бутстрапа предоставляет полезные хелперы.

Page 9: Ruby on Rails. Пользовательский интерфейс

Подключение в наш проект1. Добавляем в Gemfile и запускаем установочный генератор2. Перегенерируем главный макет app/views/layouts/application3. Используем хелперы меню

a. Добавить пункт меню Работникиb. Выпадающее меню справочники

4. Настроим верстку таблицы с работниками http://getbootstrap.com/css/#tables

5. Настроим верстку форм http://getbootstrap.com/css/#forms

Page 10: Ruby on Rails. Пользовательский интерфейс

Стили в Ruby on RailsСтили могут размещаться в

1. app/assets/stylesheets2. lib/assets/stylesheets3. vendor/assets/stylesheets

Page 11: Ruby on Rails. Пользовательский интерфейс

Сборка стилей.В большом сложном проекте, стили будут разделены на файлы и сгруппированы по директория. Однако, в веб-приложениях часто принято - делать сборку всех файлов и отдавать ее пользователю одним файлом.

В ROR для этого создается отдельный файл стилей(манифест, по-умолчанию application.css) в котором с помощью специального синтаксиса указывается какие файлы и директории следует добавить в сборку.

Сборка подключается в основном шаблоне (по умолчанию layouts/application.html.erb) с помощью метода stylesheet_link_tag(‘манифест’)

Page 12: Ruby on Rails. Пользовательский интерфейс

Сборка стилей. Подключение компонентов/* ...

*= require

*= require_directory

*= require_self

*= require_tree .

*/

Page 13: Ruby on Rails. Пользовательский интерфейс

Подключение javascriptПроисходит аналогично стилям. Скрипты размещаются в:

1. app/assets/javascripts2. lib/assets/javascripts3. vendor/assets/javascripts

Скрипты подключаются в шаблоне с помощью вызова метода javascript_include_tag(“манифест”)

Page 14: Ruby on Rails. Пользовательский интерфейс

Перерыв

Page 15: Ruby on Rails. Пользовательский интерфейс

Вывод изображенийРазумеется, изображения должны храниться в директории public. Но в Rails, изображения используемые для оформления (фон, иконка, и просто забитое в верстку изображение) помещаются в директорию app/assets/images

В режиме разработки сервер отдаст нужный файл, как будто он лежит в директории public.

В процессе развертывания сайта Rails положит этот файл в директорию public, и в боевой среде этот файл будет отдаваться сервером статики (например, nginx)

Page 16: Ruby on Rails. Пользовательский интерфейс

Практическое задание 2Вывести картинку на главной странице.

1. Подключить локальную картинку2. Подключить удаленную картинку. Можно отсюда http://getbootstrap.

com/css/#forms - этот сервис можно использовать для веб-разработки

Page 17: Ruby on Rails. Пользовательский интерфейс

HTML-документОтвечая на запрос пользователя, Rails:

1. ищет и рендерит вьюху2. ищет и рендерит макет подставляя в него результат рендеринга макета

Макеты хранятся в папке app/views/layouts. По-умолчанию - это applicaton.html.erb

Page 18: Ruby on Rails. Пользовательский интерфейс

Вьюха внутри макета

Page 19: Ruby on Rails. Пользовательский интерфейс

ШаблоныШаблон состоит из html-кода документа + управляющие команды на языке Ruby. Модуль, занимающийся преобразованием шаблона в HTML-документ называется шаблонизатор. По-умолчанию используется ERB - обычный HTML + ruby-инъекции

В нашем приложении можно рассмотреть код вывода списка всех работников.

Page 20: Ruby on Rails. Пользовательский интерфейс

Альтернативные шаблонизаторыРазумеется разработчики постарались сократить размеры исходного кода шаблонов и время их написания. Таким образом появилось достаточно много шаблонизаторов, мы рассмотрим 2 самых популярных:

1. haml2. slim

Page 21: Ruby on Rails. Пользовательский интерфейс

HAMLhttp://haml.info/

Page 22: Ruby on Rails. Пользовательский интерфейс

SLIMhttp://slim-lang.com/

По сути, это просто HTML без <> скобок, в котором используются отступы для обозначения вложенных элементов.

Мы будем использовать его, так как он достаточно удобный и более производителен чем haml.

Page 23: Ruby on Rails. Пользовательский интерфейс

Практическое задание 31. Подключить гем slim, slim-rails2. Переделать вьюху со списком сотрудников в slim.3. Можно использовать гем https://github.com/slim-template/html2slim

Page 24: Ruby on Rails. Пользовательский интерфейс

Спасибо за внимание!

Денис Калесников, главный программист Мэйк

make.st