SlideShare a Scribd company logo
Parse Appswith Ember.js
Porting native to theweb
@mixonic
httP://madhatted.com
matt.beale@madhatted.com
201 Created
We build õ-age apps with Ember.js. We take
teams from £ to • in no time flat.
https://gumroad.com/l/XlSx/
“You are not a special snowflake.
Youwill benefit from shared tools
and abstractions.”
Yehuda Katz, co-creator of Ember.js
Unix
“Write programs that do one thing and do it
well. Write programs towork together. Write
programs to handle text streams, because that
is a universal interface.”
Doug McIlroy, Unix pioneer
Unix
Ember.js
“Whenyou decide to not pick a public
framework,youwill end upwith a
framework anyway: your own.”
Ryan Florence, guy in Utah
Unix
Ember.js
Parse
“You are not a special snowflake.
Youwill benefit from shared tools
and abstractions.”
Yehuda Katz, co-creator of Ember.js
PART 1. HISTORY
Parse Apps with Ember.js
Parse Apps with Ember.js
DB
WEBSITE APP
WEBSITE APP
HTML
HTML HTMLHTML
WEBSITE APP
HTML HTMLHTML
JSON
WEBSITE APP
HTML JSON (XML?)
JSON
WEBSITE APP
WEBSITE APP API APP
JSON (XML?)HTML
JSON
JSON JSON JSON
WEBSITE APP API APP
HTML
JSON
JSON JSON(Different)
HTML
WEBSITE APP API APP
HTML
JSON JSON(Different)
HTML
WEBSITE APP API APP
HTML
StateFUL
STATELESSStateFUL
StateLESS, MAYbE?
JSON JSON(Different)
HTML
WEBSITE APP API APP
HTML
StateFUL
STATELESSStateFUL
StateLESS, MAYbE?
✓
JSON
API APP
JSON
StateFUL
STATELESS
Ember allows us to move
complexity and state away
from the server, and into
the browser.
APIs focus on domain logic,
security and speed.
PART 2. FRAMEWORK CONCEPTS
Convention over Configuration
1 <html>
2 <body>
3
4 <script type="text/x-handlebars">
5 <h2>Welcome to Ember.js</h2>
6 </script>
7
8 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
9 <script src="//builds.handlebarsjs.com.s3.amazonaws.com/handlebars-v1.1.0.js"></script>
10 <script src="//builds.emberjs.com/tags/v1.2.0/ember.js"></script>
11
12 <script>
13 Ember.Application.create();
14 </script>
15
16 </body>
17 </html>
•How Do I update the URL?
•What object backs the template?
•What iS the template named?
•Where on THE DOM IS MY APP ATTACHED?
•How Do I update the URL? HASHCHANGE
•What object backs the template? application cONTROLLER
•What iS the template named? APPLICATION
•Where on THE DOM IS MY APP ATTACHED? BODY TAG
•How Do I update the URL? history
•What object backs the template? HOME cONTROLLER
•What iS the template named? welcome
•Where on THE DOM IS MY APP ATTACHED? #app
1 <html>
2 <body>
3 <div id="app"></div>
4
5 <script type="text/x-handlebars" id="welcome">
6 <h2>Welcome to {{platform}}</h2>
7 </script>
8
9 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
10 <script src="//builds.handlebarsjs.com.s3.amazonaws.com/handlebars-v1.1.0.js"></script>
11 <script src="//builds.emberjs.com/tags/v1.2.0/ember.js"></script>
12
13 <script>
14 var App = Ember.Application.create({
15 rootElement: '#app'
16 });
17 App.Router.map(function(){
18 location: 'history'
19 });
20 App.IndexRoute = Ember.Route.extend({
21 renderTemplate: function(){
22 this.render('welcome', {
23 controller: 'home'
24 });
25 }
26 });
27 App.HomeController = Ember.Controller.extend({
28 platform: "Ember.js"
29 });
30 </script>
31
32 </body>
33 </html>
URL Driven Development
http://myapp.dev
application.hbs
index.hbs
http://myapp.dev
1 {{! application.hbs }}
2
3 <div class="application-wrapper">
4 {{outlet}}
5 </div>
1 {{! index.hbs }}
2
3 <h2>Hello Ember.js world!</h2>
http://myapp.dev/about
application.hbs
about.hbs
http://myapp.dev/about
1 {{! about.hbs }}
2
3 <h2>About my app</h2>
1 App.Route = Ember.Route.extend({
2 // "index" is implied
3 this.route('about');
4 });
1 {{! application.hbs }}
2
3 <div class="application-wrapper">
4 {{outlet}}
5 </div>
1 {{! index.hbs }}
2
3 <h2>Hello Ember.js world!</h2>
http://myapp.dev/project/31
application.hbs
project.hbs
1 App.Route = Ember.Route.extend({
2 // "index" is implied
3 this.route('about');
4 this.route('project', {path: 'project/:project_id'});
5 });
http://myapp.dev/project/31
1 {{! project.hbs }}
2
3 <h2>Project {{name}}</h2>
4
5 <p>Created at {{createdAt}}</p>
1 {{! about.hbs }}
2
3 <h2>About my app</h2>
1 {{! application.hbs }}
2
3 <div class="application-wrapper">
4 {{outlet}}
5 </div>
1 {{! index.hbs }}
2
3 <h2>Hello Ember.js world!</h2>
http://myapp.dev/project/31/edit
application.hbs
project.hbs
project/edit.hbs
http://myapp.dev/project/31/edit
1 App.Route = Ember.Route.extend({
2 // "index" is implied
3 this.route('about');
4 this.resource('project', {path: 'project/:project_id'}, function(){
5 // "index" is implied
6 this.route('edit');
7 });
8 });
1 {{! project.hbs }}
2
3 <h2>Project {{name}}</h2>
4
5 {{outlet}}
1 {{! project/index.hbs }}
2
3 <p>Created at {{createdAt}}</p>
1 {{! project/edit.hbs }}
2
3 {{input type="text" value="createdAt"}}
1 {{! application.hbs }}
2
3 <div class="application-wrapper">
4 {{outlet}}
5 </div>
Extend the Web Forward
•Soon: Ember will be module aware (no global app.)
•soon: Ember will be written with es6 modules
•Ember components <- Web components
•primitive extensions match es6 (forEach etc.)
•Where on THE DOM IS MY APP ATTACHED?
•Ember promises (RSVP) are A+
Ember is built on concepts
you already know.
MVC, BUT MORE LIKE than
Classes and mixins (ala RUBy)
properties have setters and
getters (like Python)
If you get lostwith Ember, finding
a parallel concept may help.
Think about the problem before
getting hung up on the API.
let’s write some code.
Quickie Todo List
w/ Ember & Parse
http://emberjs.jsbin.com/lizep/3/edit
1. Parse
2. Ember.js
3. Ember-Data

