42
ЗАЧЕМ НУЖЕН EMBERJS, ЕСЛИ МНЕ ХВАТАЕТ JQUERY DUMP Conference, 2014 brought by Sergey N. Bolshchikov

Зачем нужен EmberJS, если мне хвататет jQuery

Embed Size (px)

DESCRIPTION

Как и зачем начинать работать с EmberJS вместо jQuery

Citation preview

Page 1: Зачем нужен EmberJS, если мне хвататет jQuery

ЗАЧЕМ НУЖЕН EMBERJS,ЕСЛИ МНЕ

ХВАТАЕТ JQUERY

DUMP Conference, 2014

brought by Sergey N. Bolshchikov

Page 2: Зачем нужен EmberJS, если мне хвататет jQuery

● Ведущий front end разработчик в New ProImage

● Со-организатор EmberJS Tel-Aviv Meetup

● Со-организатор EmberFest Europe

Я!

1

Page 3: Зачем нужен EmberJS, если мне хвататет jQuery

ВЫ!

● Кто пишет front end?

● Кто знает JavaScript?

● Кто использует какой-либо JavaScript MVC фреймворк?

● Кто использует EmberJS?

2

Page 4: Зачем нужен EmberJS, если мне хвататет jQuery

- КАКОЙ MVC ФРЕЙМВОРК ТЫ БУДЕШЬ ИСПОЛЬЗОВАТЬ

- НИКАКОЙ, JQUERY ХВАТИТ

3

Page 5: Зачем нужен EmberJS, если мне хвататет jQuery

1. <div id="form">2. <div>3. <label>First Name:</label> <input id="firstName"

placeholder="your first name" />4. </div>5. <div>6. <label>Last Name:</label> <input id="lastName"

placeholder="your last name" />7. </div>8. <div>9. <label>Full Name:</label> <input id="fullName"

placeholder="your full name" readonly/>10. </div>11. </div>

JQUERY HTML

4

Page 6: Зачем нужен EmberJS, если мне хвататет jQuery

JQUERY JS

1. var App = {2. user: {}3. },4. firstNameInput = $('#firstName'),5. lastNameInput = $('#lastName'),6. fullNameInput = $('#fullName');7. // set initial values8. fullNameInput.val(App.user.firstName + ' ' + App.user.lastName);9. // bind events

10. firstNameInput.on('keyup', function () {11. App.user.firstName = firstNameInput.val();12. fullNameInput.val(firstNameInput.val() + ' ' + lastNameInput.

val());13. });14. lastNameInput.on('keyup', function () {15. App.user.lastName = lastNameInput.val();16. fullNameInput.val(firstNameInput.val() + ' ' + lastNameInput.

val());17. });18. window.App = App;

5

Page 7: Зачем нужен EmberJS, если мне хвататет jQuery

EMBER HTML

1. <script type="text/x-handlebars" id="application">2. <div id="form">3. <div>4. <label>First Name:</label> {{input value=App.

user.firstName placeholder="your first name"}}5. </div>6. <div>7. <label>Last Name:</label> {{input value=App.user.

lastName placeholder="your last name"}}8. </div>9. <div>

10. <label>Full Name:</label> {{input value=App.user.fullName placeholder="your full name" readonly="readonly"}}

11. </div>12. </div>13. </script>

6

Page 8: Зачем нужен EmberJS, если мне хвататет jQuery

EMBER HTML

1. <script type="text/x-handlebars" id="application">2. <div id="form">3. <div>4. <label>First Name:</label> {{input value=App.

user.firstName placeholder="your first name"}}5. </div>6. <div>7. <label>Last Name:</label> {{input value=App.user.

lastName placeholder="your last name"}}8. </div>9. <div>

10. <label>Full Name:</label> {{input value=App.user.fullName placeholder="your full name" readonly="readonly"}}

11. </div>12. </div>13. </script>

7

Page 9: Зачем нужен EmberJS, если мне хвататет jQuery

EMBER JS

1. var App = Ember.Application.create({2. user: Ember.Object.createWithMixins({3. fullName: function () {4. return this.get('firstName') + ' ' + this.get

('lastName');5. }.property('firstName', 'lastName')6. })7. });

8

Page 10: Зачем нужен EmberJS, если мне хвататет jQuery

