狠狠撸

狠狠撸Share a Scribd company logo
Modern Front-End Workflow
with
Webpack
tz5514 周昱安
About Me
? 國立彰化師範大學 資訊工程學系 四年級
? 努力畢業中,準備前往中央資工所軟工碩
士班
? 前後端都寫,最近比較喜歡寫前端
? Laravel Taiwan 社群常客
? Github:github.com/tz5514
前言
Front-End Assets
Bundle 這件事
對 Assets 進行一些
轉譯、打包、壓縮、額外加工處理
Why we need to bundle CSS?
? Preprocessor
– SCSS、SASS
– LESS
? Import Font、Image
? HTTP request speed
SCSS ─ 可維護性更高的CSS
Variables 變數
Nesting 巢狀結構
Mixins
Import
Why we need to bundle JS?
? ES6
? Module system
? React JSX
? 這三樣需求目前瀏覽器都無法直接的完美運行
ECMAScript 6
? ECMAScript 是 JavaScript 的語言標準規格,後者是前者的實作品
? Node.js 是 ECMAScript 在伺服器端的實作品語言
? ECMAScript 6 是 2015 年時正式發表的新一代版本標準
? 簡言之,ES6 就是新版的 JavaScript。
What's wrong with ES6?
? 瀏覽器端的支援還不夠普遍, 目前僅支援部份 ES6 新功能
? 某些使用者可能永遠也不會更新到支援 ES6 的瀏覽器
? 因此現階段,我們需要一個 ES6 to ES5 的轉換器 ─ Babel
Module system
? 命名衝突
– 全域命名空間下容易造成變數命名衝突,尤其是跟第三方套件衝突時更難解決
? 程式碼間的順序與依賴性維護困難
– 開發人員必須自行理解並解決不同 JS 檔案之間,以及與第三方套件的相互依賴關係
? 在大型專案中各種資源難以管理,長期積累的問題導致程式碼庫混亂不堪
Why we need it?
But....
? JavaScript 這個語言長時間以來都沒有設計
這樣子的模組機制
? 直到 ES6 才有了官方的模組機制功能
常見的社群規範
? CommonJS:Node.js 的參考規範
? AMD
? UMD
? ES6 的官方模組機制融合了 CommonJS 與 AMD 優點
? Wabpack 對於 CommonJS、AMD、ES6 Module 皆支援
CommonJS
React JSX
? JSX 是熱門前端庫 React 使用的一種 JavaScript 特別語法,看起來像是在 JS
程式碼中直接寫HTML
? 目的是為了讓開發人員撰寫更容易維護的 React 程式碼
? 瀏覽器無法直接辨識,所以一樣需要轉換器來幫忙轉成原生的 JS 程式碼
– Babel
瀏覽器能夠支援的原生程式碼難以撰寫與維護,
因此我們先撰寫一些好維護但瀏覽器看不懂的程式碼與模組架構,
然後再交給工具來幫我們翻譯並打包成瀏覽器看的懂的,
以順利在使用者的瀏覽器上正常執行。
而這個工具就是 Webpack。
NPM(Node Package Manager)
? NPM 本身是 Node.js(後端)的套件管理系統
? 因為 Node.js 的逐漸熱門以及 NPM 的普及,前端的 JS 或 CSS 套件也被放
上了 NPM,逐漸也成為了前端的套件管理系統主流
? Bower 等純前端套件的管理系統漸漸式微
Package.json
Webpack 101
SITCON 2016 ─ Modern Front-End Workflow with Webpack
Why webpack?
? 性能優勢
? 可分拆的 bundle 個體
? 多樣性的插件
? HMR(React 開發神器)
webpack.config.js
webpack.config.js
? entry
? output
? resolve
? module - loaders
? devtool
? watch
? plugins
– ExtractTextPlugin
– BrowserSyncPlugin
– ProvidePlugin
– WebpackErrorNotificationPlugin
– UglifyJsPlugin
Demo
Thanks!
參考資料
? http://blog.visioncan.com/2011/sass-scss-
your-css/
? http://tw.peep-squirrel.com/itcontent-
2296114.html

More Related Content

What's hot (20)

TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
Will Huang
?
twMVC#33玩轉 Azure 彈性部署
twMVC#33玩轉 Azure 彈性部署twMVC#33玩轉 Azure 彈性部署
twMVC#33玩轉 Azure 彈性部署
twMVC
?
twMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 LogtwMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 Log
twMVC
?
twMVC#36.NetCore 3快速看一波
twMVC#36.NetCore 3快速看一波twMVC#36.NetCore 3快速看一波
twMVC#36.NetCore 3快速看一波
twMVC
?
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
Will Huang
?
twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1
twMVC
?
Node.js 進攻桌面開發
Node.js 進攻桌面開發Node.js 進攻桌面開發
Node.js 進攻桌面開發
Fred Chien
?
迟飞惭痴颁#31网站上线了然后呢
迟飞惭痴颁#31网站上线了然后呢迟飞惭痴颁#31网站上线了然后呢
迟飞惭痴颁#31网站上线了然后呢
twMVC
?
twMVC#41 hololens2 MR
twMVC#41 hololens2 MRtwMVC#41 hololens2 MR
twMVC#41 hololens2 MR
twMVC
?
twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解
twMVC
?
Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)
Will Huang
?
twMVC#31沒有 hdd 的網站重構 webform to mvc
twMVC#31沒有 hdd 的網站重構 webform to mvctwMVC#31沒有 hdd 的網站重構 webform to mvc
twMVC#31沒有 hdd 的網站重構 webform to mvc
twMVC
?
SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17 SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17
twMVC
?
课题二:狈辞诲别.箩蝉那些事儿
课题二:狈辞诲别.箩蝉那些事儿课题二:狈辞诲别.箩蝉那些事儿
课题二:狈辞诲别.箩蝉那些事儿
Liu Allen
?
Angular 2 Taiwan 小聚 Forms 介紹
Angular 2 Taiwan 小聚 Forms 介紹Angular 2 Taiwan 小聚 Forms 介紹
Angular 2 Taiwan 小聚 Forms 介紹
Jeff Wu
?
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計
Amigo 陳兆祥
?
北護樂學程式冬令營 2017
北護樂學程式冬令營 2017北護樂學程式冬令營 2017
北護樂學程式冬令營 2017
Hamilton Wong
?
twMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart FactorytwMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart Factory
twMVC
?
Non-MVC Web Framework
Non-MVC Web FrameworkNon-MVC Web Framework
Non-MVC Web Framework
Fred Chien
?
保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格
保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格
保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格
Will Huang
?
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
TypeScript 開發實戰:開發即時互動的 html5 websocket 聊天室應用程式
Will Huang
?
twMVC#33玩轉 Azure 彈性部署
twMVC#33玩轉 Azure 彈性部署twMVC#33玩轉 Azure 彈性部署
twMVC#33玩轉 Azure 彈性部署
twMVC
?
twMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 LogtwMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 Log
twMVC
?
twMVC#36.NetCore 3快速看一波
twMVC#36.NetCore 3快速看一波twMVC#36.NetCore 3快速看一波
twMVC#36.NetCore 3快速看一波
twMVC
?
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
Will Huang
?
twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1
twMVC
?
Node.js 進攻桌面開發
Node.js 進攻桌面開發Node.js 進攻桌面開發
Node.js 進攻桌面開發
Fred Chien
?
迟飞惭痴颁#31网站上线了然后呢
迟飞惭痴颁#31网站上线了然后呢迟飞惭痴颁#31网站上线了然后呢
迟飞惭痴颁#31网站上线了然后呢
twMVC
?
twMVC#41 hololens2 MR
twMVC#41 hololens2 MRtwMVC#41 hololens2 MR
twMVC#41 hololens2 MR
twMVC
?
twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解
twMVC
?
Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)Visual Studio 2017 新功能探索 (Study4.TW)
Visual Studio 2017 新功能探索 (Study4.TW)
Will Huang
?
twMVC#31沒有 hdd 的網站重構 webform to mvc
twMVC#31沒有 hdd 的網站重構 webform to mvctwMVC#31沒有 hdd 的網站重構 webform to mvc
twMVC#31沒有 hdd 的網站重構 webform to mvc
twMVC
?
SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17 SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17
twMVC
?
课题二:狈辞诲别.箩蝉那些事儿
课题二:狈辞诲别.箩蝉那些事儿课题二:狈辞诲别.箩蝉那些事儿
课题二:狈辞诲别.箩蝉那些事儿
Liu Allen
?
Angular 2 Taiwan 小聚 Forms 介紹
Angular 2 Taiwan 小聚 Forms 介紹Angular 2 Taiwan 小聚 Forms 介紹
Angular 2 Taiwan 小聚 Forms 介紹
Jeff Wu
?
以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計以Code igniter為基礎的網頁前端程式設計
以Code igniter為基礎的網頁前端程式設計
Amigo 陳兆祥
?
北護樂學程式冬令營 2017
北護樂學程式冬令營 2017北護樂學程式冬令營 2017
北護樂學程式冬令營 2017
Hamilton Wong
?
twMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart FactorytwMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart Factory
twMVC
?
Non-MVC Web Framework
Non-MVC Web FrameworkNon-MVC Web Framework
Non-MVC Web Framework
Fred Chien
?
保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格
保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格
保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格
Will Huang
?

Similar to SITCON 2016 ─ Modern Front-End Workflow with Webpack (20)