1. Parse
2. Ember.js
3. Ember-Data
4. Ember-Parse Adapter
https://github.com/clintjhill/ember-parse-adapter
Why Ember-Data?
• Identity Map
• Relationships
• Schema-compat
• Cross-API Relationships
https://github.com/clintjhill/ember-parse-adapter
NO BACKBONE.js
http://emberjs.jsbin.com/lizep/7/edit
LIVE CODED:
www.turnstilelive.com
m.turnstilelive.com
Parse Apps with Ember.js
What does Ember-Parse
Adapter support?
1. Relationships
2. CRUD
3. Authentication
4. Data-types (GeoPoint
etc.)
What does Ember-Parse
Adapter not support?
1. Array Relationships
2. My Extravagant
Lifestyle
3. Push
4. Analytics
5. ACL
Thanks!
@mixonic
httP://madhatted.com
matt.beale@madhatted.com

More Related Content

PDF
WordPress 2017 with VueJS and GraphQL
PDF
Introduction to VueJS & The WordPress REST API
PDF
Build your application in seconds and optimize workflow as much as you can us...
PPTX
Take your drupal sites offline
PDF
jQuery Conference San Diego 2014 - Web Performance
KEY
New Perspectives on Performance
PDF
The Art of AngularJS in 2015
PDF
Drupal and diversity of Single sign-on systems
WordPress 2017 with VueJS and GraphQL
Introduction to VueJS & The WordPress REST API
Build your application in seconds and optimize workflow as much as you can us...
Take your drupal sites offline
jQuery Conference San Diego 2014 - Web Performance
New Perspectives on Performance
The Art of AngularJS in 2015
Drupal and diversity of Single sign-on systems

