webpack module bundler | cloudcourse.io
TRANSCRIPT
WEBPACKMODULE BUNDLER
CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL
ABOUT SPEAKER
Thapwaris ChinsirirathkulInfopreneur
Graphic DesignerFrontend DeveloperCEO and Founder 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 SERVERWebpack สามารถเปน 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 ทันที