72
Ember JS назад в будущее Андрей Листочкин

Ember.js - Назад в Будущее - Odessa JS 2014

Embed Size (px)

Citation preview

Page 1: Ember.js - Назад в Будущее - Odessa JS 2014

Ember JS — назад в будущее

Андрей Листочкин

Page 2: Ember.js - Назад в Будущее - Odessa JS 2014

@listochkin

Page 3: Ember.js - Назад в Будущее - Odessa JS 2014
Page 4: Ember.js - Назад в Будущее - Odessa JS 2014

A framework for creating ambitious web applications

Page 5: Ember.js - Назад в Будущее - Odessa JS 2014

MVC

Page 6: Ember.js - Назад в Будущее - Odessa JS 2014

Поле бояBackbone, Knockout, Angular, Ember, React

Page 7: Ember.js - Назад в Будущее - Odessa JS 2014

V + + + + +

C + + + +

M + + +

R + + +

+ + +

Page 8: Ember.js - Назад в Будущее - Odessa JS 2014

Ember умеет все то же, что и Angular

и много чего еще

Page 9: Ember.js - Назад в Будущее - Odessa JS 2014

Посмотрим на него в деле

Page 10: Ember.js - Назад в Будущее - Odessa JS 2014

Data binding

Page 11: Ember.js - Назад в Будущее - Odessa JS 2014

<div> <label>Name:</label> {{input type="text" value=name placeholder="Enter your name"}}</div><div class="text"><h1>My name is {{name}} and I want to learn Ember!</h1></div>

Page 12: Ember.js - Назад в Будущее - Odessa JS 2014

Пример 1

Page 13: Ember.js - Назад в Будущее - Odessa JS 2014

Компоненты

Page 14: Ember.js - Назад в Будущее - Odessa JS 2014
Page 15: Ember.js - Назад в Будущее - Odessa JS 2014
Page 16: Ember.js - Назад в Будущее - Odessa JS 2014

Пример 2

Page 17: Ember.js - Назад в Будущее - Odessa JS 2014

Приложение в целом

Page 18: Ember.js - Назад в Будущее - Odessa JS 2014
Page 19: Ember.js - Назад в Будущее - Odessa JS 2014

Пример 3

Page 20: Ember.js - Назад в Будущее - Odessa JS 2014
Page 21: Ember.js - Назад в Будущее - Odessa JS 2014

MVC

Page 22: Ember.js - Назад в Будущее - Odessa JS 2014
Page 23: Ember.js - Назад в Будущее - Odessa JS 2014
Page 24: Ember.js - Назад в Будущее - Odessa JS 2014
Page 25: Ember.js - Назад в Будущее - Odessa JS 2014

Ambitious applications — url-driven applications

Page 26: Ember.js - Назад в Будущее - Odessa JS 2014

URL

Смена URLа - событие

Page 27: Ember.js - Назад в Будущее - Odessa JS 2014

URL

Смена URLа - событие

URL - модуль

Page 28: Ember.js - Назад в Будущее - Odessa JS 2014

URL

Смена URLа - событие

URL - модуль

URL - глобальное состояние

Page 29: Ember.js - Назад в Будущее - Odessa JS 2014

URL

https://myapp.com/posts/1

App.Router.map(function () { this.resource('posts', function () { this.resource('post', { path: ':post_id'}); });});

Page 30: Ember.js - Назад в Будущее - Odessa JS 2014

URL

https://myapp.com/posts/1

PostsRoutePostsController<posts> {{outlet}}

PostRoutePostController<post>

Page 31: Ember.js - Назад в Будущее - Odessa JS 2014

URL

var Post = DS.Model.extend({ title: DS.attr('string') body: DS.attr('string') published: DS.attr('date')});

Page 32: Ember.js - Назад в Будущее - Odessa JS 2014

URL

var PostsRoute = Ember.Router.extend({ model: function () { return this.store.find('post'); }});

var PostsController = Ember.ArrayController.extend({ … });

Page 33: Ember.js - Назад в Будущее - Odessa JS 2014

URL

