SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
CÓMO HACER FRONT-ENDy
parecer bueno
@RTeranTo
GDG Córdoba
@GDGCordobaESP
salmorejoS O F T W A R E
Recarga de celulares en Cuba
I’m Rafa Terán
Ya sé html, css y js
y
¿ahora qué?
Gestor de paquetes para JS
Ejecutar comandos a través de npm
Diferencia entre desarrollo y producción
Instalar, eliminar y actualizar dependencias
Package.json
{
"dependencies": {
"angular2": "^2.0.0-beta.13",
"angular-cli": "latest"
},
"devDependencies": {
"gulp": "3.9.1"
},
"name": "Slides",
"description": "Cómo hacer front-end",
"scripts": {
"start": "ng serve"
}
}
Node Modules
Carpeta donde se encuentran todos los módulos de Node
2 carpetas: global y proyecto
npm install -g package@1.0.0
Instalar, eliminar y actualizar dependencias
npm uninstall package
npm update package
npm install package@1.0.0
npm install
npm install package@1.0.0 —-save-dev
npm install package@1.0.0 —-save
Diferencia entre desarrollo y producción
npm start
ng serve
Ejecutar comandos a través de npm
https://www.npmjs.com/
Paquetes
Automatizador de tareas
Plugins
gulpfile.js
Ejecutar automágicamente tareas
Ejecutar automágicamente tareas
Livereload Transpilar a ES6
Compilar Sass Concatenar
Modularizar Javascript Linter
Minificar Optimizar imágenes
Gulpfile.js
var gulp = require('gulp'),
sass = require(‘gulp-sass’)
var buildSass = function(options) {
options = assign(defaultOptions, options);
return gulp.src(options.src)
.pipe(sass(options.sassOptions))
.on('error', options.onError)
.pipe(gulp.dest(options.dest));
}
gulp.task('sass', buildSass);
gulp.task('default', function() {
gulp.watch('./src/css/*.css', ['sass']);
});
Plugins
http://gulpjs.com/plugins/
Preprocesador de CSS
CSS con Super Poderes
CSS con Super Poderes
Nesting Referencias parentales
Variables Funciones (mixins)
Imports Operadores Herencia
Variables
$font-stack: Helvetica, sans-serif;
$primary-color: #333;
body {
font: 100% $font-stack;
color: $primary-color;
}
body {
font: 100% Helvetica, sans-serif;
color: #333;
}
Nesting
nav {
ul {
margin: 0;
padding: 0;
list-style: none;
li {
display: inline-block;
}
}
}
nav ul {
margin: 0;
padding: 0;
list-style: none;
}
nav li {
display: inline-block;
}
Funciones (mixins)
@mixin respond($media) {
@if $media == tablet {
@media only screen and ( max-width: $tablet + px ) {
@content;
}
}
@else if $media == mobile {
@media only screen and ( max-width: $mobile + px ) {
@content;
}
}
}
button {
@include respond(mobile) {
width: 100%;
}
@include respond(tablet) {
width: 580px;
}
}
Ref. parentales
nav {
ul {
margin: 0;
padding: 0;
background-color: black;
}
.container &.open {
background-color: white;
}
}
nav ul {
margin: 0;
padding: 0;
background-color: black;
}
.container nav.open {
background-color: white;
}
Imports
// _reset.scss
html,
body,
ul,
ol {
margin: 0;
padding: 0;
}
// base.scss
@import 'reset';
body {
font: 100% Helvetica, sans-serif;
background-color: #efefef;
}
Operadores
article[role="main"] {
float: left;
width: 600px / 960px * 100%;
}
article[role="main"] {
float: left;
width: 62.5%;
}
Herencia
.message {
border: 1px solid #ccc;
padding: 10px;
color: #333;
}
.success {
@extend .message;
border-color: green;
}
.error {
@extend .message;
border-color: red;
}
.message, .success, .error, .warning {
border: 1px solid #cccccc;
padding: 10px;
color: #333;
}
.success {
border-color: green;
}
.error {
border-color: red;
}
Transformar CSS con plugins de JavaScript
Plugins
Compatible con preprocesadores (Sass)
Funciona con un automatizador de tareas (Gulp)
No es ni pre ni postprocesador, pero podría serlo
Autoprefixer
.flex {
display: flex;
}
.flex {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
}
autoprefixer
PostCSS Modules
/* styles.css */
:global .page {
padding: 20px;
}
.title {
composes: title from "./mixins.css";
color: green;
}
/* mixins.css */
.title {
color: black;
font-size: 40px;
}
.page {
padding: 20px;
}
._title_116zl_1 {
color: black;
font-size: 40px;
}
._title_xkpkl_5 {
color: green;
}
Selectores automágicamente aislados
postcss-modules
PostCSS Sorting
p {
display: flex;
position: relative;
}
p {
position: relative;
display: flex;
}
Ordenar reglas CSS a tu gusto
postcss-sorting
{"sort-order": ["position", "display"]}
Container Queries Prolyfill
.element:container(width >= 100px) {
/* Styles for .element if its container is at least 100px wide */
}
.element:container(height > 100px < 200px) {
/* Styles for .element if its container is between 100px and 200px high */
}
.element:container(text-align = right) {
/* Styles for .element if its container has a right text-align */
}
Medias queries respecto al contenedor del elemento
cq-polyfill
PostCSS Andalusian Stylesheets
.foo {
border-radius: 3px;
background: #fff;
width: 300px;
height: 200px;
float: left;
top: 2rem;
bottom: 20px;
left: 100px;
right: 100px;
letter-spacing: -1px;
cursor: pointer !important;
text-transform: uppercase;
margin: 100px 50px;
animation: musho 5s;
}
postcss-andalusian-stylesheets
.foo {
reondeao: 3mijillah;
detrah: #fff;
ansho: 300mijillah;
largo: 200mijillah;
agarrao: isquierdah;
en-to-lo-arto: 2peasoh;
por-lo-bahini: 20mijillah;
isquierdah: 100mijillah;
deresha: 100mijillah;
huecoh: -1mijillah;
fleshita: manito !arfavó;
lah-letrah: en-grande;
separao: 100mijillah 50mijillah;
jorgorio: musho 5s;
}
Plugins
https://github.com/postcss/postcss#plugins
Herramienta para crear scaffolding
Miles de generadores
Crear tu propio generador
Crear nuevas secciones de un proyecto (controladores, test, etc)
Empezar rápido con un proyecto
Empezar rápido con un proyecto
yo generador-angular myPortfolio
npm install -g generator-angular
npm install -g yo
Crear nuevas secciones de un proyecto
yo angular:directive myDirective
yo angular:controller projects
yo angular:route myroute —uri=project/:id
yo angular:filter myFilter
Miles de generadores
http://yeoman.io/generators/
Crear tu propio generador
http://yeoman.io/authoring/
Preguntas
Muchas gracias

