backbone javascript application

87
О себе Александр Кучеренко В DataArt полгода Занимаюсь программированием 7+ лет За это время писал на: PHP, JavaScript, ActionScript3, C#, Java(Android), Objective-C

Upload: alexander-kucherenko

Post on 15-Jul-2015

332 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: Backbone Javascript Application

О себе

Александр Кучеренко

• В DataArt полгода

• Занимаюсь программированием 7+ лет

• За это время писал на: PHP, JavaScript, ActionScript3, C#, Java(Android), Objective-C

Page 2: Backbone Javascript Application

JavaScript Application

1. Менеджмент пакетов с помощью Bower.

2. Организация модулей через RequreJS.

3. Backbone

4. Классовый подход вместопрототипного

5. Сборка приложения с помощью Grunt

Page 3: Backbone Javascript Application

Bower

Как вы скачиваете jQuery?

Page 4: Backbone Javascript Application

Bower

http://bower.io/

Page 5: Backbone Javascript Application

Bower

$npm install -g bower

Page 6: Backbone Javascript Application

Bower

1. Манифест ./bower.json

2. По дефолту все скачивается в ./components

3. Умеет управлять зависимостями

Page 7: Backbone Javascript Application

Bower

Хочу погоду на сайт!

Page 8: Backbone Javascript Application

Bower

Хочу погоду на сайт!

Page 9: Backbone Javascript Application

Bower

bower.json

$ bower install

Page 10: Backbone Javascript Application

Bower

Обновление

Page 11: Backbone Javascript Application

Bower

Плюсы?

1. Не надо комитить все в репозиторий

2. Легко и относительно безопасно обновить любой из компонентов

3. Разные тулзы понимают bower

Page 12: Backbone Javascript Application

Bower

Минусы?

1. При деплое это нужно будет установить

Page 13: Backbone Javascript Application

Bower

Минусы?

1. При деплое это нужно будет установить

Page 14: Backbone Javascript Application

Bower

Минусы?

1. При деплое это нужно будет установить

Page 15: Backbone Javascript Application

Вопросы

Page 16: Backbone Javascript Application

Require JS

А как все это подключать ?

Page 17: Backbone Javascript Application

Require JS

Как обычно мы делаем

Page 18: Backbone Javascript Application

Require JS

Page 19: Backbone Javascript Application

Require JS

http://requirejs.org/

Page 20: Backbone Javascript Application

Require JS

AMD?

Page 21: Backbone Javascript Application

Require JS

Asynchronous Module Definition (AMD)

define(id?, dependencies?, factory)

Page 22: Backbone Javascript Application

Require JS

Подключаем Require JS

Page 23: Backbone Javascript Application

Require JS

Page 24: Backbone Javascript Application

Require JS

Как выглядит модуль?

Page 25: Backbone Javascript Application

Require JS

Как выглядит модуль?

Page 26: Backbone Javascript Application

Require JS

А есть еще CommonJS

Page 27: Backbone Javascript Application

Require JS

Плюсы?

1. Организация кода

2. Управление порядком загрузки

3. Вложенные зависимости

4. Отлично работает на NodeJs

5. Имплементация AMD (Asynchronous Module Definition) спецификации

Page 28: Backbone Javascript Application

Require JS

Минусы?

1. Если зависимостей много в них можно запутаться

Page 29: Backbone Javascript Application

Вопросы

Page 30: Backbone Javascript Application

Backbone JS

Что такое :

http://backbonejs.org/

Page 31: Backbone Javascript Application

Backbone JS

Backbone JS это:

1. Не фреймворк

2. Models, View, Collections and Events

3. И Router

4. И много-много JSON и REST

Page 32: Backbone Javascript Application

Backbone JS

Почему Backbone JS?

1. Потому что 6,5 kb

2. Не решает за меня как мне писать моё приложение

3. Не лезет в мой HTML

4. Есть расширения на все случаи жизни

5. Отлично документирован

6. НЕТ МАГИИ!!

7. There's More Than One Way To Do It

Page 33: Backbone Javascript Application

Backbone JS

Кто использует Backbone JS?

Page 34: Backbone Javascript Application

Backbone JS

Кто использует Backbone JS?

Page 35: Backbone Javascript Application

Backbone JS

Кто использует Backbone JS?

Page 36: Backbone Javascript Application

Backbone JS

Backbone JS это библиотека:

1. marionette.js

2. chaplin.js

3. vertebrae.js

4. backbone boilerplate

5. thorax

Page 37: Backbone Javascript Application

Backbone JS

Чего хочет Backbone:

1. underscore.js /lo-dash.js

2. json2.js для IE

3. jQuery / Zepto

Page 38: Backbone Javascript Application

Backbone JS

Как это работает?

Page 39: Backbone Javascript Application

Backbone JS

MODELS

Models are the heart of any JavaScriptapplication, containing the interactive data aswell as a large part of the logic surrounding it:conversions, validation, computed properties,and access control.

backbonejs.org/#Model

Page 40: Backbone Javascript Application

Backbone JS

Как создать модель?

Page 41: Backbone Javascript Application

Backbone JS

Создали, а что дальше?

Page 42: Backbone Javascript Application

Backbone JS

А изменить ?

