In aceasta saptamana, Facebook a fuzionat o cerere de extragere a monstrului in React, care a inlocuit procesul sau de construire existent cu unul bazat pe pachet, determinand mai multi oameni sa intrebe „de ce ati ales Pachet in pachet peste pachet web”?
Ceea ce este o intrebare complet rezonabila. Webpack este una dintre cele mai mari povesti de succes ale comunitatii JavaScript moderne, cu milioane de descarcari in fiecare luna care alimenteaza zeci de mii de site-uri si aplicatii. Are un ecosistem mare, zeci de contribuabili si – neobisnuit pentru un proiect comunitar open source – un sprijin financiar semnificativ.
Prin comparatie, Rollup este o mina. Dar React nu este singur – Vue, Ember, Preact, D3, Three.js, Moment si alte zeci de biblioteci cunoscute folosesc si Rollup. Deci ce se intampla? De ce nu putem avea un singur pachet de module JavaScript pe care toata lumea este de acord?
webpack a fost lansat in 2012 de Tobias Koppers pentru a rezolva o problema dificila pe care instrumentele existente nu o abordau: crearea de aplicatii complexe cu o singura pagina (SPA-uri). Doua caracteristici, in special, au schimbat totul:
- Impartirea codului face posibila divizarea aplicatiei dvs. in bucati gestionabile care pot fi incarcate la cerere, ceea ce inseamna ca utilizatorii dvs. primesc un site interactiv mult mai rapid decat daca ar fi trebuit sa astepte descarcarea si analizarea intregii aplicatii. Ai putea face acest lucru manual, dar, ei bine … noroc.
- Activele statice, cum ar fi imaginile si CSS, pot fi importate in aplicatia dvs. si tratate ca doar un alt nod din graficul de dependenta. Nu mai plasati cu atentie fisierele in folderele si scripturile potrivite pentru a adauga hash-uri la adresele URL ale fisierelor – webpack se poate ocupa de dvs.
Setul a fost creat dintr-un motiv diferit: pentru a construi distribuibile plate de biblioteci JavaScript cat mai eficient posibil, profitand de designul ingenios al modulelor ES2015. Alti pachete de module – pachet web inclus – functioneaza prin impachetarea fiecarui modul intr-o functie, plasarea lor intr-un pachet cu o implementare prietenoasa cu browserul de require si evaluarea lor una cate una. Este minunat daca aveti nevoie de lucruri precum incarcarea la cerere, dar in caz contrar este o risipa si se inrautateste daca aveti o multime de module.
Modulele ES2015 permit o abordare diferita, pe care Rollup o foloseste. Tot codul dvs.
incesto subtitulado en español zofilia xxx
porno gay en castellano ver pelis eroticas
mamada gay maduras tocandose
mamadas a dos bocas abuela caliente
nicolette shea colegialas peludas
abuelas porno porno interactivo gratis
se follaron a mi mujer porno español de maduras
me follo a mi vecina se corre en el coño de su hija
maduras españolas amateur españolas follando en la playa
porno caca corridas anales
follando en el parque superculos
porno senegal videos porno para mujeres gratis
maduras impresionantes le pilla pajeandose
coños maduros super maduras
tetas amateur joven folla por dinero
porno tv inazuma eleven xxx
madura cabalgando milf camara oculta
peliculas porno de viejas monica hoyos porno
escenas porno en cine convencional viejas cachondas
porno gay guarro incesto en espanol
este plasat in acelasi loc si se evalueaza dintr-o singura data, rezultand un cod mai usor si mai simplu, care porneste mai repede. Il puteti vedea cu ajutorul REPL-ului cumulativ.
Dar exista un compromis: impartirea codului este o problema mult mai para si, in momentul redactarii, pachetul nu il accepta. In mod similar, Rollup nu face inlocuirea modulului fierbinte (HMR). Si poate cel mai mare punct de durere pentru persoanele care vin la pachet – in timp ce gestioneaza majoritatea fisierelor CommonJS (prin intermediul unui plugin), unele lucruri nu se traduc in ES2015, in timp ce webpack-ul gestioneaza tot ceea ce aruncati cu aplomb.
Pana acum, speram ca este clar de ce ambele instrumente coexista si se sustin reciproc – ele au scopuri diferite. Tl; dr este acesta:
Utilizati pachetul web pentru aplicatii si pachetul pentru biblioteci
Aceasta nu este o regula dificila si rapida – o multime de site-uri si aplicatii sunt create cu pachet, iar multe biblioteci sunt construite cu webpack. Dar este o regula buna.
Daca aveti nevoie de divizarea codului, sau aveti o multime de active statice sau creati ceva cu o multime de dependente CommonJS, Webpack este o alegere mai buna. Daca baza dvs. de cod este modulele ES2015 si faceti ceva pentru a fi folosit de alte persoane, probabil ca doriti sa faceti pachet.
Pentru o lunga perioada de timp, utilizarea bibliotecilor JavaScript a fost un pic cam ciudat, deoarece dvs. si autorul bibliotecii a trebuit sa fiti de acord asupra unui sistem de module. Daca ati utiliza Browserify, dar ea a preferat AMD, ar trebui sa faceti lucruri de banda impreuna inainte de a putea construi ceva. Formatul Universal Module Definition (UMD) a rezolvat acest lucru, dar pentru ca nu a fost pus in aplicare nicaieri nu ati stiut niciodata cu exactitate ce veti obtine.
ES2015 schimba toate acestea, deoarece importul si exportul fac parte din limba. In viitor, nu va exista nicio ambiguitate, iar lucrurile vor functiona mult mai perfect. Din pacate, deoarece browserele (in mare parte) si Node nu accepta inca importul si exportul, trebuie totusi sa livram fisiere UMD (sau CommonJS, daca creati ceva numai Node).
Prin adaugarea unei „module”: intrarea „dist / my-library.es.js” in fisierul package.json al bibliotecii dvs. (alias pkg.module), este posibil sa serviti UMD si ES2015 in acelasi timp, chiar acum. Acest lucru este important, deoarece Webpack si Rollup pot utiliza ambele pkg.module pentru a genera cel mai eficient cod posibil – in unele cazuri, pot chiar sa scuture ambele parti nefolosite ale bibliotecii.
Aflati mai multe despre pkg.module pe wiki Rollup .
Speram ca acest articol face relatia dintre cele doua proiecte un pic mai clara. Daca mai aveti intrebari, gasiti-ne pe Twitter la rich_harris / rollupjs si thelarkinn. Pachet fericit!