<ul> {{! posts.hbs }}{{#each post in model}}

<li> {{#link-to 'post' post}} {{post.title}} {{/link-to}} </li>

{{/each}}</ul> {{outlet}}

Page 34: Ember.js - Назад в Будущее - Odessa JS 2014

URL

var PostRoute = Ember.Router.extend({ model: function (params) { return this.store.find('post', params.post_id); }});

var PostController = Ember.ObjectController.extend({ … });

Page 35: Ember.js - Назад в Будущее - Odessa JS 2014

URL

{{! post.hbs}}<h2>{{title}}</h2>

<p>{{format-date published}}</p>

<div>{{body}}

</div>

Page 36: Ember.js - Назад в Будущее - Odessa JS 2014

URL

https://myapp.com/posts/1

PostsRoutePostsController<posts> {{outlet}}

PostRoutePostController<post>

Page 37: Ember.js - Назад в Будущее - Odessa JS 2014
Page 38: Ember.js - Назад в Будущее - Odessa JS 2014

Convention over Configuration

Page 39: Ember.js - Назад в Будущее - Odessa JS 2014
Page 40: Ember.js - Назад в Будущее - Odessa JS 2014

80%

Page 41: Ember.js - Назад в Будущее - Odessa JS 2014

defaults + escape hatches

Page 42: Ember.js - Назад в Будущее - Odessa JS 2014

Tooling

Page 43: Ember.js - Назад в Будущее - Odessa JS 2014

Искать нерешенные проблемы

Page 44: Ember.js - Назад в Будущее - Odessa JS 2014

Меньше слов - больше дела

Page 45: Ember.js - Назад в Будущее - Odessa JS 2014

Принципы рельс

1. Если это нужно 80% приложений, это должно быть частью фреймворка.

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

3. Tooling4. Искать нерешенные проблемы.5. Меньше слов - больше дела.

Page 46: Ember.js - Назад в Будущее - Odessa JS 2014

Принципы Ember

1. Если это нужно 80% приложений, это должно быть частью фреймворка.

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

3. Tooling.4. Искать нерешенные проблемы.5. Меньше слов - больше дела.

Page 47: Ember.js - Назад в Будущее - Odessa JS 2014
Page 48: Ember.js - Назад в Будущее - Odessa JS 2014
Page 49: Ember.js - Назад в Будущее - Odessa JS 2014
Page 50: Ember.js - Назад в Будущее - Odessa JS 2014
Page 51: Ember.js - Назад в Будущее - Odessa JS 2014

Готовый фреймворкvs

самописный фреймворк

Page 52: Ember.js - Назад в Будущее - Odessa JS 2014
Page 53: Ember.js - Назад в Будущее - Odessa JS 2014

Другие плюшки

Page 54: Ember.js - Назад в Будущее - Odessa JS 2014

1. Кодогенерация2. DI3. Поддержка тестирования4. Интеграция5. Линейная сложность6. Promises7. ES6 Modules8. Tooling (Broccoli, ESNext, etc.)

Page 55: Ember.js - Назад в Будущее - Odessa JS 2014

Performance

Page 56: Ember.js - Назад в Будущее - Odessa JS 2014
Page 57: Ember.js - Назад в Будущее - Odessa JS 2014

Tom Dale

Page 58: Ember.js - Назад в Будущее - Odessa JS 2014
Page 59: Ember.js - Назад в Будущее - Odessa JS 2014
Page 60: Ember.js - Назад в Будущее - Odessa JS 2014

Rails + Cocoa + Web

Page 61: Ember.js - Назад в Будущее - Odessa JS 2014
Page 62: Ember.js - Назад в Будущее - Odessa JS 2014

HTMLBars

Page 63: Ember.js - Назад в Будущее - Odessa JS 2014

Flows

Page 64: Ember.js - Назад в Будущее - Odessa JS 2014

https://signalvnoise.com/posts/1926-a-shorthand-for-designing-ui-flows

Page 65: Ember.js - Назад в Будущее - Odessa JS 2014
Page 66: Ember.js - Назад в Будущее - Odessa JS 2014

Модель разработки - PostgreSQL

Tilde, Yapp, Prototypal, Adepar, Instructure, etc.

Page 67: Ember.js - Назад в Будущее - Odessa JS 2014

Релизы по расписанию

Page 68: Ember.js - Назад в Будущее - Odessa JS 2014

Компании

1. Apple2. Google3. Yahoo4. Twitter5. Microsoft6. Groupon7. Square8. Zendesk

9. Ballanced10. Nitrous.io11. USPO12. DoD13. NBCNews14. Netflix

Page 69: Ember.js - Назад в Будущее - Odessa JS 2014

Проекты

1. Discource2. Ballanced3. Travis CI4. Ghost

Page 70: Ember.js - Назад в Будущее - Odessa JS 2014
Page 71: Ember.js - Назад в Будущее - Odessa JS 2014

Ember JS — назад в будущее

Андрей Листочкин

Page 72: Ember.js - Назад в Будущее - Odessa JS 2014

Ember JS — назад в будущее

@listochkin

http://tinyurl.com/nitro4andrey