webpack module bundler | cloudcourse.io

67
WEBPACK MODULE BUNDLER CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Upload: thapwaris-chinsirirathkul

Post on 13-Apr-2017

4.559 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Webpack Module Bundler | cloudcourse.io

WEBPACKMODULE BUNDLER

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 2: Webpack Module Bundler | cloudcourse.io

ABOUT SPEAKER

Thapwaris ChinsirirathkulInfopreneur

Graphic DesignerFrontend DeveloperCEO and Founder CLOUDCOURSE.IO

[email protected]

facebook.com/xbyrztf

Page 3: Webpack Module Bundler | cloudcourse.io

What’s Webpack?

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 4: Webpack Module Bundler | cloudcourse.io

Webpack น้ันเปนเคร่ืองมือที่เอาไวแปลง JavaScript Modulesใหอยูในรูปแบบที่สามารถนําไปใชบนเว็บทั่วไปได

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 5: Webpack Module Bundler | cloudcourse.io

JavaScript Modules?เชน CommonJS, AMD หรือแมแต ES6(ES2015) Module

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 6: Webpack Module Bundler | cloudcourse.io

จุดเดน

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 7: Webpack Module Bundler | cloudcourse.io

เร็ว !!Webpack ใช async I/O รวมกับการทํา cache หลายชั้น

ทําใหขั้นตอนในการ compile น้ันมีความเร็วสูงมาก

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 8: Webpack Module Bundler | cloudcourse.io

ครบถวน !!Webpack ถูกรวมไวดวยเคร่ืองมือตางๆมากมายสําหรับนักพัฒนาเว็บไซต

ทําใหประหยัดเวลาในการเตรียมเคร่ืองมือไปอยางมาก

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 9: Webpack Module Bundler | cloudcourse.io

แลวมันทาํอะไรไดบาง?

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 10: Webpack Module Bundler | cloudcourse.io

LOADERการเขียน ES6, JSX, TypeScript หรือ JavaScript Modules ตางๆ

สุดทายแลว เราก็ตองแปลงโคดเหลาน้ีใหกลับมาเปน JavaScript

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 11: Webpack Module Bundler | cloudcourse.io

LOADERซึ่งตัว Webpack เองก็ไดเตรียมเคร่ืองมือมาใหแลว

ผานสิ่งที่เรียกวา Loader

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 12: Webpack Module Bundler | cloudcourse.io

LOADERสรุป Loader ก็เหมือนกับ transform ของ Browserify น่ันเอง

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 13: Webpack Module Bundler | cloudcourse.io

LOADERซึ่งหนาที่หลักๆก็คือการแปลง Modules ตางๆใหเปนรูปแบบดั้งเดิมของมัน

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 14: Webpack Module Bundler | cloudcourse.io

DEV SERVERWebpack สามารถเปน web server สําหรับ dev ได

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 15: Webpack Module Bundler | cloudcourse.io

DEV SERVERซึ่งความสามารถของ Web Server ตัวน้ีก็ไมใชเลนๆ มันสามารถทําการ

รีเฟรชหนาจอเองไดเมื่อมีการแกไขขอมูลเหมือนกับ BrowserSync

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 16: Webpack Module Bundler | cloudcourse.io

DEV SERVERและการรีเฟรชก็ไมใชการรีเฟรชทั้งหนาเว็บเพจ แตเปนการ inject css เขาไป

เฉพาะจุดที่มีการแกไขและเรนเดอรแคจุดน้ันใหมอีกคร้ัง

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 17: Webpack Module Bundler | cloudcourse.io

DEV SERVERหรือสําหรับใครที่เขียน ReactJS ก็มีความสามารถเด็ดๆเชนมันจะเรนเดอรเฉพาะ component ที่มีการแกไขเทาน้ันและมันยังสามารถรักษา state เดิม

ที่มันเปนอยูไวไดอีกดวย

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 18: Webpack Module Bundler | cloudcourse.io

CODE SPLITTERบางคร้ังการรวม Modules หลายๆตัวเขาดวยกันมันอาจ

