SlideShare a Scribd company logo
1 of 16
Download to read offline
JAK TO (NE)ZABALIT 

S WEBPACKEM
@JIRIPOKORNY
SKRZ.CZ
CO JE
WEBPACK?
K ČEMU SLOUŽÍ WEBPACK?
▸ distribuce Javascriptových aplikací se stala
obtížnou
▸ Gulp/Grunt neumí vytvářet balíky (bundles)
▸ module bundlery: Webpack (Browserify, Rollup…)
PROČ SI ZVOLIT WEBPACK?
▸ hot module replacement = lepší livereload
▸ cachování
▸ chytrý code splitting
▸ tree shaking pro ES6
RYCHLOKURZ WEBPACKU
▸ entry point
▸ začátek bundle procesu
▸ obsahuje moduly (Javascripty, obrázky, fonty…)
▸ loadery = transformace modulů
▸ output bundle = konec procesu
▸ bundle rozdělujeme do chunků
CACHOVÁNÍ
PROČ CACHOVAT?
SKRZ.CZ NA „ ČESKÉM 3G"
Time Requests Bytes In
First view 18.447s 86 1,395 KB
Repeated
view
3.887s 18 110 KB
CACHOVÁNÍ
▸ „nekonečná” platnost cache
▸ cache potřebujeme invalidovat → hashování
▸ ve Webpacku poměrně složitý problém,

připravte se na dlouhé večery s Github issues
CACHOVÁNÍ KROK ZA KROKEM
▸ oddělit JS a CSS entry pointy
▸ odstranit nepotřebné závislosti z JS

(pozor na file-loader)
▸ zapnout hashování – pozor na zvolenou metodiku!
output: {
filename: "[name].[chunkhash].js",
chunkFilename: "[name].[chunkhash].js"
}
▸ vytvořit „asset manifest”
▸ pozor na HTML cache, e-maily apod.
CODE
SPLITTING
PROČ CODE SPLITTING?
▸ chceme zrychlit first render time
▸ těžíme z cachování → invalidujeme jen část kódu
CODE SPLITTING – KDE ZAČÍT?
1. Vytvořit Webpack stats

webpack —profile —json > stats.json
2. Analyzovat

(Webpack Visualiser)
CODE SPLITTING
▸ split pointy
▸ rozdělují kód na chunky
▸ Webpack statickou analýzou oddělí moduly
definované ve split pointu
▸ v React.js se nabízí code splitting podle routes
▸ oddělení knihoven a aplikace
WEBPACK VS. GRUNT/GULP
▸ není to buď a nebo → možná integrace
(webpack-stream)
▸ Webpack řeší běžné úlohy out of the box, méně
„boilerplate” kódu
▸ všechno je modul, větší kontrola nad buildem

(srovnej Webpack gulp-responsive vs. responsive-
loader)
KAM DÁL?
▸ http://survivejs.com/webpack/introduction/
▸ https://presentations.survivejs.com/advanced-webpack
▸ https://blog.madewithlove.be/post/webpack-your-bags/
▸ https://medium.com/@okonetchnikov/long-term-caching-
of-static-assets-with-webpack-1ecb139adb95
▸ https://webpack.github.io/docs/list-of-loaders.html
DĚKUJI ZA POZORNOST
@JiriPokorny

More Related Content

What's hot

WordPress - základy bezpečnosti
WordPress - základy bezpečnostiWordPress - základy bezpečnosti
WordPress - základy bezpečnostiVladimír Smitka
 
Jelastic & Red Hat OpenShift - app deployment
Jelastic & Red Hat OpenShift - app deploymentJelastic & Red Hat OpenShift - app deployment
Jelastic & Red Hat OpenShift - app deploymentVaclav Chalupa
 
WP výkon a jeho profilování
WP výkon a jeho profilováníWP výkon a jeho profilování
WP výkon a jeho profilováníVladimír Smitka
 
Základní nástroje pro automatizaci
Základní nástroje pro automatizaciZákladní nástroje pro automatizaci
Základní nástroje pro automatizaciTomáš Musiol
 
Bezpečnost WordPress pro začátečníky
Bezpečnost WordPress pro začátečníkyBezpečnost WordPress pro začátečníky
Bezpečnost WordPress pro začátečníkyVladimír Smitka
 
Jak si (ne)nechat hacknout Wordpress stránky
Jak si (ne)nechat hacknout Wordpress stránkyJak si (ne)nechat hacknout Wordpress stránky
Jak si (ne)nechat hacknout Wordpress stránkyVladimír Smitka
 
Bezpečnost WP, tipy pro každého - wordCamp Praha 2015
Bezpečnost WP, tipy pro každého - wordCamp Praha 2015Bezpečnost WP, tipy pro každého - wordCamp Praha 2015
Bezpečnost WP, tipy pro každého - wordCamp Praha 2015Vladimír Smitka
 

