SlideShare a Scribd company logo
Ember.js: Productivity
without the fatigue
Jacek Galanciak
This tech talk
• Not a tutorial
• Overview of Ember.js framework
• Overview of the ecosystem and processes
Ember.js encapsulates:
• Framework (“full-frontal framework”)
• Tooling
• Conventions
Installing Ember.js
$ npm install -g ember-cli
Creating a new project
Creating a new project
$ ember new people-app
!"" README.md
!"" app
#   !"" app.js
#   !"" components
#   !"" controllers
#   !"" helpers
#   !"" index.html
#   !"" models
#   !"" resolver.js
#   !"" router.js
#   !"" routes
#   !"" styles
#   #   %"" app.css
#   %"" templates
#   %"" components
!"" bower.json
!"" config
#   %"" environment.js
!"" ember-cli-build.js
!"" package.json
!"" public
#   !"" crossdomain.xml
#   %"" robots.txt
!"" testem.js
!"" tests
#   !"" helpers
#   #   !"" destroy-app.js
#   #   !"" module-for-acceptance.js
#   #   !"" resolver.js
#   #   %"" start-app.js
#   !"" index.html
#   !"" integration
#   !"" test-helper.js
#   %"" unit
%"" vendor
16 directories, 19 files
Sass? Bootstrap?
$ ember install ember-cli-sass
$ ember install ember-cli-bootstrap-sassy
Hello world
$ ember g template application
installing template
create app/templates/application.hbs
<div>
<label>Name:</label>
{{input type="text" value=name placeholder="Enter your name"}}
</div>
<div class="text">
<h3>My name is {{name}} and I really like Ember!</h3>
</div>
Hello world
$ ember serve
Just getting started with Ember? Please visit http://localhost:4200/ember-getting-started to get going
Livereload server on http://localhost:49152
Serving on http://localhost:4200/
Ember CLI
• generates projects and files
• upgrades your project
• installs addons
• builds your app
• much more
Building your app
$ ember build
$ ember build --environment=production
Handled by Broccoli.js: a fully-featured asset pipeline,
“React for your filesystem”
<form {{action "createPost" on="submit"}}>
<input type="submit">
</form>
<button {{action "buttonClicked"}}>Button</button>
import Ember from 'ember';
export default Ember.Route.extend({
actions: {
buttonClicked(n) {
alert('Oh yeah!');
},
createPost() {
alert("Done!");
}
}
});
App.Router.map(function() {
this.route('mailbox', { path: '/:mailbox_id' }, function() {
this.route('mail', { path: '/:message_id', resetNamespace: true });
});
});
<table>
<tr>
<th>Date</th>
<th>Subject</th>
<th>From</th>
<th>To</th>
</tr>
{{#each model.messages as |message|}}
{{#link-to "mail" message tagName="tr"}}
<td>{{date message.date}}</td>
<td>{{message.subject}}</td>
<td>{{message.from}}</td>
<td>{{message.to}}</td>
{{/link-to}}
{{/each}}
</table>
{{outlet}}
Visit emberjs.com for full example
Ember Data
• Data persistence library for Ember
• Mechanism-agnostic (works with JSON APIs,
websockets, IndexedDB)
• Follows jsonapi.org by default
• Customizable via adapters (eg.
ActiveModelSerializer)
// app/models/post.js
export default DS.Model.extend({
title: DS.attr("string"),
body: DS.attr("string"),
comments: DS.hasMany("comment")
});
store.find("post", 1); // find by ID
store.createRecord("post", {
title: "So easy",
});
Animations
$ ember install liquid-fire
export default function(){
this.transition(
this.fromRoute('index'),
this.toRoute('posts'),
this.use('toLeft'),
this.reverse('toRight')
);
this.transition(
this.fromRoute('posts.index'),
this.toRoute('posts.new'),
this.use('crossFade'),
this.reverse('crossFade')
);
};
Server-side rendering story
• ember-fastboot.com
• Fast, reliable, no more fragile PhantomJS setups
• Good for SEO
• Good for slow mobile devices
• Under the hood: Node.JS app running your Ember app
on the server
• Usually no change in code is required
Ember Inspector
http://brewhouse.io/blog/2015/05/13/emberjs-an-antidote-to-your-hype-fatigue.html
Release cycle, upgrades
• A guaranteed minor version release every 6 weeks
(like Chrome, Rust)
• Every fourth release is an LTS release
• Easy to follow beta channel
• Easy upgrade path, helpful deprecation warnings,
features are not removed before being deprecated
for a few releases
Who uses Ember?
http://brewhouse.io/blog/2015/05/13/emberjs-an-antidote-to-your-hype-fatigue.html
My subjective review
• Productivity: ⭐⭐⭐⭐⭐
• Joy: ⭐⭐⭐⭐
• Learning: ⭐⭐⭐
• Future: ⭐⭐⭐⭐⭐
(assuming you want to develop a rich single-page application)
Thank you!

More Related Content

What's hot

Copycopter Presentation by Joe Ferris at BostonRB
Copycopter Presentation by Joe Ferris at BostonRBCopycopter Presentation by Joe Ferris at BostonRB
Copycopter Presentation by Joe Ferris at BostonRBbostonrb
 
You're Doing It Wrong
You're Doing It WrongYou're Doing It Wrong
You're Doing It Wrong
bostonrb
 
A piece of sugar in your client-side development
A piece of sugar in your client-side developmentA piece of sugar in your client-side development
A piece of sugar in your client-side development
Nicolas Blanco
 
«Работа с базами данных с использованием Sequel»
«Работа с базами данных с использованием Sequel»«Работа с базами данных с использованием Sequel»
«Работа с базами данных с использованием Sequel»
Olga Lavrentieva
 
Functional testing with capybara
Functional testing with capybaraFunctional testing with capybara
Functional testing with capybara
koffeinfrei
 
Mojolicious on Steroids
Mojolicious on SteroidsMojolicious on Steroids
Mojolicious on Steroids
Tudor Constantin
 
Intro To Sammy
Intro To SammyIntro To Sammy
Intro To Sammy
Brandon Aaron
 
Embracing Capybara
Embracing CapybaraEmbracing Capybara
Embracing Capybara
Tim Moore
 
What the web platform (and your app!) can learn from Node.js
What the web platform (and your app!) can learn from Node.jsWhat the web platform (and your app!) can learn from Node.js
What the web platform (and your app!) can learn from Node.js
wbinnssmith
 
Rails for Beginners - Le Wagon
Rails for Beginners - Le WagonRails for Beginners - Le Wagon
Rails for Beginners - Le Wagon
Alex Benoit
 
Mojolicious, real-time web framework
Mojolicious, real-time web frameworkMojolicious, real-time web framework
Mojolicious, real-time web frameworktaggg
 
Web apps without internet
Web apps without internetWeb apps without internet
Web apps without internet
MSDEVMTL
 
Hooked on WordPress: WordCamp Columbus
Hooked on WordPress: WordCamp ColumbusHooked on WordPress: WordCamp Columbus
Hooked on WordPress: WordCamp Columbus
Shawn Hooper
 
Mojolicious: what works and what doesn't
Mojolicious: what works and what doesn'tMojolicious: what works and what doesn't
Mojolicious: what works and what doesn't
Cosimo Streppone
 
Capybara
CapybaraCapybara
Capybara
Flavian Missi
 
Dynamic documentation - SRECON 2017
Dynamic documentation - SRECON 2017Dynamic documentation - SRECON 2017
Dynamic documentation - SRECON 2017
Daniel ( Danny ) ☃ Lawrence
 
Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)
Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)
Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)
Dotan Dimet
 
Angular directive filter and routing
Angular directive filter and routingAngular directive filter and routing
Angular directive filter and routing
jagriti srivastava
 
Mojolicious - A new hope
Mojolicious - A new hopeMojolicious - A new hope
Mojolicious - A new hope
Marcus Ramberg
 

What's hot (20)

Copycopter Presentation by Joe Ferris at BostonRB
Copycopter Presentation by Joe Ferris at BostonRBCopycopter Presentation by Joe Ferris at BostonRB
Copycopter Presentation by Joe Ferris at BostonRB
 
You're Doing It Wrong
You're Doing It WrongYou're Doing It Wrong
You're Doing It Wrong
 
A piece of sugar in your client-side development
A piece of sugar in your client-side developmentA piece of sugar in your client-side development
A piece of sugar in your client-side development
 
«Работа с базами данных с использованием Sequel»
«Работа с базами данных с использованием Sequel»«Работа с базами данных с использованием Sequel»
«Работа с базами данных с использованием Sequel»
 
Functional testing with capybara
Functional testing with capybaraFunctional testing with capybara
Functional testing with capybara
 
Mojolicious on Steroids
Mojolicious on SteroidsMojolicious on Steroids
Mojolicious on Steroids
 
Intro To Sammy
Intro To SammyIntro To Sammy
Intro To Sammy
 
Mojolicious
MojoliciousMojolicious
Mojolicious
 
Embracing Capybara
Embracing CapybaraEmbracing Capybara
Embracing Capybara
 
What the web platform (and your app!) can learn from Node.js
What the web platform (and your app!) can learn from Node.jsWhat the web platform (and your app!) can learn from Node.js
What the web platform (and your app!) can learn from Node.js
 
Rails for Beginners - Le Wagon
Rails for Beginners - Le WagonRails for Beginners - Le Wagon
Rails for Beginners - Le Wagon
 
Mojolicious, real-time web framework
Mojolicious, real-time web frameworkMojolicious, real-time web framework
Mojolicious, real-time web framework
 
Web apps without internet
Web apps without internetWeb apps without internet
Web apps without internet
 
Hooked on WordPress: WordCamp Columbus
Hooked on WordPress: WordCamp ColumbusHooked on WordPress: WordCamp Columbus
Hooked on WordPress: WordCamp Columbus
 
Mojolicious: what works and what doesn't
Mojolicious: what works and what doesn'tMojolicious: what works and what doesn't
Mojolicious: what works and what doesn't
 
Capybara
CapybaraCapybara
Capybara
 
Dynamic documentation - SRECON 2017
Dynamic documentation - SRECON 2017Dynamic documentation - SRECON 2017
Dynamic documentation - SRECON 2017
 
Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)
Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)
Mojolicious - Perl Framework for the Real-Time Web (Lightning Talk)
 