ทําใหไฟลที่ถูก Compile ออกมาน้ันมีขนาดใหญมากซึ่งอาจจะไมเปนผลดีตอเซิรฟเวอรของเรา

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 19: Webpack Module Bundler | cloudcourse.io

CODE SPLITTERมันจึงมีหนาที่แกปญหาตรงจุดน้ีโดยการ แบงไฟลออกเปนไฟลเล็กๆตามการใชงานได โดยที่เราสามารถสั่งใหจัดการในสวนน้ีดวยตัวเอง

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 20: Webpack Module Bundler | cloudcourse.io

CODE SPLITTERเชน ในสวนหลักเปน Core จําเปนตองใชงานทุกที่ก็สามารถแยกไวเปนไฟลหลักได และไฟลยอยอื่นๆที่อาจจะไมไดใชทุกที่ก็สามารถแยกออกมา

เปนไฟลยอยๆได ลักษณะการทํางานอาจจะคลายกับ RequireJS

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 21: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

WEBPACK

Page 22: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

WEBPACK INSTALLATION

Page 23: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

npm install webpack -g

Page 24: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 25: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 26: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

HELLO, WEBPACK

Page 27: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 28: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

webpack <entry> <output>

Page 29: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 30: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 31: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 32: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 33: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

WEBPACK LOADER

Page 34: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

ตัวอยางการติดต้ัง loader สําหรับการจัดการ css

Page 35: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

ผลการทํางานหลังจากติดต้ังตัว loader

Page 36: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 37: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 38: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

รันคําสั่ง webpack ./entry.js bundle.js

Page 39: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 40: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 41: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

WEBPACK CONFIGURATION

Page 42: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 43: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

ตอนนี้เราสามารถรันแคคําสั่ง “webpack” ไดแลว

Page 44: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

หนาตางแสดงผลเม่ือ compile สําเร็จ

Page 45: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

คําสั่งสําหรับเปลี่ยนรูปแบบของผลการ compile ดวย webpack –progress --colors

Page 46: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

ผลการทํางานจะเห็นวา command window มีการแยกสีรายงานการ compile

Page 47: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

เพ่ิม --watch หลัง webpack เพ่ือทําการตรวจจับไฟลวามีการเปลี่ยนแปลงหรือไม

ถามีการเปลี่ยนแปลงก็จะทําการ compile ใหทันที

Page 48: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 49: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

WEBPACK DEV SERVER

Page 50: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

รันคําสั่ง npm install webpack-dev-server –g เพ่ือทําการติดต้ังตัว Dev Server

Page 51: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

จอแสดงผลหลังจากที่ติดต้ัง webpack dev server เสร็จ

Page 52: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

รันคําสั่ง webpack-dev-server –progress –colors เพ่ือสั่งใหตัว server ทํางาน

Page 53: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 54: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 55: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

WEBPACK HOT DEV SERVER

Page 56: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

รันคําสั่ง npm init เพ่ือสรางโปรเจคไฟล package.json

Page 57: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

กรอกรายละเอียดและตอบ yes ในขั้นตอนสุดทายและกด enter

Page 58: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

รันคําสั่ง webpack --save-dev เพ่ือติดต้ัง webpack ใน project

Page 59: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

รันคําสั่ง webpack-dev-server --save-dev เพ่ือติดต้ัง dev server ใน project

Page 60: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

จอแสดงผลเม่ือติดต้ัง dev server เสร็จแลว

Page 61: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 62: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 63: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 64: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

รันคําสั่ง webpack-dev-server –content-base --hot เพ่ือสั่งใหทํางานแบบ hot load

Page 65: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

Page 66: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

รันคําสั่ง npm run dev เพ่ือสั่งใหทํางานแบบ hot load

Page 67: Webpack Module Bundler | cloudcourse.io

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

ทดสอบการทํางานโดยการเปลี่ยน value ของ css จากนั้น webpack จะทําการแสดงผลดวยการ inject css ทันที