Check out Early Access to Rock and Roll with Ember.js 3, the best deal you'll ever get for the book!

The most up-to-date book to learn Ember.js

Trusted by: Toptal Firebase AirPair Nathan Barry
Rock & Roll with Ember.js

Build ambitious apps with confidence

Ember.js is a kick-ass framework for building web applications. It's the only tool you need (on the client-side) to craft your idea into a working wonder. However, its strong opinions and heavy reliance of “convention over configuration” can give developers who are new to the framework a hard time figuring out how Ember wants them to do things.

This book helps to overcome that initial frustration, and help you grok Ember a lot faster, by pinpointing the core concepts and explaining them in detail. Once you understand them you are on your way to taming and mastering Ember.js. So don't fear the learning curve.

This is a really great book. I think it will be very helpful to many people. I’m definitely going to recommend it to beginners.

Taras Mankowski
— Taras Mankowski This Dot Inc., formerly EmberSherpa

The book guides you through the steps of building a real application so that you can see how the concepts are applied in practice. You'll learn about the building blocks of Ember one by one, in a way that crushes the steep learning curve. Knowledge is dripped in slowly, chapter by chapter, to prevent you from drowning in a sea of novel information. By improving an existing and working application, you will learn more quickly and new knowledge will sink in deeper.

Already convinced? Skip to buying.

Once upon a time...

It all started in September 2013. Having just returned from the first European Ember.js conference, my enthusiasm went through the roof. I wanted to spread the word, for people to realize how beautiful Ember is, for them to know that Ember.js is not that hard to learn. It's just a matter of having the core concepts internalized.

So without proper equipment (and after a few episodes, with a ~$80 mic) I started producing screencasts, a series in which a simple application is developed step-by-step. I sent the first few to my subscribers and kept producing them. And people seemed to have liked them.

Great episode! Pace and depth was perfect. Thanks for such a great webcast series!

Curtis Wallen
— Curtis Wallen

I really appreciate the effort you want to put up. Just wanted to thank you for this and let you know that your video series rock!

Antonio Antillon
— Antonio Antillon

Once the screencast series was finished, I switched to blog posts and lengthier articles, and in 2014 I committed to posting something of value each week. Then, after a long labor of (mostly) love, I published the 1st edition of the book in Feburary 2015, that used the then stable Ember version, 1.10.

I was not done, though. As Ember made progress in a neck breaking pace, I kept the book up-to-date with the actual stable version of the framework, and adding material that covered the new features.

Version 2 of the book, that is running on Ember 2, was published about 6 months later and I've been updating the book for every minor version ever since.

Buy once, get all minor updates for free

The first edition of this book followed Ember's journey to its 2.0 release. As Ember gracefully shedded old syntaxes, the book's content was updated not to use those syntaxes, either. When a new feature appeared, I added a section about it, trying to find a practical example for it in the application.

Since Ember follows a 6-week release cycle, that meant frequent book updates, precisely 8 "minor book releases" in a little less than 7 months. These updates came free for all of my customers, no matter which package they chose. I've been following a similar path and update policy with Ember 2.x. The framework has been evolving really fast but I'll keep in sync with the latest stable version of Ember and keep the content fresh. And free until at least the next major version.

I really like it! It is super difficult to find the right balance between pacing and detail and put it all together in an understandable form but you pulled it off.

Cory Forsyth
— Cory Forsyth Ember Consultant, 201 Created

Just wanted to say thanks for the ongoing updates of the book. Even after finishing the book, it’s becoming a great reference for the changes Ember is going through (even more so than the official docs).

Gabriel Rotbart
— Gabriel Rotbart