Angular directive filter and routing
Angular directive filter and routingAngular directive filter and routing
Angular directive filter and routing
 
Mojolicious - A new hope
Mojolicious - A new hopeMojolicious - A new hope
Mojolicious - A new hope
 

Viewers also liked

Escuela primaria n 11esi
Escuela primaria n 11esiEscuela primaria n 11esi
Escuela primaria n 11esi
marta pasi
 
Final presentation amanda
Final presentation amandaFinal presentation amanda
Final presentation amanda
Amanda Estivaliz Ortega vasconcelos
 
Microsoft windows vs adroid
Microsoft windows vs adroidMicrosoft windows vs adroid
Microsoft windows vs adroid
Akhmad Khamaludin
 
4. lista grupo 4
4. lista grupo 44. lista grupo 4
4. lista grupo 4
Marcos Júnior
 
Eski eşya alan firmalar istanbul
Eski eşya alan firmalar istanbulEski eşya alan firmalar istanbul
Eski eşya alan firmalar istanbul
Eşya satmak istiyorum
 
Boca Raton Movers
Boca Raton MoversBoca Raton Movers
Boca Raton Movers
Boris Kreychman
 
Comentario sobre la evangelizacion americana
Comentario sobre la evangelizacion americanaComentario sobre la evangelizacion americana
Comentario sobre la evangelizacion americana
Héctor González
 
