Software Developer, Team Leader @ netguru
I work with Ember.js, Rails and React.js
Opinionated
and maintainable
on time
Model - View - Controller - Route
Router.map(function() {
this.route('post');
});
export default Ember.Route.extend({
model() {
return { id: '123', title: 'Super title' };
}
});
Router definition
Route definition
Model - View - Controller - Route
Defined
Out of the box
Model - View - Controller - Route
export default Ember.Controller.extend({
actions: {
markAsFavourite() {
this.toggleProperty('model.favourite');
}
}
});
Controller definition
Model - View - Controller - Route
<h1>{{model.title}}</h1>
<h2>by {{model.author}}</h2>
<div class="body">
{{model.body}}
</div>
Handlebars template
Model - Component - Route
<h1>{{model.title}}</h1>
<div>
{{model.body}}
</div>
export default Ember.Component.extend({
actions: {
markAsFavourite() {
this.attrs.toggleFavourite(model);
}
}
});
<div class="post-wrap">
{{post-viewer model=post toggleFavourite=(action "toggleFavourite")}}
</div>
Model - Component - Route
Model - Component - Route
Model - Component - Route
REST
JSON API
JSON
Firebase
ActiveModelSerializers
Model - Component - Route
Caching
Querying
Relationships
Polymorphism
Meta data
Model - Component - Route
import Model from 'ember-data/model';
import attr from 'ember-data/attr';
import belongsTo from 'ember-data/belongsTo';
import hasMany from 'ember-data/hasMany';
export default Model.extend({
title: attr('string'),
body: attr('string'),
author: belongsTo('user'),
comments: hasMany('comment'),
});
Model definition
Build process
Dependency management
Test framework
Deployments
Serving
First developers were experienced in JS, but not in Ember
First major Ember production app in netguru
Goal: ship on time with maintainable codebase, but also develop good practices for the company
5 long term, over 10 juniors
Codebase with up-to-date design patterns
Jumped 8 minor versions and 1 major of Ember
Not an exceptional test coverage, but including unit, integration, acceptance and end-to-end testing
Abstractions over rendering, data and routing
Opinionated approach to common problems
LTS versions for reliability
Ember has up to date approach and patterns