What's hot (9)

WordPress - základy bezpečnosti
WordPress - základy bezpečnostiWordPress - základy bezpečnosti
WordPress - základy bezpečnosti
 
Jelastic & Red Hat OpenShift - app deployment
Jelastic & Red Hat OpenShift - app deploymentJelastic & Red Hat OpenShift - app deployment
Jelastic & Red Hat OpenShift - app deployment
 
WP výkon a jeho profilování
WP výkon a jeho profilováníWP výkon a jeho profilování
WP výkon a jeho profilování
 
Základní nástroje pro automatizaci
Základní nástroje pro automatizaciZákladní nástroje pro automatizaci
Základní nástroje pro automatizaci
 
Chromebooky
ChromebookyChromebooky
Chromebooky
 
Bezpečnost WordPress pro začátečníky
Bezpečnost WordPress pro začátečníkyBezpečnost WordPress pro začátečníky
Bezpečnost WordPress pro začátečníky
 
Jak si (ne)nechat hacknout Wordpress stránky
Jak si (ne)nechat hacknout Wordpress stránkyJak si (ne)nechat hacknout Wordpress stránky
Jak si (ne)nechat hacknout Wordpress stránky
 
Ops2 nginx
Ops2   nginxOps2   nginx
Ops2 nginx
 
Bezpečnost WP, tipy pro každého - wordCamp Praha 2015
Bezpečnost WP, tipy pro každého - wordCamp Praha 2015Bezpečnost WP, tipy pro každého - wordCamp Praha 2015
Bezpečnost WP, tipy pro každého - wordCamp Praha 2015
 

Jak to (ne)zabalit s Webpackem

  • 1. JAK TO (NE)ZABALIT 
 S WEBPACKEM @JIRIPOKORNY SKRZ.CZ
  • 3. K ČEMU SLOUŽÍ WEBPACK? ▸ distribuce Javascriptových aplikací se stala obtížnou ▸ Gulp/Grunt neumí vytvářet balíky (bundles) ▸ module bundlery: Webpack (Browserify, Rollup…)
  • 4. PROČ SI ZVOLIT WEBPACK? ▸ hot module replacement = lepší livereload ▸ cachování ▸ chytrý code splitting ▸ tree shaking pro ES6
  • 5. RYCHLOKURZ WEBPACKU ▸ entry point ▸ začátek bundle procesu ▸ obsahuje moduly (Javascripty, obrázky, fonty…) ▸ loadery = transformace modulů ▸ output bundle = konec procesu ▸ bundle rozdělujeme do chunků
  • 7. PROČ CACHOVAT? SKRZ.CZ NA „ ČESKÉM 3G" Time Requests Bytes In First view 18.447s 86 1,395 KB Repeated view 3.887s 18 110 KB
  • 8. CACHOVÁNÍ ▸ „nekonečná” platnost cache ▸ cache potřebujeme invalidovat → hashování ▸ ve Webpacku poměrně složitý problém,
 připravte se na dlouhé večery s Github issues
  • 9. CACHOVÁNÍ KROK ZA KROKEM ▸ oddělit JS a CSS entry pointy ▸ odstranit nepotřebné závislosti z JS
 (pozor na file-loader) ▸ zapnout hashování – pozor na zvolenou metodiku! output: { filename: "[name].[chunkhash].js", chunkFilename: "[name].[chunkhash].js" } ▸ vytvořit „asset manifest” ▸ pozor na HTML cache, e-maily apod.
  • 11. PROČ CODE SPLITTING? ▸ chceme zrychlit first render time ▸ těžíme z cachování → invalidujeme jen část kódu
  • 12. CODE SPLITTING – KDE ZAČÍT? 1. Vytvořit Webpack stats
 webpack —profile —json > stats.json 2. Analyzovat
 (Webpack Visualiser)
  • 13. CODE SPLITTING ▸ split pointy ▸ rozdělují kód na chunky ▸ Webpack statickou analýzou oddělí moduly definované ve split pointu ▸ v React.js se nabízí code splitting podle routes ▸ oddělení knihoven a aplikace
  • 14. WEBPACK VS. GRUNT/GULP ▸ není to buď a nebo → možná integrace (webpack-stream) ▸ Webpack řeší běžné úlohy out of the box, méně „boilerplate” kódu ▸ všechno je modul, větší kontrola nad buildem
 (srovnej Webpack gulp-responsive vs. responsive- loader)
  • 15. KAM DÁL? ▸ http://survivejs.com/webpack/introduction/ ▸ https://presentations.survivejs.com/advanced-webpack ▸ https://blog.madewithlove.be/post/webpack-your-bags/ ▸ https://medium.com/@okonetchnikov/long-term-caching- of-static-assets-with-webpack-1ecb139adb95 ▸ https://webpack.github.io/docs/list-of-loaders.html