Avoid The Biggest Mistake in Marketing Strategy Planning
Avoid The Biggest Mistake in Marketing Strategy PlanningAvoid The Biggest Mistake in Marketing Strategy Planning
Avoid The Biggest Mistake in Marketing Strategy Planning
The Marketing Blender
 
Desarrollo cognoscitivo
Desarrollo cognoscitivoDesarrollo cognoscitivo
Desarrollo cognoscitivo
Rosa Martinez Lara
 
Strategii in managementul situatiilor de urgenta
Strategii in managementul situatiilor de urgentaStrategii in managementul situatiilor de urgenta
Strategii in managementul situatiilor de urgenta
Pompierii Români
 
Delivering with ember.js
Delivering with ember.jsDelivering with ember.js
Delivering with ember.js
Andrei Sebastian Cîmpean
 

Viewers also liked (19)

Escuela primaria n 11esi
Escuela primaria n 11esiEscuela primaria n 11esi
Escuela primaria n 11esi
 
Final presentation amanda
Final presentation amandaFinal presentation amanda
Final presentation amanda
 
Microsoft windows vs adroid
Microsoft windows vs adroidMicrosoft windows vs adroid
Microsoft windows vs adroid
 
Untitled presentation
Untitled presentationUntitled presentation
Untitled presentation
 
4. lista grupo 4
4. lista grupo 44. lista grupo 4
4. lista grupo 4
 
Fernanda
FernandaFernanda
Fernanda
 
Eski eşya alan firmalar istanbul
Eski eşya alan firmalar istanbulEski eşya alan firmalar istanbul
Eski eşya alan firmalar istanbul
 
Boca Raton Movers
Boca Raton MoversBoca Raton Movers
Boca Raton Movers
 