Más contenido relacionado

La actualidad más candente

Presentacion Javascript
Presentacion JavascriptPresentacion Javascript
Presentacion JavascriptNESTIRRI
 
Conceptos BáSicos Curso Online
Conceptos BáSicos                 Curso OnlineConceptos BáSicos                 Curso Online
Conceptos BáSicos Curso OnlineEdgar
 
Comandos basicos para la programación en javascript
Comandos basicos para la programación en javascriptComandos basicos para la programación en javascript
Comandos basicos para la programación en javascriptMicco5W
 
Magento 2 Módulo Low Stock Notifier
Magento 2 Módulo Low Stock NotifierMagento 2 Módulo Low Stock Notifier
Magento 2 Módulo Low Stock Notifiergalan83
 
Vue + Typescript: Decorators vs. Extend, Fight!
Vue + Typescript: Decorators vs. Extend, Fight!Vue + Typescript: Decorators vs. Extend, Fight!
Vue + Typescript: Decorators vs. Extend, Fight!Sara Lissette L. Ibáñez
 
Micro vs Nano (servicios)
Micro vs Nano (servicios)Micro vs Nano (servicios)
Micro vs Nano (servicios)Pedro J. Molina
 
Encuentro GeneXus 2003 Migracion Win Web
Encuentro GeneXus 2003 Migracion Win WebEncuentro GeneXus 2003 Migracion Win Web
Encuentro GeneXus 2003 Migracion Win WebEnrique Almeida
 