What's hot (20)

KEY
SproutCore is Awesome - HTML5 Summer DevFest
PDF
Thinking in Components
PDF
Getting Started with DrupalGap
PPTX
Real World Lessons in Progressive Web Application & Service Worker Caching
PDF
The Point of Vue - Intro to Vue.js
PDF
A Debugging Adventure: Journey through Ember.js Glue
PPT
jQuery For Developers Stack Overflow Dev Days Toronto
ODP
Let's Take Drupal Offline!
PDF
Angular js vs. Facebook react
PDF
Ten practical ways to improve front-end performance
PPTX
HTML5 Web Workers-unleashed
PDF
Tek 2013 - Building Web Apps from a New Angle with AngularJS
PDF
Building Mobile Applications with Ionic
PDF
Building Progressive Web Apps for Android and iOS
KEY
Rapid Testing, Rapid Development
PDF
Web Development for UX Designers
PDF
Vue.js for beginners
DOCX
multiple views and routing
PPTX
Frontend Workflow
PDF
State of jQuery June 2013 - Portland
SproutCore is Awesome - HTML5 Summer DevFest
Thinking in Components
Getting Started with DrupalGap
Real World Lessons in Progressive Web Application & Service Worker Caching
The Point of Vue - Intro to Vue.js
A Debugging Adventure: Journey through Ember.js Glue
jQuery For Developers Stack Overflow Dev Days Toronto
Let's Take Drupal Offline!
Angular js vs. Facebook react
Ten practical ways to improve front-end performance
HTML5 Web Workers-unleashed
Tek 2013 - Building Web Apps from a New Angle with AngularJS
Building Mobile Applications with Ionic
Building Progressive Web Apps for Android and iOS
Rapid Testing, Rapid Development
Web Development for UX Designers
Vue.js for beginners
multiple views and routing
Frontend Workflow
State of jQuery June 2013 - Portland
Ad

Viewers also liked (20)

PDF
Integrating Ember.js into legacy applications
PDF
Architecture: ember.js and AngularJS
PDF
Intro to emberjs
PDF
Ember.js internals backburner.js and rsvp.js
PDF
Complex Architectures in Ember
PDF
Building Realtime Apps with Ember.js and WebSockets
PDF
A client-side image uploader in Ember.js
PDF
Introduction to Ember.js
PDF
ember-deploy
PDF
Simple JSON parser
PPTX
How to Write the Fastest JSON Parser/Writer in the World
PPT
20120518 mssql table_schema_xml_namespace
PDF
electron for emberists
PPTX
What I learned in my First 9 months of Ember
PDF
Ember Community 2016 - Be the Bark
PDF
Testing ember data transforms
PPTX
Masa Israel Programs Overview
PDF
Delivering with ember.js
PPTX
Velocity spa faster_092116
PDF
LA Ember.js Meetup, Jan 2017
Integrating Ember.js into legacy applications
Architecture: ember.js and AngularJS
Intro to emberjs
Ember.js internals backburner.js and rsvp.js
Complex Architectures in Ember
Building Realtime Apps with Ember.js and WebSockets
A client-side image uploader in Ember.js
Introduction to Ember.js
ember-deploy
Simple JSON parser
How to Write the Fastest JSON Parser/Writer in the World
20120518 mssql table_schema_xml_namespace
electron for emberists
What I learned in my First 9 months of Ember
Ember Community 2016 - Be the Bark
Testing ember data transforms
Masa Israel Programs Overview
Delivering with ember.js
Velocity spa faster_092116
LA Ember.js Meetup, Jan 2017
Ad