Comentario sobre la evangelizacion americana
Comentario sobre la evangelizacion americanaComentario sobre la evangelizacion americana
Comentario sobre la evangelizacion americana
 
Paulo
PauloPaulo
Paulo
 
Avoid The Biggest Mistake in Marketing Strategy Planning
Avoid The Biggest Mistake in Marketing Strategy PlanningAvoid The Biggest Mistake in Marketing Strategy Planning
Avoid The Biggest Mistake in Marketing Strategy Planning
 
Disertacion
DisertacionDisertacion
Disertacion
 
Brochure
BrochureBrochure
Brochure
 
VAIBHAV SONI
VAIBHAV SONIVAIBHAV SONI
VAIBHAV SONI
 
Sector primário
Sector primárioSector primário
Sector primário
 
Ikkerstafdruiprekje
IkkerstafdruiprekjeIkkerstafdruiprekje
Ikkerstafdruiprekje
 
Desarrollo cognoscitivo
Desarrollo cognoscitivoDesarrollo cognoscitivo
Desarrollo cognoscitivo
 
Strategii in managementul situatiilor de urgenta
Strategii in managementul situatiilor de urgentaStrategii in managementul situatiilor de urgenta
Strategii in managementul situatiilor de urgenta
 
Delivering with ember.js
Delivering with ember.jsDelivering with ember.js
Delivering with ember.js
 

Similar to Pilot Tech Talk #9 — Ember.js: Productivity without the fatigue by Jacek Galanciak

Javascript MVC & Backbone Tips & Tricks
Javascript MVC & Backbone Tips & TricksJavascript MVC & Backbone Tips & Tricks
Javascript MVC & Backbone Tips & TricksHjörtur Hilmarsson
 
Primefaces Nextgen Lju
Primefaces Nextgen LjuPrimefaces Nextgen Lju
Primefaces Nextgen Lju
Skills Matter
 
Primefaces Nextgen Lju
Primefaces Nextgen LjuPrimefaces Nextgen Lju
Primefaces Nextgen LjuSkills Matter
 
Build web application by express
Build web application by expressBuild web application by express
Build web application by expressShawn Meng
 
Postman On Steroids
Postman On SteroidsPostman On Steroids
Postman On Steroids
Sara Tornincasa
 
A mobile web app for Android in 75 minutes
A mobile web app for Android in 75 minutesA mobile web app for Android in 75 minutes
A mobile web app for Android in 75 minutes
James Pearce
 
Rails 3 overview
Rails 3 overviewRails 3 overview
Rails 3 overviewYehuda Katz
 
Bonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsBonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node js
Francois Zaninotto
 
Rails 3: Dashing to the Finish
Rails 3: Dashing to the FinishRails 3: Dashing to the Finish
Rails 3: Dashing to the FinishYehuda Katz
 
Big Data for each one of us
Big Data for each one of usBig Data for each one of us
Big Data for each one of usOSCON Byrum
 
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridasFrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
Loiane Groner
 
A re introduction to webpack - reactfoo - mumbai
A re introduction to webpack - reactfoo - mumbaiA re introduction to webpack - reactfoo - mumbai
A re introduction to webpack - reactfoo - mumbai
Praveen Puglia
 
RubyBarCamp “Полезные gems и plugins”
RubyBarCamp “Полезные gems и plugins”RubyBarCamp “Полезные gems и plugins”
RubyBarCamp “Полезные gems и plugins”
apostlion
 
Android L01 - Warm Up
Android L01 - Warm UpAndroid L01 - Warm Up
Android L01 - Warm Up
Mohammad Shaker
 
Turn your spaghetti code into ravioli with JavaScript modules
Turn your spaghetti code into ravioli with JavaScript modulesTurn your spaghetti code into ravioli with JavaScript modules
Turn your spaghetti code into ravioli with JavaScript modules
jerryorr
 
Create a mobile web app with Sencha Touch
Create a mobile web app with Sencha TouchCreate a mobile web app with Sencha Touch
Create a mobile web app with Sencha TouchJames Pearce
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
toddbr
 
Intro To webOS
Intro To webOSIntro To webOS
Intro To webOS
fpatton
 
Javascript is your (Auto)mate
Javascript is your (Auto)mateJavascript is your (Auto)mate
Javascript is your (Auto)mate
Codemotion
 

Similar to Pilot Tech Talk #9 — Ember.js: Productivity without the fatigue by Jacek Galanciak (20)

Javascript MVC & Backbone Tips & Tricks
Javascript MVC & Backbone Tips & TricksJavascript MVC & Backbone Tips & Tricks
Javascript MVC & Backbone Tips & Tricks
 