Truck js 高性能移动web开发解决方案
Truck js 高性能移动web开发解决方案Truck js 高性能移动web开发解决方案
Truck js 高性能移动web开发解决方案
美团技术团队
?
美团前端架构介绍
美团前端架构介绍美团前端架构介绍
美团前端架构介绍
pan weizeng
?
tengine(nginx with lua ) develop at 2013
tengine(nginx with lua ) develop at 2013tengine(nginx with lua ) develop at 2013
tengine(nginx with lua ) develop at 2013
druggo2
?
美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New
翀 刘
?
Yog Framework
Yog FrameworkYog Framework
Yog Framework
fansekey
?
W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探
美团点评技术团队
?
How to ASP.NET MVC4
How to ASP.NET MVC4How to ASP.NET MVC4
How to ASP.NET MVC4
Daniel Chou
?
No sql@vip new
No sql@vip newNo sql@vip new
No sql@vip new
Chao Zhu
?
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at Taobao
Joshua Zhu
?
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
Scourgen Hong
?
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
acelyc1112009
?
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合
Qiangning Hong
?
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
涛 吴
?
厂别谤惫颈肠别惭别蝉丑-搁耻苍迟颈尘别-贵补补厂叁位一体.辫诲蹿
厂别谤惫颈肠别惭别蝉丑-搁耻苍迟颈尘别-贵补补厂叁位一体.辫诲蹿厂别谤惫颈肠别惭别蝉丑-搁耻苍迟颈尘别-贵补补厂叁位一体.辫诲蹿
厂别谤惫颈肠别惭别蝉丑-搁耻苍迟颈尘别-贵补补厂叁位一体.辫诲蹿
QingyuanZheng2
?
从颁滨到颁顿摆麻袋理财王天青闭惫1
从颁滨到颁顿摆麻袋理财王天青闭惫1从颁滨到颁顿摆麻袋理财王天青闭惫1
从颁滨到颁顿摆麻袋理财王天青闭惫1
天青 王
?
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CD
Chen-Tien Tsai
?
高性能队列贵辩耻别耻别的设计和使用实践
高性能队列贵辩耻别耻别的设计和使用实践高性能队列贵辩耻别耻别的设计和使用实践
高性能队列贵辩耻别耻别的设计和使用实践
孙立
?
新浪微博贵别别诲服务架构
新浪微博贵别别诲服务架构新浪微博贵别别诲服务架构
新浪微博贵别别诲服务架构
XiaoJun Hong
?
浅析浏览器解析和渲染
浅析浏览器解析和渲染浅析浏览器解析和渲染
浅析浏览器解析和渲染
Ailsa126
?
网站上线了,然后呢?
网站上线了,然后呢?网站上线了,然后呢?
网站上线了,然后呢?
Kirk Chen
?
Truck js 高性能移动web开发解决方案
Truck js 高性能移动web开发解决方案Truck js 高性能移动web开发解决方案
Truck js 高性能移动web开发解决方案
美团技术团队
?
美团前端架构介绍
美团前端架构介绍美团前端架构介绍
美团前端架构介绍
pan weizeng
?
tengine(nginx with lua ) develop at 2013
tengine(nginx with lua ) develop at 2013tengine(nginx with lua ) develop at 2013
tengine(nginx with lua ) develop at 2013
druggo2
?
美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New美丽说的架构发展与变迁 New
美丽说的架构发展与变迁 New
翀 刘
?
Yog Framework
Yog FrameworkYog Framework
Yog Framework
fansekey
?
W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探W3CTech美团react专场-React Native 初探
W3CTech美团react专场-React Native 初探
美团点评技术团队
?
How to ASP.NET MVC4
How to ASP.NET MVC4How to ASP.NET MVC4
How to ASP.NET MVC4
Daniel Chou
?
No sql@vip new
No sql@vip newNo sql@vip new
No sql@vip new
Chao Zhu
?
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at Taobao
Joshua Zhu
?
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
Scourgen Hong
?
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
acelyc1112009
?
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合
Qiangning Hong
?
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
涛 吴
?
厂别谤惫颈肠别惭别蝉丑-搁耻苍迟颈尘别-贵补补厂叁位一体.辫诲蹿
厂别谤惫颈肠别惭别蝉丑-搁耻苍迟颈尘别-贵补补厂叁位一体.辫诲蹿厂别谤惫颈肠别惭别蝉丑-搁耻苍迟颈尘别-贵补补厂叁位一体.辫诲蹿
厂别谤惫颈肠别惭别蝉丑-搁耻苍迟颈尘别-贵补补厂叁位一体.辫诲蹿
QingyuanZheng2
?
从颁滨到颁顿摆麻袋理财王天青闭惫1
从颁滨到颁顿摆麻袋理财王天青闭惫1从颁滨到颁顿摆麻袋理财王天青闭惫1
从颁滨到颁顿摆麻袋理财王天青闭惫1
天青 王
?
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CD
Chen-Tien Tsai
?
高性能队列贵辩耻别耻别的设计和使用实践
高性能队列贵辩耻别耻别的设计和使用实践高性能队列贵辩耻别耻别的设计和使用实践
高性能队列贵辩耻别耻别的设计和使用实践
孙立
?
新浪微博贵别别诲服务架构
新浪微博贵别别诲服务架构新浪微博贵别别诲服务架构
新浪微博贵别别诲服务架构
XiaoJun Hong
?
浅析浏览器解析和渲染
浅析浏览器解析和渲染浅析浏览器解析和渲染
浅析浏览器解析和渲染
Ailsa126
?
网站上线了,然后呢?
网站上线了,然后呢?网站上线了,然后呢?
网站上线了,然后呢?
Kirk Chen
?

SITCON 2016 ─ Modern Front-End Workflow with Webpack