SlideShare uma empresa Scribd logo
1 de 67
Baixar para ler offline
WEBPACK
MODULE BUNDLER
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
ABOUT SPEAKER
Thapwaris Chinsirirathkul
Infopreneur
Graphic Designer
Frontend Developer
CEO and Founder CLOUDCOURSE.IO
thapwaris@cloudcourse.io
facebook.com/xbyrztf
What’s Webpack?
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
Webpack นั้นเปนเครื่องมือที่เอาไวแปลง JavaScript Modules
ใหอยูในรูปแบบที่สามารถนําไปใชบนเว็บทั่วไปได
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
JavaScript Modules?
เชน CommonJS, AMD หรือแมแต ES6(ES2015) Module
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
จุดเดน
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
เร็ว !!
Webpack ใช async I/O รวมกับการทํา cache หลายชั้น
ทําใหขั้นตอนในการ compile นั้นมีความเร็วสูงมาก
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
ครบถวน !!
Webpack ถูกรวมไวดวยเครื่องมือตางๆมากมายสําหรับนักพัฒนาเว็บไซต
ทําใหประหยัดเวลาในการเตรียมเครื่องมือไปอยางมาก
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
แลวมันทําอะไรไดบาง?
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
LOADER
การเขียน ES6, JSX, TypeScript หรือ JavaScript Modules ตางๆ
สุดทายแลว เราก็ตองแปลงโคดเหลานี้ใหกลับมาเปน JavaScript
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
LOADER
ซึ่งตัว Webpack เองก็ไดเตรียมเครื่องมือมาใหแลว
ผานสิ่งที่เรียกวา Loader
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
LOADER
สรุป Loader ก็เหมือนกับ transform ของ Browserify นั่นเอง
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
LOADER
ซึ่งหนาที่หลักๆก็คือการแปลง Modules ตางๆใหเปนรูปแบบดั้งเดิมของมัน
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
DEV SERVER
Webpack สามารถเปน web server สําหรับ dev ได
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
DEV SERVER
ซึ่งความสามารถของ Web Server ตัวนี้ก็ไมใชเลนๆ มันสามารถทําการ
รีเฟรชหนาจอเองไดเมื่อมีการแกไขขอมูลเหมือนกับ BrowserSync
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
DEV SERVER
และการรีเฟรชก็ไมใชการรีเฟรชทั้งหนาเว็บเพจ แตเปนการ inject css เขาไป
เฉพาะจุดที่มีการแกไขและเรนเดอรแคจุดนั้นใหมอีกครั้ง
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
DEV SERVER
หรือสําหรับใครที่เขียน ReactJS ก็มีความสามารถเด็ดๆเชนมันจะเรนเดอร
เฉพาะ component ที่มีการแกไขเทานั้นและมันยังสามารถรักษา state เดิม
ที่มันเปนอยูไวไดอีกดวย
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CODE SPLITTER
บางครั้งการรวม Modules หลายๆตัวเขาดวยกันมันอาจ
ทําใหไฟลที่ถูก Compile ออกมานั้นมีขนาดใหญมาก
ซึ่งอาจจะไมเปนผลดีตอเซิรฟเวอรของเรา
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CODE SPLITTER
มันจึงมีหนาที่แกปญหาตรงจุดนี้โดยการ แบงไฟลออกเปนไฟลเล็กๆ
ตามการใชงานได โดยที่เราสามารถสั่งใหจัดการในสวนนี้ดวยตัวเอง
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CODE SPLITTER
เชน ในสวนหลักเปน Core จําเปนตองใชงานทุกที่ก็สามารถแยกไวเปน
ไฟลหลักได และไฟลยอยอื่นๆที่อาจจะไมไดใชทุกที่ก็สามารถแยกออกมา
เปนไฟลยอยๆได ลักษณะการทํางานอาจจะคลายกับ RequireJS
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
WEBPACK
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
WEBPACK INSTALLATION
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
npm install webpack -g
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
HELLO, WEBPACK
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
webpack <entry> <output>
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
WEBPACK LOADER
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
ตัวอยางการติดตั้ง loader สําหรับการจัดการ css
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
ผลการทํางานหลังจากติดตั้งตัว loader
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
รันคําสั่ง webpack ./entry.js bundle.js
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
WEBPACK CONFIGURATION
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
ตอนนี้เราสามารถรันแคคําสั่ง “webpack” ไดแลว
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
หนาตางแสดงผลเมื่อ compile สําเร็จ
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
คําสั่งสําหรับเปลี่ยนรูปแบบของผลการ compile ดวย webpack –progress --colors
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
ผลการทํางานจะเห็นวา command window มีการแยกสีรายงานการ compile
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
เพิ่ม --watch หลัง webpack เพื่อทําการตรวจจับไฟลวามีการเปลี่ยนแปลงหรือไม
ถามีการเปลี่ยนแปลงก็จะทําการ compile ใหทันที
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
WEBPACK DEV SERVER
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
รันคําสั่ง npm install webpack-dev-server –g เพื่อทําการติดตั้งตัว Dev Server
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
จอแสดงผลหลังจากที่ติดตั้ง webpack dev server เสร็จ
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
รันคําสั่ง webpack-dev-server –progress –colors เพื่อสั่งใหตัว server ทํางาน
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
WEBPACK HOT DEV SERVER
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
รันคําสั่ง npm init เพื่อสรางโปรเจคไฟล package.json
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
กรอกรายละเอียดและตอบ yes ในขั้นตอนสุดทายและกด enter
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
รันคําสั่ง webpack --save-dev เพื่อติดตั้ง webpack ใน project
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
รันคําสั่ง webpack-dev-server --save-dev เพื่อติดตั้ง dev server ใน project
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
จอแสดงผลเมื่อติดตั้ง dev server เสร็จแลว
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
รันคําสั่ง webpack-dev-server –content-base --hot เพื่อสั่งใหทํางานแบบ hot load
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
รันคําสั่ง npm run dev เพื่อสั่งใหทํางานแบบ hot load
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
ทดสอบการทํางานโดยการเปลี่ยน value ของ css จากนั้น webpack จะทําการแสดงผลดวยการ inject css ทันที