Primefaces Nextgen Lju
Primefaces Nextgen LjuPrimefaces Nextgen Lju
Primefaces Nextgen Lju
 
Primefaces Nextgen Lju
Primefaces Nextgen LjuPrimefaces Nextgen Lju
Primefaces Nextgen Lju
 
Having Fun with Play
Having Fun with PlayHaving Fun with Play
Having Fun with Play
 
Build web application by express
Build web application by expressBuild web application by express
Build web application by express
 
Postman On Steroids
Postman On SteroidsPostman On Steroids
Postman On Steroids
 
A mobile web app for Android in 75 minutes
A mobile web app for Android in 75 minutesA mobile web app for Android in 75 minutes
A mobile web app for Android in 75 minutes
 
Rails 3 overview
Rails 3 overviewRails 3 overview
Rails 3 overview
 
Bonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsBonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node js
 
Rails 3: Dashing to the Finish
Rails 3: Dashing to the FinishRails 3: Dashing to the Finish
Rails 3: Dashing to the Finish
 
Big Data for each one of us
Big Data for each one of usBig Data for each one of us
Big Data for each one of us
 
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridasFrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
 
A re introduction to webpack - reactfoo - mumbai
A re introduction to webpack - reactfoo - mumbaiA re introduction to webpack - reactfoo - mumbai
A re introduction to webpack - reactfoo - mumbai
 
RubyBarCamp “Полезные gems и plugins”
RubyBarCamp “Полезные gems и plugins”RubyBarCamp “Полезные gems и plugins”
RubyBarCamp “Полезные gems и plugins”
 
Android L01 - Warm Up
Android L01 - Warm UpAndroid L01 - Warm Up
Android L01 - Warm Up
 
Turn your spaghetti code into ravioli with JavaScript modules
Turn your spaghetti code into ravioli with JavaScript modulesTurn your spaghetti code into ravioli with JavaScript modules
Turn your spaghetti code into ravioli with JavaScript modules
 
Create a mobile web app with Sencha Touch
Create a mobile web app with Sencha TouchCreate a mobile web app with Sencha Touch
Create a mobile web app with Sencha Touch
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
 
Intro To webOS
Intro To webOSIntro To webOS
Intro To webOS
 
Javascript is your (Auto)mate
Javascript is your (Auto)mateJavascript is your (Auto)mate
Javascript is your (Auto)mate
 

More from Pilot

Pilot Tech Talk #12 — Dependency Injection in Go by Justus Perlwitz
Pilot Tech Talk #12 — Dependency Injection in Go by Justus PerlwitzPilot Tech Talk #12 — Dependency Injection in Go by Justus Perlwitz
Pilot Tech Talk #12 — Dependency Injection in Go by Justus Perlwitz
Pilot
 
Pilot Tech Talk #10 — Practical automation by Kamil Cholewiński
Pilot Tech Talk #10 — Practical automation by Kamil CholewińskiPilot Tech Talk #10 — Practical automation by Kamil Cholewiński
Pilot Tech Talk #10 — Practical automation by Kamil Cholewiński
Pilot
 
Pilot Tech Talk #6 — Strategy for Better Productivity by Matt Drozdzynski
Pilot Tech Talk #6 —  Strategy for Better Productivity by Matt DrozdzynskiPilot Tech Talk #6 —  Strategy for Better Productivity by Matt Drozdzynski
Pilot Tech Talk #6 — Strategy for Better Productivity by Matt Drozdzynski
Pilot
 
Pilot Tech Talk #7 — Optimizing Infinite Scroll by Paweł Sułkowski
Pilot Tech Talk #7 — Optimizing Infinite Scroll by Paweł SułkowskiPilot Tech Talk #7 — Optimizing Infinite Scroll by Paweł Sułkowski
Pilot Tech Talk #7 — Optimizing Infinite Scroll by Paweł Sułkowski
Pilot
 
Pilot Tech Talk #5—Managing notifications and messages in Slack by Piotrek Pe...
Pilot Tech Talk #5—Managing notifications and messages in Slack by Piotrek Pe...Pilot Tech Talk #5—Managing notifications and messages in Slack by Piotrek Pe...
Pilot Tech Talk #5—Managing notifications and messages in Slack by Piotrek Pe...
Pilot
 
Pilot Tech Talk #4 — Building bots for Slack by Matt Drozdzynski
Pilot Tech Talk #4 — Building bots for Slack by Matt DrozdzynskiPilot Tech Talk #4 — Building bots for Slack by Matt Drozdzynski
Pilot Tech Talk #4 — Building bots for Slack by Matt Drozdzynski
Pilot
 