Table of Contents

  • Preface
    • My love affair with Ember.js
    • Acknowledgements
  • Introduction to Ember.js
    • Why Ember.js
    • Backstage - Dial M for Model
    • About this book
    • Is this book for you?
    • Ambitious goal for an ambitious framework
    • The application we are going to build
    • Errata
  • Ember CLI
    • Setting up Ember CLI
    • Creating our application
  • Templates and data bindings
    • The first template
    • Backstage - Handlebar's fail-softness
    • Adding assets to the build
  • Routing
    • What do we want to achieve?
    • New styles
    • Routes set up data
    • Backstage - A word about generated test files
    • Moving around with link-to
    • Using the model property
    • Showing a list of bands
    • Showing a list of songs
  • Nested routes
    • Defining the nested routes
    • Full route names
    • Stepping through a router transition
    • Backstage - Computed properties
    • Nested templates
  • Actions
    • Extracting model classes
    • Backstage - The class-level mutable attribute property
    • Capturing the event
    • Turning event into intent
  • Components
    • The idea behind components
    • Component specification
    • Defining the component's properties
    • Using the component
    • Displaying the rating with stars
    • Speaking to the outside world through actions
    • Closure actions
  • Controllers
    • Preventing the creation of bands without a name
    • Smooth UI flows
    • Going to the band page after it is created
    • Nudging the user to create the first song
    • Showing the text field when the call to action has been acted on
    • Creating new bands and songs by pressing return
    • Backstage - Where to handle actions?
  • Advanced routing
    • Route hooks
    • Route actions
    • Redirection
    • Redirecting before the model is known
    • Redirecting after the model is known
    • Backstage - Skipping model resolution
    • Resetting controller properties
    • Leaving routes and arriving at them
    • Setting descriptive page titles
    • Warning about losing data
  • Talking to a backend - with Ember Data
    • The concept behind Ember Data
    • The API
    • Model classes
    • Transforming the app to use Ember Data
    • Loading bands
    • Fetching a single band
    • Loading songs for a band
    • Creating a band
    • Updating a band's description
    • Updating song ratings
    • Backstage - Promises
  • Testing
    • Clarifying the vocabulary
    • Acceptance tests
    • To mock or not to mock?
    • Unit tests
    • Integration tests
    • Adding an acceptance test
    • Analyzing an Ember acceptance test
    • Making the first test pass
    • Safeguarding critical user scenarios
    • Creating a band
    • Creating a song
    • Writing your own test helpers
    • Registering a synchronous helper
    • Registering an async helper
    • Refactoring stubs
    • Integration tests in Ember
    • Unit tests in Ember
  • Sorting and searching with query parameters
    • Query parameters
    • Query parameters in Ember
    • Sorting the list of songs
    • Sorting an array of items
    • Backstage - Computed property macros
    • Changing the sorting criteria
    • Filtering songs by a search term
    • Adding a dash of query parameters
    • Using links instead of buttons
    • Taking a look at what we made
  • Loading and error routes
    • Loading routes
    • Backstage - Rendering the loading template is an overridable default
    • Error routes
  • Helpers
    • About helpers
    • Capitalizing each word of a name
    • Using it in templates, or elsewhere
  • Animations
    • Setting up liquid-fire
    • liquid-fire architecture
    • Transition map
    • Transition functions
    • Template helpers
    • Putting it all together
    • Debugging transitions
    • Animate moving between routes
    • Adding a custom animation
    • Animate a value change
  • Making an Ember addon
    • What is an Ember addon?
    • Developing the addon
    • Integrating our addon into our app
    • Adding a block form
    • Customizing the star-rating component's look and behavior
    • Publishing the addon
    • Using a published addon from the app
  • ES2015 - Writing modern JavaScript
    • Modernizing the app
    • Modules
    • Template strings
    • Short-hand method definitions
    • Replacing var (let & const)
    • Arrow functions
    • Destructuring
    • Other useful ES2015 features
    • Backstage - ember-watson
    • Computed property macros
  • Deployment
    • Surge
    • Heroku
    • ember-cli-deploy
  • Afterword
    • Your journey with Ember.js
  • Encore
    • ES2015 modules
    • Class and instance properties
    • Mixins
    • Concatenated properties
    • On the utility of explicit dependency definitions
    • The default component template
    • Fake synchronous tests
Balint Erdi

About me

Hello there, I'm Balint Erdi.

I have a long history of building web applications and have mostly been a back-end guy.

On a grey, chilly February day in 2013 that I’ll never forget (maybe it was January?) I got acquainted with Ember.js. Ember.js made that day bright and the ones that came after that. After learning the ropes I shifted gears and have been proselytizing for Ember since last summer.