Mais conteúdo relacionado

Destaque

Playa de Venice (California)
Playa de Venice (California)Playa de Venice (California)
Playa de Venice (California)F. Ovies
 
[HeXathon] 발표자료 - 세모알
[HeXathon] 발표자료 - 세모알[HeXathon] 발표자료 - 세모알
[HeXathon] 발표자료 - 세모알NAVER D2
 
ZDG_CMO_Thanatopraxie_omslag_online_v2
ZDG_CMO_Thanatopraxie_omslag_online_v2ZDG_CMO_Thanatopraxie_omslag_online_v2
ZDG_CMO_Thanatopraxie_omslag_online_v2Hendrien van de Geest
 
從敏捷思考讀書會創業與人生
從敏捷思考讀書會創業與人生從敏捷思考讀書會創業與人生
從敏捷思考讀書會創業與人生MaoYang Chien
 
Baris dan deret aritmatika
Baris dan deret aritmatikaBaris dan deret aritmatika
Baris dan deret aritmatikaGabrielaworang
 
"Trivelle in Italia" di Carlo Martelli Portavoce MoVimento 5 Stelle Senato
"Trivelle in Italia" di Carlo Martelli Portavoce MoVimento 5 Stelle Senato"Trivelle in Italia" di Carlo Martelli Portavoce MoVimento 5 Stelle Senato
"Trivelle in Italia" di Carlo Martelli Portavoce MoVimento 5 Stelle Senatocesanomaderno5stelle
 
Catalogue xe toyota camry tại dailytoyotahadong.com.v
Catalogue xe toyota camry tại dailytoyotahadong.com.vCatalogue xe toyota camry tại dailytoyotahadong.com.v
Catalogue xe toyota camry tại dailytoyotahadong.com.vvagues bui
 
Facebook - The Path to Growth - Babelcamp 2014
Facebook - The Path to Growth - Babelcamp 2014Facebook - The Path to Growth - Babelcamp 2014
Facebook - The Path to Growth - Babelcamp 2014Peter Podolinsky
 
LinkedInspiratiesessie Zozijn
LinkedInspiratiesessie ZozijnLinkedInspiratiesessie Zozijn
LinkedInspiratiesessie ZozijnInnovata
 
Светлана Мухина "Metrics on agile projects"
Светлана Мухина "Metrics on agile projects"Светлана Мухина "Metrics on agile projects"
Светлана Мухина "Metrics on agile projects"Anna Shymchenko
 

Destaque (12)

Playa de Venice (California)
Playa de Venice (California)Playa de Venice (California)
Playa de Venice (California)
 
Прайс-лист на Smm услуги
Прайс-лист на Smm услугиПрайс-лист на Smm услуги
Прайс-лист на Smm услуги
 
[HeXathon] 발표자료 - 세모알
[HeXathon] 발표자료 - 세모알[HeXathon] 발표자료 - 세모알
[HeXathon] 발표자료 - 세모알
 
ZDG_CMO_Thanatopraxie_omslag_online_v2
ZDG_CMO_Thanatopraxie_omslag_online_v2ZDG_CMO_Thanatopraxie_omslag_online_v2
ZDG_CMO_Thanatopraxie_omslag_online_v2
 
從敏捷思考讀書會創業與人生
從敏捷思考讀書會創業與人生從敏捷思考讀書會創業與人生
從敏捷思考讀書會創業與人生
 
Baris dan deret aritmatika
Baris dan deret aritmatikaBaris dan deret aritmatika
Baris dan deret aritmatika
 
"Trivelle in Italia" di Carlo Martelli Portavoce MoVimento 5 Stelle Senato
"Trivelle in Italia" di Carlo Martelli Portavoce MoVimento 5 Stelle Senato"Trivelle in Italia" di Carlo Martelli Portavoce MoVimento 5 Stelle Senato
"Trivelle in Italia" di Carlo Martelli Portavoce MoVimento 5 Stelle Senato
 
Social Video
Social Video Social Video
Social Video
 
Catalogue xe toyota camry tại dailytoyotahadong.com.v
Catalogue xe toyota camry tại dailytoyotahadong.com.vCatalogue xe toyota camry tại dailytoyotahadong.com.v
Catalogue xe toyota camry tại dailytoyotahadong.com.v
 
Facebook - The Path to Growth - Babelcamp 2014
Facebook - The Path to Growth - Babelcamp 2014Facebook - The Path to Growth - Babelcamp 2014
Facebook - The Path to Growth - Babelcamp 2014
 
LinkedInspiratiesessie Zozijn
LinkedInspiratiesessie ZozijnLinkedInspiratiesessie Zozijn
LinkedInspiratiesessie Zozijn
 
Светлана Мухина "Metrics on agile projects"
Светлана Мухина "Metrics on agile projects"Светлана Мухина "Metrics on agile projects"
Светлана Мухина "Metrics on agile projects"
 

Webpack Module Bundler | cloudcourse.io