Pilot Tech Talk #3 — Zapier — my top 5 favorite zaps by Staszek Kolarzowski
Pilot Tech Talk #3 — Zapier — my top 5 favorite zaps by Staszek KolarzowskiPilot Tech Talk #3 — Zapier — my top 5 favorite zaps by Staszek Kolarzowski
Pilot Tech Talk #3 — Zapier — my top 5 favorite zaps by Staszek Kolarzowski
Pilot
 
Pilot Tech Talk #1 — 101 Nonviolent Communication by Karola Morawska
Pilot Tech Talk #1 — 101 Nonviolent Communication by Karola MorawskaPilot Tech Talk #1 — 101 Nonviolent Communication by Karola Morawska
Pilot Tech Talk #1 — 101 Nonviolent Communication by Karola Morawska
Pilot
 

More from Pilot (8)

Pilot Tech Talk #12 — Dependency Injection in Go by Justus Perlwitz
Pilot Tech Talk #12 — Dependency Injection in Go by Justus PerlwitzPilot Tech Talk #12 — Dependency Injection in Go by Justus Perlwitz
Pilot Tech Talk #12 — Dependency Injection in Go by Justus Perlwitz
 
Pilot Tech Talk #10 — Practical automation by Kamil Cholewiński
Pilot Tech Talk #10 — Practical automation by Kamil CholewińskiPilot Tech Talk #10 — Practical automation by Kamil Cholewiński
Pilot Tech Talk #10 — Practical automation by Kamil Cholewiński
 
Pilot Tech Talk #6 — Strategy for Better Productivity by Matt Drozdzynski
Pilot Tech Talk #6 —  Strategy for Better Productivity by Matt DrozdzynskiPilot Tech Talk #6 —  Strategy for Better Productivity by Matt Drozdzynski
Pilot Tech Talk #6 — Strategy for Better Productivity by Matt Drozdzynski
 
Pilot Tech Talk #7 — Optimizing Infinite Scroll by Paweł Sułkowski
Pilot Tech Talk #7 — Optimizing Infinite Scroll by Paweł SułkowskiPilot Tech Talk #7 — Optimizing Infinite Scroll by Paweł Sułkowski
Pilot Tech Talk #7 — Optimizing Infinite Scroll by Paweł Sułkowski
 
Pilot Tech Talk #5—Managing notifications and messages in Slack by Piotrek Pe...
Pilot Tech Talk #5—Managing notifications and messages in Slack by Piotrek Pe...Pilot Tech Talk #5—Managing notifications and messages in Slack by Piotrek Pe...
Pilot Tech Talk #5—Managing notifications and messages in Slack by Piotrek Pe...
 
Pilot Tech Talk #4 — Building bots for Slack by Matt Drozdzynski
Pilot Tech Talk #4 — Building bots for Slack by Matt DrozdzynskiPilot Tech Talk #4 — Building bots for Slack by Matt Drozdzynski
Pilot Tech Talk #4 — Building bots for Slack by Matt Drozdzynski
 
Pilot Tech Talk #3 — Zapier — my top 5 favorite zaps by Staszek Kolarzowski
Pilot Tech Talk #3 — Zapier — my top 5 favorite zaps by Staszek KolarzowskiPilot Tech Talk #3 — Zapier — my top 5 favorite zaps by Staszek Kolarzowski
Pilot Tech Talk #3 — Zapier — my top 5 favorite zaps by Staszek Kolarzowski
 
Pilot Tech Talk #1 — 101 Nonviolent Communication by Karola Morawska
Pilot Tech Talk #1 — 101 Nonviolent Communication by Karola MorawskaPilot Tech Talk #1 — 101 Nonviolent Communication by Karola Morawska
Pilot Tech Talk #1 — 101 Nonviolent Communication by Karola Morawska
 

Recently uploaded

Planning Of Procurement o different goods and services
Planning Of Procurement o different goods and servicesPlanning Of Procurement o different goods and services
Planning Of Procurement o different goods and services
JoytuBarua2
 
Gen AI Study Jams _ For the GDSC Leads in India.pdf
Gen AI Study Jams _ For the GDSC Leads in India.pdfGen AI Study Jams _ For the GDSC Leads in India.pdf
Gen AI Study Jams _ For the GDSC Leads in India.pdf
gdsczhcet
 
Standard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - NeometrixStandard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - Neometrix
Neometrix_Engineering_Pvt_Ltd
 
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
zwunae
 
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
thanhdowork
 
