Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ember Data Introduction

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Ember Data Introduction

on 11/2013 PragueJS

Avatar for Adam Kloboucnik

Adam Kloboucnik

November 28, 2013
Tweet

Other Decks in Programming

Transcript

  1. GoodData Confidential. 2013 GoodData Corporation. All rights reserved. Ember Data

    ▶ client data-persistence library ▶ for Ember.js ▶ still beta-quality ▶ strongly opinionated (naming, url + model schema) ▶ “trivial choices are enemy” ~ @wycats
  2. GoodData Confidential. 2013 GoodData Corporation. All rights reserved. Ember Data

    architecture Data REST API LocalStorage Google Spreadsheet Adapter Serializer Store “Talks” protocol Extracts raw data to Models Persists models Models
  3. GoodData Confidential. 2013 GoodData Corporation. All rights reserved. Models App.Post

    = DS.Model.extend({ title: DS.attr('string'), body: DS.attr('string'), comments: DS.hasMany('comment', {async: true}) }); App.Comment = DS.Model.extend({ content: DS.attr('string'), post: DS.belongsTo('post') });
  4. GoodData Confidential. 2013 GoodData Corporation. All rights reserved. Adapter ▶

    provides protocol abstraction ▶ RESTAdapter, FixtureAdapter provided ▶ LocalStorageAdapter, many others...
  5. GoodData Confidential. 2013 GoodData Corporation. All rights reserved. Intermezzo -

    promises ▶ “eventual value returned from completion of operation” function callApi(id) { var promise = longRunningOperation(id); return promise; } //.... callApi(2).then(function(result) { // do sth with resolved result }, function(err) { // do sth with rejection });
  6. GoodData Confidential. 2013 GoodData Corporation. All rights reserved. Store ▶

    querying and saving ▶ store.find[All,Query](‘model-name’[, id]); ▶ model_object.save(); ▶ both finders and save return promises for developer sanity (formerly a state chart with actions on edges) ▶ Em.RSVP.all([promise1, promise2]).then ...
  7. GoodData Confidential. 2013 GoodData Corporation. All rights reserved. Notes ▶

    identity map ▶ sideloading ▶ optimize you API for easier life (jsonapi.org) ▶ active_model_serializers in Rails ▶ :-( elsewhere ▶ alternatives ▶ Ember.Resource ▶ Ember.Model ▶ EPF ▶ sources - emberjs.com/guides, source
  8. GoodData Confidential. 2013 GoodData Corporation. All rights reserved. ▶ really

    young now, but ▶ provides clean separation of concerns ▶ developing client app without backend ▶ testing adapter code without rest of the app ▶ … ▶ “best practices” for api modelling ▶ integrates greatly with Ember if you use it Conclusion