Introducción a
Ivan Nieto
Ivan Nieto
Twitter: @IvanNietoS
github: ivannieto

- Pasión por la tecnología web
- Finalizando estudios CS DAM
- En prácticas @ Initios Desarrollos
- Destrozador de cacharros :D

Disclaimer
- Charla introductoria.
- No trato de enseñar, trato de compartir.
- Si te aburres, !colabora!
:D
Wat
The
Webpack?

Webpack es...
Un empaquetador de módulos que nos permite organizar y optimizar nuestros proyectos web.



Proporciona la habilidad de transformar todas las dependencias y recursos, en datos legibles por el navegador.
- Nace en 2012
- Creador, Tobias Koppers
- Open Source
- Constante actualización
Módulos ES6
Un pequeño recordatorio
Se definen como el método de encapsulación de un trozo de código en una unidad reusable.
ES6 proporciona un sistema de importación y exportación de módulos parecido al definido por lenguajes como Python o Ruby
Las funciones y variables del módulo no son visibles a menos que nosotros las exportemos.
De este modo, hacemos accesibles tan sólo las partes a las que necesiten acceder otras partes de nuestra aplicación.
Sintaxis
// ES6 nos proporciona varias formas de exportar e importar módulos
// Exportaciones nominales
export let nombre = 'Juan';
export let edad = 23;
// -------------------------------------------
// Exportación de listas de módulos
function numAleatorio() {
return Math.random();
}
function sum(a, b) {
return a + b;
}
export { numAleatorio, sum }
// --------------------------------------------
function cuadrado(x) {
return x * x;
}
module.exports = {
cuadrado: cuadrado
};
...
var cuadrado = require('cuadrado').cuadrado;
console.log(cuadrado(9));
// -------------------------------------------
// ES6
// Exportando valores únicos
// 'miFuncion.js'
export default function () { ... };
...
import miFuncion from 'miFuncion';
miFuncion();
// ------------------------------------------
// Exportando valores únicos (II)
function sumaDos(a, b) {
return a + b;
}
function sumaTres(a, b, c) {
return a + b + c;
}
let sumas = {
sumaDos,
sumTres
};
export default sumas;
/**
* Imports
*/
import 'componente';
import { sumaDos, sumaTres } from 'math/suma';
import * as util from 'math/suma';
Task Runners y Module Bundlers
Un Task Runner concatena y ejecuta acciones sobre los recursos.
(Gulp, Grunt, Brocolli, Cake... )
Un Empacador de Módulos, pone todo tu código y sus dependencias en un sólo archivo*
(Browserify, RequireJS, Webpack...)


















STAHP!


Es compatible!
Dependencias

Módulos

Grafo de
Dependencias
Describe cómo los módulos
se relacionan unos entre otros
Soporta todas las especificaciones de JS modular, ES6, AMD y CommonJS
Posee un rico ecosistema de
características ya incluidas, y plugins para procesar recursos
https://webpack.js.org/configuration/plugins/
Webpack carga los recursos estáticos como nodos en el gráfico de dependencias
HOT MODULE REPLACEMENT
Permite solucionar la pérdida del estado de la aplicación, cuando cargamos nuevos módulos o archivos sin tener que recargar.
Webpack2 trae consigo varias novedades
...
IMPORTS DINÁMICOS
El PayPerView de Webpack.
Solicita módulos a demanda en tiempo de ejecución.
function onClick() {
import("./module")
.then(module => {
return module.default;
}).catch(err => {
console.log("Carga fallida");
});
};
DIVISIÓN DE CÓDIGO
(Code Splitting)

TREE SHAKING
Durante la generación del grafo de dependencias, Webpack detecta y desecha el código no utilizado.
SOPORTE ES6 DE FORMA NATIVA
Sin transformar a CommonJS
Novedades en la sintaxis del archivo de configuración
Mejoras en los plugins integrados
y... ya vale.
A CONFIGURAR
Requisitos:
yarn o npm
editor de código
git
git clone https://github.com/JavaScriptVigo/webpack-intro-jsvigo
cd webpack2-intro/proyecto-base
yarn init -y
...coding time...
Enlaces de utilidad:
- https://webpack.js.org/configuration/
- https://github.com/jantimon/html-webpack-plugin
- https://github.com/webpack-contrib/extract-text-webpack-plugin
- https://github.com/TheLarkInn/artsy-webpack-tour
- https://github.com/th0r/webpack-bundle-analyzer
- https://webpack.js.org/configuration/dev-server
- https://webpack.js.org/configuration/devtool
- https://github.com/webpack/webpack/tree/master/examples/source-map
- http://webpack.github.io/analyse

Preguntas, respuestas y cosas.
Introducción a Webpack2
By Ivan Nieto
Introducción a Webpack2
- 504