H.Seo, ICLR 2024, MLILAB, KAIST AI.pdf
H.Seo,  ICLR 2024, MLILAB,  KAIST AI.pdfH.Seo,  ICLR 2024, MLILAB,  KAIST AI.pdf
H.Seo, ICLR 2024, MLILAB, KAIST AI.pdf
MLILAB
 
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Dr.Costas Sachpazis
 
ethical hacking in wireless-hacking1.ppt
ethical hacking in wireless-hacking1.pptethical hacking in wireless-hacking1.ppt
ethical hacking in wireless-hacking1.ppt
Jayaprasanna4
 
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
AJAYKUMARPUND1
 
Fundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptxFundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptx
manasideore6
 
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
ydteq
 
block diagram and signal flow graph representation
block diagram and signal flow graph representationblock diagram and signal flow graph representation
block diagram and signal flow graph representation
Divya Somashekar
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
Osamah Alsalih
 
Student information management system project report ii.pdf
Student information management system project report ii.pdfStudent information management system project report ii.pdf
Student information management system project report ii.pdf
Kamal Acharya
 
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdfHybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
fxintegritypublishin
 
ethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.pptethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.ppt
Jayaprasanna4
 
power quality voltage fluctuation UNIT - I.pptx
power quality voltage fluctuation UNIT - I.pptxpower quality voltage fluctuation UNIT - I.pptx
power quality voltage fluctuation UNIT - I.pptx
ViniHema
 
AP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specificAP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specific
BrazilAccount1
 
The Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdfThe Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdf
Pipe Restoration Solutions
 
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptxCFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
R&R Consult
 

Recently uploaded (20)

Planning Of Procurement o different goods and services
Planning Of Procurement o different goods and servicesPlanning Of Procurement o different goods and services
Planning Of Procurement o different goods and services
 
Gen AI Study Jams _ For the GDSC Leads in India.pdf
Gen AI Study Jams _ For the GDSC Leads in India.pdfGen AI Study Jams _ For the GDSC Leads in India.pdf
Gen AI Study Jams _ For the GDSC Leads in India.pdf
 
Standard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - NeometrixStandard Reomte Control Interface - Neometrix
Standard Reomte Control Interface - Neometrix
 
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
一比一原版(IIT毕业证)伊利诺伊理工大学毕业证成绩单专业办理
 
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
RAT: Retrieval Augmented Thoughts Elicit Context-Aware Reasoning in Long-Hori...
 
H.Seo, ICLR 2024, MLILAB, KAIST AI.pdf
H.Seo,  ICLR 2024, MLILAB,  KAIST AI.pdfH.Seo,  ICLR 2024, MLILAB,  KAIST AI.pdf
H.Seo, ICLR 2024, MLILAB, KAIST AI.pdf
 
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
 
ethical hacking in wireless-hacking1.ppt
ethical hacking in wireless-hacking1.pptethical hacking in wireless-hacking1.ppt
ethical hacking in wireless-hacking1.ppt
 
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
 
Fundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptxFundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptx
 
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
一比一原版(UofT毕业证)多伦多大学毕业证成绩单如何办理
 
block diagram and signal flow graph representation
block diagram and signal flow graph representationblock diagram and signal flow graph representation
block diagram and signal flow graph representation
 
MCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdfMCQ Soil mechanics questions (Soil shear strength).pdf
MCQ Soil mechanics questions (Soil shear strength).pdf
 
Student information management system project report ii.pdf
Student information management system project report ii.pdfStudent information management system project report ii.pdf
Student information management system project report ii.pdf
 
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdfHybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
 
ethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.pptethical hacking-mobile hacking methods.ppt
ethical hacking-mobile hacking methods.ppt
 
power quality voltage fluctuation UNIT - I.pptx
power quality voltage fluctuation UNIT - I.pptxpower quality voltage fluctuation UNIT - I.pptx
power quality voltage fluctuation UNIT - I.pptx
 
AP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specificAP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specific
 
The Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdfThe Benefits and Techniques of Trenchless Pipe Repair.pdf
The Benefits and Techniques of Trenchless Pipe Repair.pdf
 
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptxCFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
CFD Simulation of By-pass Flow in a HRSG module by R&R Consult.pptx
 