МНЕ ХВАТАЕТ JQUERY1. var App = Ember.Application.create({2. user: Ember.Object.createWithMixins

({3. fullName: function () {4. return this.get('firstName') + '

' + this.get('lastName');5. }.property('firstName',

'lastName')6. })7. });

1. var App = {2. user: {}3. },4. firstNameInput = $('#firstName'),5. lastNameInput = $('#lastName'),6. fullNameInput = $('#fullName');7. // set initial values8. fullNameInput.val(App.user.firstName +

' ' + App.user.lastName);9. // bind events

10. firstNameInput.on('keyup', function () {

11. App.user.firstName = firstNameInput.val();

12. fullNameInput.val(firstNameInput.val() + ' ' + lastNameInput.val());

13. });14. lastNameInput.on('keyup', function () {15. App.user.lastName = lastNameInput.

val();16. fullNameInput.val(firstNameInput.

val() + ' ' + lastNameInput.val());17. });18. window.App = App;

9

Page 11: Зачем нужен EmberJS, если мне хвататет jQuery

ЗАЧЕМ НУЖЕН EMBERJS

source: http://www.flickr.com/photos/24589924@N04/3426111251/

1. Структура приложения

Page 12: Зачем нужен EmberJS, если мне хвататет jQuery

ЗАЧЕМ НУЖЕН EMBERJS

source: http://blog.discoverymachine.com/2013/01/24/is-a-designed-framework-required-for-knowledge-flow/

1. Структура приложения

Page 13: Зачем нужен EmberJS, если мне хвататет jQuery

ЗАЧЕМ НУЖЕН EMBERJS

source: http://binatani.com/1957-hudson-wiring-diagram-of-complete-internal-electrical-system/1957-hudson-internal-electrical-components-wiring-diagram/

1. Структура приложения

2. Связкакомпонентов

Page 14: Зачем нужен EmberJS, если мне хвататет jQuery

АРХИТЕКТУРА ПРИЛОЖЕНИЯ

Page 15: Зачем нужен EmberJS, если мне хвататет jQuery

РАЗДЕЛЕНИЕ ОТВЕТСТВЕННОСТЕЙ

ДАННЫЕ ЛОГИКА

UI

14

Page 16: Зачем нужен EmberJS, если мне хвататет jQuery

MODEL-VIEW-CONTROLLER (MVC)

MODEL

CONTROLLERVIEW

USER

source: http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

изменяетобновляет

используетвидит

15

Page 17: Зачем нужен EmberJS, если мне хвататет jQuery

РАЗДЕЛЕНИЕ ОТВЕТСТВЕННОСТЕЙ

ДАННЫЕ ЛОГИКА

UI

16

Page 18: Зачем нужен EmberJS, если мне хвататет jQuery

РАЗДЕЛЕНИЕ ОТВЕТСТВЕННОСТЕЙ

ДАННЫЕ ЛОГИКА

UIзапуск приложения

18

Page 19: Зачем нужен EmberJS, если мне хвататет jQuery

РАЗДЕЛЕНИЕ ОТВЕТСТВЕННОСТЕЙ

ДАННЫЕ ЛОГИКА

UI

состояниеприложения

запуск приложения

19

Page 20: Зачем нужен EmberJS, если мне хвататет jQuery

РАЗДЕЛЕНИЕ ОТВЕТСТВЕННОСТЕЙ

ДАННЫЕ ЛОГИКА

UI

иерархиявьюшек

состояниеприложения

запуск приложения

20

Page 21: Зачем нужен EmberJS, если мне хвататет jQuery

РАЗДЕЛЕНИЕ ОТВЕТСТВЕННОСТЕЙ

ДАННЫЕ ЛОГИКА

UI

иерархиявьюшек

состояниеприложения

запуск приложения

URL

21

Page 22: Зачем нужен EmberJS, если мне хвататет jQuery

MVC от EMBERJS

MODEL

CONTROLLER

VIEW

USER

source: http://www.youtube.com/watch?v=s1dhXamEAKQ

ROUTE

ROUTER

TEMPLATEвидит

использует

обновляет

активирует

обновляет

уведомляет

22

Page 23: Зачем нужен EmberJS, если мне хвататет jQuery

MVC от EMBERJS

MODEL

CONTROLLER

VIEW

USER

source: http://www.youtube.com/watch?v=s1dhXamEAKQ

ROUTE

ROUTER

TEMPLATEвидит

использует

обновляет

активирует

обновляет

уведомляет

23

