POR QUE ESCOLHER O
EMBER.JS COMO
FRAMEWORK EM 2016?
@eduardojmatos eduardomatos.me
OI, EU SOU O EDU
a maior plataforma de contratação
de serviços do Brasil
ANTES, PINGOS NOS I'S
FRAMEWORK
• Uma abstração de códigos comuns entre vários
projetos;
• Conjunto de conceitos usado para resolver um
problema de um domínio específico;
• Conjunto de classes que auxilia no
desenvolvimento de software.
SPA
• Single Page Application: uma página que carrega
conteúdo, toda a interface e faz toda comunicação
com o servidor via JavaScript;
• Controla todas as rotas de URL’s via History API;
• Implementa requisições Ajax;
• Controla o conteúdo via template engines.
OK, E POR QUE EMBER?
MASCOTE MAIS MANEIRO!
eduardoj.matos@gmail.com
@eduardojmatos
http://eduardomatos.me
OBRIGADO ;)
BRINKS =D
RAILS LIKE
• Router
• Addons == Gems
• Ember Data == ActiveRecord
• Convention over Configuration
CONVENTION OVER
CONFIGURATION
• pequenas decisões feitas pelo framework;
• best practices;
• benefício de conhecimento de outras pessoas;
• ainda permite liberdade, apesar de algumas
coisas serem built-in (router - controller -
template, por exemplo).
SEPARAÇÃO DE INTERESSES
• Cada parte do Ember tem um trabalho bem
definido;
• A separação por pastas, por exemplo, ajuda
nisso;
• Routes, Controllers e components - tudo
separado e com sua responsabilidade.
OBJECT SYSTEM
• É fato que poucos entendem o Prototype;
• O Ember tem um sistema de objetos, inspirado
no Ruby;
• Classes, heranças, mixins. Tudo no
Ember.Object.
EMBER-CLI
npm install -g ember-cli


ember new tdc-app
A MAGIA
ACONTECE
*depois de 2 horas de npm install
NADA DE CONFIGURAÇÃO
EXTREMA
• Já adiciona o package.json e o bower.json;
• Cria os diretórios e arquivos base;
• Usa um build system (o broccoli);
• JSHint, Livereload, Module System (ES6 modules),
ES6 transpilation (babel);
• Adiciona framework de teste (QUnit);
• Sistema de addon;
GENERATORS
ember generate component icon-tag
GENERATORS
ember generate controller profile
CUTTING EDGE
• ES6
• Promises
• Modules
• Várias features graças ao Babel
• Web components (logo mais com Glimmer
Components)
ADDONS
• Compartilhamento de código built-in
• Comunidade on fire!
• 2612 fucking addons
ESTABILIDADE SEM FICAR PARADO
• Usa semantic versioning;
• Tem versão LTS (long term support);
• Último release recente: 27/06 (agora pouco);
• Usam RFC (Release for Candidate).
GLIMMER
• Nova engine de renderização;
• Usando o conceito de Virtual DOM;
• Performance de render como o React.
EMBER-DATA
• Addon pra manipular models;
• É agnóstico, ou seja, não se importa se com o
mecanismo de persistência (seja JSON API via
HTTP ou WebSockets, ou IndexedDB storage);
• Usa Promises pra carregar/salvar dados;
• Provê algumas facilidades que ORM como
ActiveRecord proporciona, mas com JS.
export default DS.Model.extend({
email: DS.attr('string'),
password: DS.attr('string'),
fullName: DS.attr('string'),
birthDate: DS.attr('date'),
lead: DS.belongsTo('lead'),
});
EMBER-INSPECTOR
FASTBOOT
• Roda sua aplicação Ember no server, com Node.js!
QUEM TÁ USANDO?
PROBLEMINHAS
• Componentes dentro de componentes versus
data-down;
• Tamanho da aplicação (500kb + ou -);
MAS, SERVE PRA EU?
• Curva não tão grande de aprendizado;
• Alinhamento/refactor do back-end pra usar
JSONAPI do ember-data;
• Se a complexidade do app é tamanha, sim. Se
não, melhor usar o Backbone de boas =D
VOCÊ PRECISA MESMO DE
UMA SPA?
SIM? 

EMBER RULES
DOIS RECADINHOS =D
• Para as meninas: FrontinVale está com call4paperz
aberto (50% dos palestrantes serão mulheres)!
• Fórum FrontendBR: https://frontendbr.github.io
eduardoj.matos@gmail.com
@eduardojmatos
http://eduardomatos.me
OBRIGADO ;)
GetNinjas contrata front-end: https://getninjas.workable.com/

TDC2016SP - Trilha Frameworks JavaScript