Pilot Tech Talk #9 — Ember.js: Productivity without the fatigue by Jacek Galanciak

  • 1. Ember.js: Productivity without the fatigue Jacek Galanciak
  • 2.
  • 3.
  • 4. This tech talk • Not a tutorial • Overview of Ember.js framework • Overview of the ecosystem and processes
  • 5. Ember.js encapsulates: • Framework (“full-frontal framework”) • Tooling • Conventions
  • 6. Installing Ember.js $ npm install -g ember-cli
  • 7. Creating a new project
  • 8.
  • 9. Creating a new project $ ember new people-app
  • 10.
  • 11. !"" README.md !"" app #   !"" app.js #   !"" components #   !"" controllers #   !"" helpers #   !"" index.html #   !"" models #   !"" resolver.js #   !"" router.js #   !"" routes #   !"" styles #   #   %"" app.css #   %"" templates #   %"" components !"" bower.json !"" config #   %"" environment.js !"" ember-cli-build.js !"" package.json !"" public #   !"" crossdomain.xml #   %"" robots.txt !"" testem.js !"" tests #   !"" helpers #   #   !"" destroy-app.js #   #   !"" module-for-acceptance.js #   #   !"" resolver.js #   #   %"" start-app.js #   !"" index.html #   !"" integration #   !"" test-helper.js #   %"" unit %"" vendor 16 directories, 19 files
  • 12. Sass? Bootstrap? $ ember install ember-cli-sass $ ember install ember-cli-bootstrap-sassy
  • 13. Hello world $ ember g template application installing template create app/templates/application.hbs <div> <label>Name:</label> {{input type="text" value=name placeholder="Enter your name"}} </div> <div class="text"> <h3>My name is {{name}} and I really like Ember!</h3> </div>
  • 14. Hello world $ ember serve Just getting started with Ember? Please visit http://localhost:4200/ember-getting-started to get going Livereload server on http://localhost:49152 Serving on http://localhost:4200/
  • 15.
  • 16.
  • 17. Ember CLI • generates projects and files • upgrades your project • installs addons • builds your app • much more
  • 18. Building your app $ ember build $ ember build --environment=production Handled by Broccoli.js: a fully-featured asset pipeline, “React for your filesystem”
  • 19. <form {{action "createPost" on="submit"}}> <input type="submit"> </form> <button {{action "buttonClicked"}}>Button</button> import Ember from 'ember'; export default Ember.Route.extend({ actions: { buttonClicked(n) { alert('Oh yeah!'); }, createPost() { alert("Done!"); } } });
  • 20.
  • 21.
  • 22.
  • 23.
  • 24. App.Router.map(function() { this.route('mailbox', { path: '/:mailbox_id' }, function() { this.route('mail', { path: '/:message_id', resetNamespace: true }); }); }); <table> <tr> <th>Date</th> <th>Subject</th> <th>From</th> <th>To</th> </tr> {{#each model.messages as |message|}} {{#link-to "mail" message tagName="tr"}} <td>{{date message.date}}</td> <td>{{message.subject}}</td> <td>{{message.from}}</td> <td>{{message.to}}</td> {{/link-to}} {{/each}} </table> {{outlet}} Visit emberjs.com for full example
  • 25. Ember Data • Data persistence library for Ember • Mechanism-agnostic (works with JSON APIs, websockets, IndexedDB) • Follows jsonapi.org by default • Customizable via adapters (eg. ActiveModelSerializer) // app/models/post.js export default DS.Model.extend({ title: DS.attr("string"), body: DS.attr("string"), comments: DS.hasMany("comment") }); store.find("post", 1); // find by ID store.createRecord("post", { title: "So easy", });
  • 26. Animations $ ember install liquid-fire export default function(){ this.transition( this.fromRoute('index'), this.toRoute('posts'), this.use('toLeft'), this.reverse('toRight') ); this.transition( this.fromRoute('posts.index'), this.toRoute('posts.new'), this.use('crossFade'), this.reverse('crossFade') ); };
  • 27. Server-side rendering story • ember-fastboot.com • Fast, reliable, no more fragile PhantomJS setups • Good for SEO • Good for slow mobile devices • Under the hood: Node.JS app running your Ember app on the server • Usually no change in code is required
  • 28.
  • 29.
  • 31.
  • 32. Release cycle, upgrades • A guaranteed minor version release every 6 weeks (like Chrome, Rust) • Every fourth release is an LTS release • Easy to follow beta channel • Easy upgrade path, helpful deprecation warnings, features are not removed before being deprecated for a few releases
  • 34. My subjective review • Productivity: ⭐⭐⭐⭐⭐ • Joy: ⭐⭐⭐⭐ • Learning: ⭐⭐⭐ • Future: ⭐⭐⭐⭐⭐ (assuming you want to develop a rich single-page application)