Similar to Parse Apps with Ember.js (20)

PPTX
phonegap with angular js for freshers
PDF
The Heron Mapping Client - Overview, Functions, Concepts
KEY
Android Workshop
PDF
2.28.17 Introducing DSpace 7 Webinar Slides
PPTX
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
PPT
State of modern web technologies: an introduction
PDF
Always on! ... or not?
KEY
It's a Mod World - A Practical Guide to Rocking Modernizr
PDF
Always on! Or not?
PDF
From Idea to App (or “How we roll at Small Town Heroes”)
PDF
Beginning MEAN Stack
PPTX
APEX Alpe Adria 2019 - JavaScript in APEX - do it right!
PPT
.NET Recommended Resources
ODP
Nodejs Intro - Part2 Introduction to Web Applications
PDF
Apache cordova
PPT
Google Cloud Developer Challenge - GDG Belgaum
PDF
Angular mobile angular_u
PDF
Extending Spring MVC with Spring Mobile and JavaScript
PDF
Introduction to node js - From "hello world" to deploying on azure
PPTX
Introduction to using jQuery with SharePoint
phonegap with angular js for freshers
The Heron Mapping Client - Overview, Functions, Concepts
Android Workshop
2.28.17 Introducing DSpace 7 Webinar Slides
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
State of modern web technologies: an introduction
Always on! ... or not?
It's a Mod World - A Practical Guide to Rocking Modernizr
Always on! Or not?
From Idea to App (or “How we roll at Small Town Heroes”)
Beginning MEAN Stack
APEX Alpe Adria 2019 - JavaScript in APEX - do it right!
.NET Recommended Resources
Nodejs Intro - Part2 Introduction to Web Applications
Apache cordova
Google Cloud Developer Challenge - GDG Belgaum
Angular mobile angular_u
Extending Spring MVC with Spring Mobile and JavaScript
Introduction to node js - From "hello world" to deploying on azure
Introduction to using jQuery with SharePoint

More from Matthew Beale (12)

PDF
Ember.js Module Loading
PDF
Interoperable Component Patterns
PDF
Attribute actions
PDF
The Hidden Power of HTMLBars (or, Scope in Ember.js Templates)
PDF
Aligning Ember.js with Web Standards
PDF
New Component Patterns in Ember.js
PDF
Scalable vector ember
PDF
Testing Ember Apps: Managing Dependency
PDF
Snappy Means Happy: Performance in Ember Apps
PDF
Client-side Auth with Ember.js
PDF
Containers & Dependency in Ember.js
PDF
Ember and containers
Ember.js Module Loading
Interoperable Component Patterns
Attribute actions
The Hidden Power of HTMLBars (or, Scope in Ember.js Templates)
Aligning Ember.js with Web Standards
New Component Patterns in Ember.js
Scalable vector ember
Testing Ember Apps: Managing Dependency
Snappy Means Happy: Performance in Ember Apps
Client-side Auth with Ember.js
Containers & Dependency in Ember.js
Ember and containers

Recently uploaded (20)

PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Modernizing your data center with Dell and AMD
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
KodekX | Application Modernization Development
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
A Presentation on Artificial Intelligence
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
cuic standard and advanced reporting.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Per capita expenditure prediction using model stacking based on satellite ima...
Modernizing your data center with Dell and AMD
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
KodekX | Application Modernization Development
Review of recent advances in non-invasive hemoglobin estimation
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
Unlocking AI with Model Context Protocol (MCP)
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Mobile App Security Testing_ A Comprehensive Guide.pdf
Chapter 3 Spatial Domain Image Processing.pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
20250228 LYD VKU AI Blended-Learning.pptx
NewMind AI Weekly Chronicles - August'25 Week I
The AUB Centre for AI in Media Proposal.docx
A Presentation on Artificial Intelligence
Diabetes mellitus diagnosis method based random forest with bat algorithm
cuic standard and advanced reporting.pdf

Parse Apps with Ember.js