Webpack Module Bundler | cloudcourse.io

  • View
    4.550

  • Download
    1

  • Category

    Software

Preview:

Citation preview

WEBPACKMODULE BUNDLER

CLOUDCOURSE.IO | THAPWARIS CHINSIRIRATHKUL

ABOUT SPEAKER

Thapwaris ChinsirirathkulInfopreneur

Graphic DesignerFrontend DeveloperCEO 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 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 ทันที

Recommended