Presentación Mambo
Presentación MamboPresentación Mambo
Presentación Mamboguest7fe1d51
 
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Rodolfo Finochietti
 
Opensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackOpensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackPedro J. Molina
 
Desarrollo de página web dinámica
Desarrollo de página web dinámicaDesarrollo de página web dinámica
Desarrollo de página web dinámicaJuan Carlos Medrano
 
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...Iván López Martín
 
¿Por qué usar frameworks javascript?
¿Por qué usar frameworks javascript?¿Por qué usar frameworks javascript?
¿Por qué usar frameworks javascript?aitorgr
 
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011Fátima Casaú Pérez
 
Infraestructura como código
Infraestructura como códigoInfraestructura como código
Infraestructura como códigoJuanje Ojeda
 

La actualidad más candente (20)

JQuery Mvc
JQuery   MvcJQuery   Mvc
JQuery Mvc
 
Presentacion Javascript
Presentacion JavascriptPresentacion Javascript
Presentacion Javascript
 
Conceptos BáSicos Curso Online
Conceptos BáSicos                 Curso OnlineConceptos BáSicos                 Curso Online
Conceptos BáSicos Curso Online
 
In 9
In 9In 9
In 9
 
Comandos basicos para la programación en javascript
Comandos basicos para la programación en javascriptComandos basicos para la programación en javascript
Comandos basicos para la programación en javascript
 
Magento 2 Módulo Low Stock Notifier
Magento 2 Módulo Low Stock NotifierMagento 2 Módulo Low Stock Notifier
Magento 2 Módulo Low Stock Notifier
 
Javascript y Jquery
Javascript y JqueryJavascript y Jquery
Javascript y Jquery
 
2.1
2.12.1
2.1
 
Vue + Typescript: Decorators vs. Extend, Fight!
Vue + Typescript: Decorators vs. Extend, Fight!Vue + Typescript: Decorators vs. Extend, Fight!
Vue + Typescript: Decorators vs. Extend, Fight!
 
Micro vs Nano (servicios)
Micro vs Nano (servicios)Micro vs Nano (servicios)
Micro vs Nano (servicios)
 
Encuentro GeneXus 2003 Migracion Win Web
Encuentro GeneXus 2003 Migracion Win WebEncuentro GeneXus 2003 Migracion Win Web
Encuentro GeneXus 2003 Migracion Win Web
 
Presentación Mambo
Presentación MamboPresentación Mambo
Presentación Mambo
 
Redes
RedesRedes
Redes
 
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4
 
Opensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackOpensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN Stack
 
Desarrollo de página web dinámica
Desarrollo de página web dinámicaDesarrollo de página web dinámica
Desarrollo de página web dinámica
 
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...
 
¿Por qué usar frameworks javascript?
¿Por qué usar frameworks javascript?¿Por qué usar frameworks javascript?
¿Por qué usar frameworks javascript?
 
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
Taller Testing en Grails con Grails y Geb (WebDriver) - Springio I/O 2011
 
Infraestructura como código
Infraestructura como códigoInfraestructura como código
Infraestructura como código
 

Destacado (17)

Charla taller Ionic + AngularJS Sysmana 2015
Charla taller Ionic + AngularJS Sysmana 2015Charla taller Ionic + AngularJS Sysmana 2015
Charla taller Ionic + AngularJS Sysmana 2015
 
Levski&botev
Levski&botevLevski&botev
Levski&botev
 
Norma cs электротехника
Norma cs электротехникаNorma cs электротехника
Norma cs электротехника
 
What is a journal
What is a journalWhat is a journal
What is a journal
 
GCE2Certificate
GCE2CertificateGCE2Certificate
GCE2Certificate
 
عرض الرسالة
عرض الرسالةعرض الرسالة
عرض الرسالة
 
Plural of nouns
Plural of nounsPlural of nouns
Plural of nouns
 
Suma3
Suma3Suma3
Suma3
 
Festival de las Almas 2011
Festival de las Almas 2011Festival de las Almas 2011
Festival de las Almas 2011
 
Bone physiology
Bone physiologyBone physiology
Bone physiology
 