Page 43: Backbone Javascript Application

Backbone JS

EVENTS

Hey, I've changed!

Page 44: Backbone Javascript Application

Backbone JS

Page 45: Backbone Javascript Application

Backbone JS

А можно и по другому:

Page 46: Backbone Javascript Application

Backbone JS

Готовим модель:

Page 47: Backbone Javascript Application

Backbone JS

Валидация:

Page 48: Backbone Javascript Application

Backbone JS

Валидация:

Page 49: Backbone Javascript Application

Backbone JS

URL, REST из коробки:

Backbone.sync

Page 50: Backbone Javascript Application

Backbone JS

URL, REST из коробки:

Backbone.sync

Page 51: Backbone Javascript Application

Backbone JS

Примеры:

1. Users

2. All pages

3. Latest news

Page 52: Backbone Javascript Application

Backbone JS

Как создать коллекцию:

Page 53: Backbone Javascript Application

Backbone JS

Получаем модели:

Page 54: Backbone Javascript Application

Backbone JS

Удаляем модели:

Page 55: Backbone Javascript Application

Backbone JS

Добавляем модели:

Page 56: Backbone Javascript Application

Backbone JS

Сортируем коллекцию:

Page 57: Backbone Javascript Application

Backbone JS

Сортируем коллекцию:

Page 58: Backbone Javascript Application

Backbone JS

VIEWS

Views are objects which do two things:

1. display data (most of the time models)

2. capture user interaction to trigger code.

Page 59: Backbone Javascript Application

Backbone JS

Создаем View

Page 60: Backbone Javascript Application

Backbone JS

Добавляем контент:

The view is just an empty div.

Page 61: Backbone Javascript Application

Backbone JS

Обновляем View вместе с моделью:

Page 62: Backbone Javascript Application

Backbone JS

Шаблоны:

Page 63: Backbone Javascript Application

Backbone JS

Page 64: Backbone Javascript Application

Backbone JS

Взаимодействие с пользователем:

Page 65: Backbone Javascript Application

Backbone JS

EVENTS

Hey, I`m back!

Page 66: Backbone Javascript Application

Backbone JS

Добавляем события в любой объект:

Page 67: Backbone Javascript Application

Backbone JS

ROUTER

Page 68: Backbone Javascript Application

Вопросы

Page 69: Backbone Javascript Application

Classes in JS

Есть ли класcы в JS?

- НЕТ!

Page 70: Backbone Javascript Application

Classes in JS

А можно сделать JS?

- ДА!

Page 71: Backbone Javascript Application

Classes in JS

А нужно ?

1. Наследование в JS это не удобно

2. ECMAScript 6 class && extends

3. Почему бы и нет?

Page 72: Backbone Javascript Application

Classes in JS

Page 73: Backbone Javascript Application

Classes in JS

Как?

js-toolbox

https://github.com/jimmydo/js-toolbox

Page 74: Backbone Javascript Application

Вопросы

Page 75: Backbone Javascript Application

Grunt JS

А давайте это все соберем в один маленький файлик?

Page 76: Backbone Javascript Application

Grunt JS

Проблемы в раю:

1. У нас есть SASS, у нас есть LESS И Stylus

2. А еще у нас 5 тысяч файлов суммарно на 50 мегабайт которые надо доставить клиенту, все исходники на CoffeScript

3. А еще мы а еще мы хотим чтобы это все собиралось автоматом на инстансах

Page 77: Backbone Javascript Application

Grunt JS

Page 78: Backbone Javascript Application

Grunt JS

Зачем?

1. Автоматизировать рутину

2. Помощь при деплое

3. Просто использовать

4. Есть много готовых плагинов

5. Популярен

Page 79: Backbone Javascript Application

Grunt JS

Установка

$npm install -g grunt-cli

$npm install grunt --save

Page 80: Backbone Javascript Application

Grunt JS

GRUNTFILE.JS

Page 81: Backbone Javascript Application

Grunt JS

GRUNTFILE.JS

Page 82: Backbone Javascript Application

Grunt JS

GRUNTFILE.JS

Page 83: Backbone Javascript Application

Grunt JS

$grunt

Page 84: Backbone Javascript Application

Grunt JS

Плагины:

Page 85: Backbone Javascript Application

Grunt JS

Кто использует:

Page 86: Backbone Javascript Application

Вопросы

Page 87: Backbone Javascript Application

Ссылочки

Bower презентация:• http://danheberden.com/presentations/bower

Bower• http://bower.io/

Require JS• http://requirejs.org/

Backbone• http://backbonejs.org/

JS-toolbox• https://github.com/jimmydo/js-toolbox

Grunt JS• http://gruntjs.com/

Мой Github:• https://github.com/AlexTiTanium

backbone-orm:• http://vidigami.github.io/backbone-orm/

rivetsjs• http://www.rivetsjs.com/

backbone.stickit• http://nytimes.github.io/backbone.stickit/

Marionette• http://marionettejs.com/

chaplinjs.org • http://chaplinjs.org/

Vertebrae • https://github.com/hautelook/vertebrae

Backbone-boilerplate:• https://github.com/backbone-boilerplate/backbone-boilerplate

Thorax• https://github.com/walmartlabs/thorax