Page 24: Зачем нужен EmberJS, если мне хвататет jQuery

СВЯЗКАКОМПОНЕНТОВ

Page 25: Зачем нужен EmberJS, если мне хвататет jQuery

СВЯЗКА КОМПОНЕНТОВ

MODEL

CONTROLLER

VIEW

USER

source: http://www.youtube.com/watch?v=s1dhXamEAKQ

ROUTE

ROUTER

TEMPLATEвидит

использует

обновляет

активирует

обновляет

создает

определяет

25

Page 26: Зачем нужен EmberJS, если мне хвататет jQuery

СВЯЗКА КОМПОНЕНТОВ

MODEL

CONTROLLER

VIEW

USER

source: http://www.youtube.com/watch?v=s1dhXamEAKQ

ROUTE

ROUTER

TEMPLATEвидит

использует

обновляет

активирует

обновляет

создает

определяет

26

Page 27: Зачем нужен EmberJS, если мне хвататет jQuery

СВЯЗКА КОМПОНЕНТОВ

MODEL

CONTROLLER

VIEW

USER

source: http://www.youtube.com/watch?v=s1dhXamEAKQ

ROUTE

ROUTER

TEMPLATEвидит

использует

обновляет

активирует

обновляет

создает

определяет

27

Page 28: Зачем нужен EmberJS, если мне хвататет jQuery

КОНВЕНЦИИ

Route Name Controller Route Template

modules ModulesController ModulesRoute modules

sessions SessionsController SessionsRoute sessions

sessions/session SessionController SessionRoute session

28

Page 29: Зачем нужен EmberJS, если мне хвататет jQuery

ПФФФ…АРХИТЕКТУРУ МОЖНО ПОСТРОИТЬ И С BACKBONE,КОТОРЫЙ В 10 РАЗ ЛЕГЧЕ

Page 30: Зачем нужен EmberJS, если мне хвататет jQuery

А КАК НА СЧЕТ СИНХРОНИЗАЦИИ МЕЖДУ МОДЕЛЬЮ И UI?

Page 31: Зачем нужен EmberJS, если мне хвататет jQuery

ДАННЫЕ ГРАФИКА

31

Page 32: Зачем нужен EmberJS, если мне хвататет jQuery

ДАННЫЕ ГРАФИКА

32

Page 33: Зачем нужен EmberJS, если мне хвататет jQuery

TWO-WAY BINDINGSДВУСТОРОННИЕ СВЯЗИ

Page 34: Зачем нужен EmberJS, если мне хвататет jQuery

<div id="form"> <div> <label>First Name:</label> {{input value=App.user.firstName placeholder="your first name"}} </div> <div> <label>Last Name:</label> {{input value=App.user.lastName placeholder="your last name"}} </div> <div> <label>Full Name:</label> {{input value=App.user.fullName placeholder="your full name"}} </div></div>

HBS

var App = Ember.Application.create({ user: {}});

JS

34

Page 35: Зачем нужен EmberJS, если мне хвататет jQuery

COMPUTED PROPERTIESВЫЧИСЛЯЕМЫЕ ЗНАЧЕНИЯ

Page 36: Зачем нужен EmberJS, если мне хвататет jQuery

<div id="form"> <div> <label>First Name:</label> {{input value=App.user.firstName placeholder="your first name"}} </div> <div> <label>Last Name:</label> {{input value=App.user.lastName placeholder="your last name"}} </div> <div> <label>Full Name:</label> {{input value=App.user.fullName placeholder="your full name"}} </div></div>

HBS

var App = Ember.Application.create({ user: Ember.Object.createWithMixins({ fullName: function () { return this.get('firstName') + ' ' + this.get('lastName'); }.property('firstName', 'lastName') })});

JS

36

Page 37: Зачем нужен EmberJS, если мне хвататет jQuery

А ЧТО ЕЩЕ?

Page 39: Зачем нужен EmberJS, если мне хвататет jQuery

EMBER против ANGULAR

Page 40: Зачем нужен EmberJS, если мне хвататет jQuery

А ЕЩЕ ЕСТЬEMBER DATA

39

Page 42: Зачем нужен EmberJS, если мне хвататет jQuery

СПАСИБО ЗА ВНИМАНИЕ

mail: [email protected]: http://bolshchikov.netblog: http://blog.bolshchikov.netlinkedin: http://www.linkedin.com/in/bolshchikovgithub: http://github.com/bolshchikov