Gőgös Gúnár Gedeon
Gőgös Gúnár GedeonGőgös Gúnár Gedeon
Gőgös Gúnár Gedeon
 
Wolontariat
WolontariatWolontariat
Wolontariat
 
Rundown
RundownRundown
Rundown
 
Resume
ResumeResume
Resume
 
What is a journal
What is a journalWhat is a journal
What is a journal
 
Pdf almas
Pdf almasPdf almas
Pdf almas
 
Mazda3
Mazda3Mazda3
Mazda3
 

Similar a Cómo hacer front-end

Microsoft Expression Web
Microsoft Expression WebMicrosoft Expression Web
Microsoft Expression Webdaniel ridan
 
Breve introducción práctica al DevOps - (es) 2021_03_18
Breve introducción práctica al DevOps -  (es) 2021_03_18Breve introducción práctica al DevOps -  (es) 2021_03_18
Breve introducción práctica al DevOps - (es) 2021_03_18Young Suk Ahn Park
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Facescok12v
 
Tecnologías para microservicios
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microserviciosPedro J. Molina
 
Javascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryJavascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryDavid Arango
 
Tutorial Java Script
Tutorial Java ScriptTutorial Java Script
Tutorial Java Scriptsemuvi
 
Instalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuInstalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuDavid Vevelas
 
Gulp js php sevilla 28 septiembre 2016
Gulp js   php sevilla 28 septiembre 2016Gulp js   php sevilla 28 septiembre 2016
Gulp js php sevilla 28 septiembre 2016Agencia INNN
 
Node.js - un poco de informacion.
Node.js - un poco de informacion.Node.js - un poco de informacion.
Node.js - un poco de informacion.Luis Toscano
 
Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Fernando Petrola
 
Node js Alt.net Hispano
Node js Alt.net HispanoNode js Alt.net Hispano
Node js Alt.net Hispanohdgarcia
 

Similar a Cómo hacer front-end (20)

Microsoft Expression Web
Microsoft Expression WebMicrosoft Expression Web
Microsoft Expression Web
 
Gwt III - Avanzado
Gwt III - AvanzadoGwt III - Avanzado
Gwt III - Avanzado
 
Breve introducción práctica al DevOps - (es) 2021_03_18
Breve introducción práctica al DevOps -  (es) 2021_03_18Breve introducción práctica al DevOps -  (es) 2021_03_18
Breve introducción práctica al DevOps - (es) 2021_03_18
 
Javascript
JavascriptJavascript
Javascript
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
 
Webpack desde cero
Webpack desde ceroWebpack desde cero
Webpack desde cero
 
Guía JavaScript
Guía JavaScriptGuía JavaScript
Guía JavaScript
 
Introduccion a React
Introduccion a ReactIntroduccion a React
Introduccion a React
 
Laboratorio 03
Laboratorio 03Laboratorio 03
Laboratorio 03
 
Tecnologías para microservicios
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microservicios
 
Javascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryJavascript en proyectos reales: jQuery
Javascript en proyectos reales: jQuery
 
Semana 2 Configuración entorno de desarrollo
Semana 2   Configuración entorno de desarrolloSemana 2   Configuración entorno de desarrollo
Semana 2 Configuración entorno de desarrollo
 
Tutorial Java Script
Tutorial Java ScriptTutorial Java Script
Tutorial Java Script
 
La magia de Flutter
La magia de FlutterLa magia de Flutter
La magia de Flutter
 
Gwt II - trabajando con gwt
Gwt II - trabajando con gwtGwt II - trabajando con gwt
Gwt II - trabajando con gwt
 
Instalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntuInstalacion de Postrgre sql en ubuntu
Instalacion de Postrgre sql en ubuntu
 
Gulp js php sevilla 28 septiembre 2016
Gulp js   php sevilla 28 septiembre 2016Gulp js   php sevilla 28 septiembre 2016
Gulp js php sevilla 28 septiembre 2016
 
Node.js - un poco de informacion.
Node.js - un poco de informacion.Node.js - un poco de informacion.
Node.js - un poco de informacion.
 
Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014
 
Node js Alt.net Hispano
Node js Alt.net HispanoNode js Alt.net Hispano
Node js Alt.net Hispano
 

Cómo hacer front-end