UNA DELICIOSA APP
Hackday Córdoba · 18/07/2015
@marcemira_dev & @joelalejandro
Me llamo Ember, y soy lo que usás para hacer esos afamados asados.
(Sí, escuchaste bien. Ember significa 'brasas' en inglés)
Y yo me llamo Tomster.
¡Soy la mascota oficial de Ember!
Nociones generales de Ember
Trabajando con el CLI de Ember
Haciendo una app (¡posta!)
Usando datos en la app (¡re-posta!)
1
2
3
4
la entrada
el aperitivo
el plato principal
el postre
1
Un framework client-side
Hecho en JavaScript
Convention-first "MVC"
Hacer aplicaciones ambiciosas
Concentrarnos en el negocio y no en nimiedades
Controladores
Vistas
Plantillas
Rutas
Componentes
Tests
Modelos
Adaptadores
Serializadores
Addons
Controladores
Vistas
Plantillas
Rutas
Componentes
Tests
Modelos
Adaptadores
Serializadores
Addons
(
"Front"
Controladores
Vistas
Plantillas
Rutas
Componentes
Tests
Modelos
Adaptadores
Serializadores
Addons
}
(
"Front"
"Back"
/app
|___ /components
|___ /controllers
|___ /helpers
|___ /models
|___ /routes
|___ /styles
|___ /templates
|___ /views
/bower_components
/config
|___ /environment.js
/dist
/node_modules
/public
/tests
/tmp
/vendor
.bowerrc
.editorconfig
.ember-cli
.git
.gitignore
.jshintrc
.settings
.travis.yml
Brocfile.js
bower.json
package.json
README.md
testem.json
esta estructura de directorios
al inicializarse.
Todo tu código va en /app.
Todas las dependencias se reparten en /node_modules y /bower_components.
2
Tener Node.js (preferiblemente con nvm)
Instalar el paquete global bower
Instalar el paquete global ember-cli
NODE VERSION MANAGER
https://github.com/creationix/nvm
A PACKAGE MANAGER FOR THE WEB
npm install -g bower
ember new mi-nueva-app
Todo comienza con una línea:
A COMMAND LINE INTERFACE FOR EMBER
npm install -g ember-cli
$> ember generate model dish
Y, por supuesto, sigue con otra.
3
(pseudocódigo)
class DishType {
Name: String,
Dishes: ArrayOf('Dish')
}
(pseudocódigo)
class Ingredient {
Name: String,
Dishes: ArrayOf('Dish')
}
(pseudocódigo)
class Dish {
Name: String,
Description: String,
Price: Number,
DishType: TypeOf('DishType'),
Ingredients: ArrayOf('Ingredients')
}
Cómo se combina todo lo que estamos cocinando.
Ember App (Front-End)
Web API (Back-End, Node.js)
Database (Node Embedded DB)
HTTP+JSON
HTTP+JSON
(Esto es, vamos a codear un rato.)
4
Ember Data es un ORM integrado directamente con Ember.
Permite de manera agnóstica conectarse a distintos tipos de back-end, sin importar el tipo de base de datos o Web API que utilicemos.
Ember Data es un ORM integrado directamente con Ember.
Permite de manera agnóstica conectarse a distintos tipos de back-end, sin importar el tipo de base de datos o Web API que utilicemos.
= en realidad sí importa, pero ya lo vemos.
Controladores
Vistas
Plantillas
Rutas
Componentes
Tests
Modelos
Adaptadores
Serializadores
Addons
}
(
"Front"
"Back"
¿Se acuerdan?
Controladores
Vistas
Plantillas
Rutas
Componentes
Tests
Modelos
Adaptadores
Serializadores
Addons
}
(
"Front"
"Back"
Enfoquémonos en el back-end.
Para la Web API, es un endpoint.
this.store.find('dish')
HTTP 1.1 GET http://localhost:1337/dishes
¿PERO CÓMO ES ESTO POSIBLE?
DS.JSONAPIAdapter
DS.JSONAPISerializer
(Esto es, vamos a codear un rato.)
¿PREGUNTAS?
Slides en:
https://slides.com /joelalejandrovillarrealbertoldi /app-deliciosa-ember/
Repo GitHub del Backend:
https://github.com/joelalejandro/deliciosa-api
Repo GitHub de la Ember App:
https://github.com/marcemira/ember-deliciosa