Home
Explore
Submit Search
Upload
Login
Signup
Advertisement
Зачем нужен EmberJS, если мне хвататет jQuery
Report
Sergey Bolshchikov
Follow
VP R&D at Approved.com
Mar. 14, 2014
•
0 likes
2 likes
×
Be the first to like this
Show More
•
1,164 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Check these out next
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
MoscowJS
Quick introduction jQuery
Shalva Usubov
"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15
MoscowJS
JS Fest 2018. Лилия Карпенко. Особенности создания IOS / Android Mobile Apps ...
JSFestUA
Пользователь точно оценит! Повышение производительности мобильных приложений ...
Ontico
Почему Mojolicious?
Anatoly Sharifulin
2014 Jeeconf - Geb Spock
Bohdan Danyliuk
1
of
42
Top clipped slide
Зачем нужен EmberJS, если мне хвататет jQuery
Mar. 14, 2014
•
0 likes
2 likes
×
Be the first to like this
Show More
•
1,164 views
views
×
Total views
0
On Slideshare
0
From embeds
0
Number of embeds
0
Download Now
Download to read offline
Report
Technology
Как и зачем начинать работать с EmberJS вместо jQuery
Sergey Bolshchikov
Follow
VP R&D at Approved.com
Advertisement
Advertisement
Advertisement
Recommended
Selenium 2.0: обзор новых возможностей
Paul Stashevsky
2.8K views
•
30 slides
FPUG Dzyga presentation
Ivan Filimonov
1K views
•
40 slides
"VUE.JS как реакт с человеческим лицом" Дулецкий Вольдэмар, Evrone
it-people
259 views
•
31 slides
Пластилиновый код: как перестать кодить и начать жить
Moscow.pm
821 views
•
56 slides
Take more from Jquery
Magento Dev
461 views
•
26 slides
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
DevDay
4.5K views
•
37 slides
More Related Content
Slideshows for you
(14)
CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению
CodeFest
•
1.6K views
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
MoscowJS
•
2.2K views
Quick introduction jQuery
Shalva Usubov
•
1.6K views
"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15
MoscowJS
•
1.6K views
JS Fest 2018. Лилия Карпенко. Особенности создания IOS / Android Mobile Apps ...
JSFestUA
•
481 views
Пользователь точно оценит! Повышение производительности мобильных приложений ...
Ontico
•
369 views
Почему Mojolicious?
Anatoly Sharifulin
•
1.7K views
2014 Jeeconf - Geb Spock
Bohdan Danyliuk
•
2.1K views
Изоморфный JavaScript — будущее уже здесь
CodeFest
•
2.6K views
Angular 2: Всех переиграл
Eugene Zharkov
•
409 views
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Ontico
•
1.7K views
Профилирование и оптимизация jQuery–кода
private_face
•
1.4K views
Профилирования и оптимизация jQuery-кода
private_face
•
991 views
TARS: Сделай уровень frontend-рутины 0% — Артём Малко, 2ГИС
2ГИС Технологии
•
477 views
Viewers also liked
(6)
Talking code: How To
Sergey Bolshchikov
•
866 views
Ember components
Sarath Chandra
•
247 views
Ember Reusable Components and Widgets
Sergey Bolshchikov
•
10.7K views
New Component Patterns in Ember.js
Matthew Beale
•
12.3K views
Building Ambitious Web Apps with Ember
gbabiars
•
2.1K views
Introduction to Ember.js and how we used it at FlowPro.io
Paul Knittel
•
2.5K views
Advertisement
Similar to Зачем нужен EmberJS, если мне хвататет jQuery
(20)
Опыт разработки эффективного SPA
Eugene Abrosimov
•
3.9K views
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
7bits
•
350 views
2014-08-02 03 Дмитрий Шматко. Первые впечатления от Node.js
Омские ИТ-субботники
•
507 views
Mobile automation uamobile
UA Mobile
•
2.8K views
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
DevDay
•
1.1K views
iOS and Android Mobile Test Automation
Andrii Dzynia
•
3.5K views
Фреймворк Slot, Good Parts, Александр Бирюков
DevDay
•
1.5K views
Zend Framework и Doctrine
Stepan Tanasiychuk
•
3K views
Ember.js ответ на почти все вопросы - java script frameworks day 2014
Andrey Listochkin
•
739 views
Микрофреймворки PHP
Ekaterina Giganova
•
450 views
Поговорим о JavaScript, основы и современные тенденции развития языка
Alexander Kucherenko
•
531 views
#3 "Webpack и Vue.JS: Создание больших приложений и их расширение" Кирилл Кай...
JSib
•
5.3K views
Alexander manuhin selenium_php_v2.0
matroskin1980
•
4.4K views
C# Web. Занятие 11.
Igor Shkulipa
•
193 views
Школа-Студия разработки приложений для iOS. 5 лекция. Разное
Глеб Тарасов
•
1.2K views
Java осень 2012 лекция 5
Technopark
•
270 views
Технологии тестирования Rich Web client, Андрей Плешков, Форум Технологий Mai...
tfmailru
•
924 views
Системы автоматизированной сборки (Lecture 05 – gradle)
Noveo
•
323 views
Автоматизация UI тестирования под Windows и Windows Phone
CodeFest
•
6.4K views
Превышаем скоростные лимиты с Angular 2
Oleksii Okhrymenko
•
563 views
More from Sergey Bolshchikov
(12)
Onboarding for Software Engineers Done Right
Sergey Bolshchikov
•
487 views
Pragmatic React Workshop
Sergey Bolshchikov
•
261 views
Microservices on the client side
Sergey Bolshchikov
•
692 views
ES2015 Quiz
Sergey Bolshchikov
•
1.3K views
Values & Culture of Continuous Deliver
Sergey Bolshchikov
•
588 views
Protractor: Tips & Tricks
Sergey Bolshchikov
•
18.7K views
Continuous Delivery for Front-End Engineers
Sergey Bolshchikov
•
2.6K views
Front End Development: The Important Parts
Sergey Bolshchikov
•
23.2K views
Web Projects: From Theory To Practice
Sergey Bolshchikov
•
9.2K views
AngularJS Basics with Example
Sergey Bolshchikov
•
42.3K views
Backbone Basics with Examples
Sergey Bolshchikov
•
4.3K views
JS Single-Page Web App Essentials
Sergey Bolshchikov
•
3.5K views
Advertisement
Recently uploaded
(20)
Сравнение возможностей промышленных швейных машин..pdf
Zarif Tadjibaev
•
4 views
Transpile it.pdf
OlegKlimenko6
•
47 views
enc=encoded=xB1SBt2BLThIr_OdU6hQSLg_mkyHbD5Lw8zK3jGB4rPX4B21zxFcjh_PjQ== (1)....
ssuser81bcd0
•
1 view
Презентация для Думы ЧАО.pptx
ssuserbb00f4
•
4 views
Диспергаторы для печатных красок.ppt
AbdulahadToshkhojaye
•
4 views
Паровая машина
SobirjonQodirov
•
4 views
Монтажник по установке высокопрочных болтов.pptx
Grimlock10
•
6 views
1c66182f05bed6925520a585dab6bbfe.ppt
ssuser48e933
•
2 views
Samsung Galaxy S23 Ultra
Thế Giới Di Động
•
118 views
Анализ ссылочной массы
Illia Cherepynets
•
5 views
слесарь по технической сборке трубопроводов.pptx
Grimlock10
•
12 views
iimg1.pdf
Thế Giới Di Động
•
13 views
ПРЕИМУЩЕСТВА И НЕДОСТАТКИ 301 И 401.pdf
Zarif Tadjibaev
•
6 views
С широко закрытыми глазами - риск-ориентированный подход к миграции в облака
Vsevolod Shabad
•
102 views
Continuous integration testing of mobile SDK
Testableapple
•
383 views
самост.pptx
ssuserace855
•
3 views
Unit tests Python examples
ssuserd327fe1
•
2 views
Анализ использования ресурсов приложениями в ОС Windows.PPTX
Vasiliy Burov
•
2 views
피오렌티나 {ωωω.rtЗЗ.top}코드B77 인도 베팅 ㈅ mcm토토 ㉴ 중앙미드필더 ㈺ 리히텐슈타인 분석 ⓤ 축구해외 ㊂ 카지노사이트추천
ssusere9c2b4
•
17 views
монтажник металлоконструкции.pptx
Grimlock10
•
23 views
Зачем нужен EmberJS, если мне хвататет jQuery
ЗАЧЕМ НУЖЕН EMBERJS, ЕСЛИ МНЕ ХВАТАЕТ
JQUERY DUMP Conference, 2014 brought by Sergey N. Bolshchikov
● Ведущий front
end разработчик в New ProImage ● Со-организатор EmberJS Tel-Aviv Meetup ● Со-организатор EmberFest Europe Я! 1
ВЫ! ● Кто пишет
front end? ● Кто знает JavaScript? ● Кто использует какой-либо JavaScript MVC фреймворк? ● Кто использует EmberJS? 2
- КАКОЙ MVC
ФРЕЙМВОРК ТЫ БУДЕШЬ ИСПОЛЬЗОВАТЬ - НИКАКОЙ, JQUERY ХВАТИТ 3
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
JQUERY JS 1. var
App = { 2. user: {} 3. }, 4. firstNameInput = $('#firstName'), 5. lastNameInput = $('#lastName'), 6. fullNameInput = $('#fullName'); 7. // set initial values 8. 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
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
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
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
МНЕ ХВАТАЕТ JQUERY 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. }); 1. var App = { 2. user: {} 3. }, 4. firstNameInput = $('#firstName'), 5. lastNameInput = $('#lastName'), 6. fullNameInput = $('#fullName'); 7. // set initial values 8. 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
ЗАЧЕМ НУЖЕН EMBERJS source: http://www.flickr.com/photos/24589924@N04/3426111251/ 1. Структура приложения
ЗАЧЕМ НУЖЕН EMBERJS source: http://blog.discoverymachine.com/2013/01/24/is-a-designed-framework-required-for-knowledge-flow/ 1. Структура приложения
ЗАЧЕМ НУЖЕН EMBERJS source: http://binatani.com/1957-hudson-wiring-diagram-of-complete-internal-electrical-system/1957-hudson-internal-electrical-components-wiring-diagram/ 1. Структура приложения 2.
Связка компонентов
АРХИТЕКТУРА ПРИЛОЖЕНИЯ
РАЗДЕЛЕНИЕ ОТВЕТСТВЕННОСТЕЙ ДАННЫЕ ЛОГИКА UI 14
MODEL-VIEW-CONTROLLER (MVC) MODEL CONTROLLERVIEW USER source: http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller изменяетобновляет используетвидит 15
РАЗДЕЛЕНИЕ ОТВЕТСТВЕННОСТЕЙ ДАННЫЕ ЛОГИКА UI 16
РАЗДЕЛЕНИЕ ОТВЕТСТВЕННОСТЕЙ ДАННЫЕ ЛОГИКА UIзапуск приложения 18
РАЗДЕЛЕНИЕ ОТВЕТСТВЕННОСТЕЙ ДАННЫЕ ЛОГИКА UI состояние приложения запуск приложения 19
РАЗДЕЛЕНИЕ ОТВЕТСТВЕННОСТЕЙ ДАННЫЕ ЛОГИКА UI иерархия вьюшек состояние приложения запуск приложения 20
РАЗДЕЛЕНИЕ ОТВЕТСТВЕННОСТЕЙ ДАННЫЕ ЛОГИКА UI иерархия вьюшек состояние приложения запуск приложения URL 21
MVC от EMBERJS MODEL CONTROLLER VIEW USER source:
http://www.youtube.com/watch?v=s1dhXamEAKQ ROUTE ROUTER TEMPLATEвидит использует обновляет активирует обновляет уведомляет 22
MVC от EMBERJS MODEL CONTROLLER VIEW USER source:
http://www.youtube.com/watch?v=s1dhXamEAKQ ROUTE ROUTER TEMPLATEвидит использует обновляет активирует обновляет уведомляет 23
СВЯЗКА КОМПОНЕНТОВ
СВЯЗКА КОМПОНЕНТОВ MODEL CONTROLLER VIEW USER source: http://www.youtube.com/watch?v=s1dhXamEAKQ ROUTE ROUTER TEMPLATEвидит использует обновляет активирует обновляет создает определяет 25
СВЯЗКА КОМПОНЕНТОВ MODEL CONTROLLER VIEW USER source: http://www.youtube.com/watch?v=s1dhXamEAKQ ROUTE ROUTER TEMPLATEвидит использует обновляет активирует обновляет создает определяет 26
СВЯЗКА КОМПОНЕНТОВ MODEL CONTROLLER VIEW USER source: http://www.youtube.com/watch?v=s1dhXamEAKQ ROUTE ROUTER TEMPLATEвидит использует обновляет активирует обновляет создает определяет 27
КОНВЕНЦИИ Route Name Controller
Route Template modules ModulesController ModulesRoute modules sessions SessionsController SessionsRoute sessions sessions/session SessionController SessionRoute session 28
ПФФФ… АРХИТЕКТУРУ МОЖНО ПОСТРОИТЬ И
С BACKBONE, КОТОРЫЙ В 10 РАЗ ЛЕГЧЕ
А КАК НА
СЧЕТ СИНХРОНИЗАЦИИ МЕЖДУ МОДЕЛЬЮ И UI?
ДАННЫЕ ГРАФИКА 31
ДАННЫЕ ГРАФИКА 32
TWO-WAY BINDINGS ДВУСТОРОННИЕ СВЯЗИ
<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
COMPUTED PROPERTIES ВЫЧИСЛЯЕМЫЕ ЗНАЧЕНИЯ
<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
А ЧТО ЕЩЕ?
EMBER и БОЛЬШИЕ
СПИСКИ
EMBER против ANGULAR
А ЕЩЕ ЕСТЬ EMBER
DATA 39
ЧТО ДАЛЬШЕ? 1. EmberJS 2.
Ember Watch 3. Начинаем работать с Ember.js 4. Анатомия Ember.js 40
СПАСИБО ЗА ВНИМАНИЕ mail:
sergey@bolshchikov.net site: http://bolshchikov.net blog: http://blog.bolshchikov.net linkedin: http://www.linkedin.com/in/bolshchikov github: http://github.com/bolshchikov
Advertisement