I gave workshops at EmberConf and Eurucamp, and presented at EmberConf, EmberFest, AgentConf and Arrrrcamp. I started an Ember.js mailing list, made an introductory screencast series and have been sending Ember content to my dear subscribers on a weekly basis. I have also written guest articles for Safari Books Online, AirPair, Firebase and Toptal.

I guess you could say I’m pretty passionate about Ember.

Oh, and I love rock & roll, obviously.

Rock and Roll with Ember.js 3 - Early Access

The Book

Two books in one package

You'll get the current book version, running on Ember 2.18. This is what you absolutely need to get up & running with Ember.js. I'll also send you pre-release versions of the book as I'm writing it, once about every 1-2 weeks and the final one when it's out.

Comes in pdf, mobi and epub formats for your reading pleasure.

Rock and Roll

Rock & More

  • Early versions of the Rock and Roll with Ember.js 3 book
  • The current, complete version of the Rock and Roll with Ember.js 2 book
  • The final version of the Rock and Roll with Ember.js 3 book when it's released
  • The price is fully deductible if you upgrade to a higher package
  • 60-day refund guarantee

Even though I have worked with Ember for the past 6 months, the book helped clarify a lot of things, especially new features and their deprecated counterparts. Such a great book, and looking forward to the second one!

David Tang
— David Tang Author of Ember Data in the Wild

This book is a fabulous, approachable, foray into Emberjs that makes the learning curve much less scary. I just wish it had been available sooner for students in my previous classes.

Matt Hale
— Matt Hale Assistant Professor at the University of Nebraska
Need multiple copies for your team? Buy a team license

Hmm, I’m not sure...

  • Is the book for Ember 2 or Ember 3?

    Both! The book I'm currently writing will run on Ember 3 (when it comes out). If you purchase Early Access, you'll also get the current version of the book, which runs on the latest stable Ember.js version, 2.18.

  • Is this book for me?

    The book starts from the very basics (installing ember-cli, writing your first template, etc.) so if you completely get Ember, this book is probably not for you. If you are just starting out (or about to) or want to understand fundamental concepts in Ember, the book is definitely for you.

  • When will Rock and Roll with Ember.js 3 be published?

    I strive to release the book by late February or early March, before EmberConf '18. No eventual delay will affect the benefits that purchasing Early Access gives you.

  • Everything is changing so fast; won't the content be outdated by next week?

    As Ember.js moves beyond 3.0, I will keep updating the content of the book so that it stays void of deprecation warnings and does not promote practices that are no longer considered idiomatic. In practical terms, this means I'll release a book update after each new stable Ember release, once about every six weeks.

    For no charge for you. Remember? Buy once, get all minor version updates for free.

  • I heard Ember is so hard. Will this book help me understand it?

    I think there are a handful of key concepts in Ember.js that you need to understand to master it (probably the main one among these is routing). Once you understand these, Ember is not that hard. The intention of the book is to introduce concepts by way of building an actual application, so you see them applied in practice right away. That also helps the learning process. I also encourage you to work through the book as you read it, since that makes things sink in even deeper. You have access to the code repository if you have purchased the middle- or high-tier package. If I failed to explain Ember for you, please send me your purchase receipt to [email protected] within 60 days of purchase and I’ll issue a refund.

  • Is the book DRM protected?

    No, it’s not. If you would like to share it with colleagues (or a class), please contact me at [email protected].

  • What if I don't like the book?

    I offer a 60-day moneyback guarantee. No strings attached, just send your purchase receipt (or email address) to [email protected] or answer to the welcome email that you received when you purchased.

  • What if I buy the book-only package and later realize I want to switch to a higher package?

    No problem! Just send me your purchase receipt to [email protected], and I will upgrade you for the difference between the package prices.

  • I still have a question, how can I reach you?

    That's totally my fault, could you send a quick message to [email protected] with your question? Thank you.

Rock and Roll with Ember.js 3 - Early Access Team License

Need multiple copies? The team license gives access to the above goodies and is good for a team of up to 20 people, for the price of 5.