Submit Search
Upload
Modern Front End Evolution
•
13 likes
•
6,462 views
K
KUAN-CHING CHOU
Follow
網頁版請參考 https://jchou24.github.io/Demos/Modern%20Front-End%20Evolution/
Read less
Read more
Software
Report
Share
Report
Share
1 of 50
Download now
Download to read offline
Recommended
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!
devsumi2009
[12_B_6] PHP/MySQL を用いた大規模向けパッケージソフトウェア開発
[12_B_6] PHP/MySQL を用いた大規模向けパッケージソフトウェア開発
Yuichi Tanaka
Sentokyo Kansai(20070126)
Sentokyo Kansai(20070126)
真 岡本
How to use Virtualization Technology in Hatena
How to use Virtualization Technology in Hatena
Shinji Tanaka
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
XMourinho
WebDAV as Web API
WebDAV as Web API
Masaki Komagata
RDF and FOAF
RDF and FOAF
Masaki Komagata
Namo Web Solution
Namo Web Solution
benson56
Recommended
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!
【13-D-4】 アナタのアプリ性能改善の秘訣、オラクルが教えます!
devsumi2009
[12_B_6] PHP/MySQL を用いた大規模向けパッケージソフトウェア開発
[12_B_6] PHP/MySQL を用いた大規模向けパッケージソフトウェア開発
Yuichi Tanaka
Sentokyo Kansai(20070126)
Sentokyo Kansai(20070126)
真 岡本
How to use Virtualization Technology in Hatena
How to use Virtualization Technology in Hatena
Shinji Tanaka
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
章文嵩:使用LVS集群架设高可扩展的网络服务.pdf
XMourinho
WebDAV as Web API
WebDAV as Web API
Masaki Komagata
RDF and FOAF
RDF and FOAF
Masaki Komagata
Namo Web Solution
Namo Web Solution
benson56
What is PHP Frameworks?
What is PHP Frameworks?
Masaki Komagata
Kpl Advisor(20080220)
Kpl Advisor(20080220)
真 岡本
WebHookの調査と実装
WebHookの調査と実装
moai kids
PHP at Yahoo! JAPAN
PHP at Yahoo! JAPAN
Ippei Ogiwara
Ext Ncs 20081029
Ext Ncs 20081029
Yuki Naotori
Webpeckerv7 Datasheet
Webpeckerv7 Datasheet
port80
91 Ch
91 Ch
anjaan
Php.On.Windows.Training.Chs
Php.On.Windows.Training.Chs
cqwang
Cloud for Enterprise IT (Japanese)
Cloud for Enterprise IT (Japanese)
kurikiyo
インフラエンジニアになろう!
インフラエンジニアになろう!
Toshiaki Baba
Sentokyo(20061012)
Sentokyo(20061012)
真 岡本
【13-B-3】 企業システムをマッシュアップ型に変えるには
【13-B-3】 企業システムをマッシュアップ型に変えるには
devsumi2009
Kdu(20081112)
Kdu(20081112)
真 岡本
極める routes.php
極める routes.php
Masahiro Akita
Fmrms Whitepaper.Cnaa
Fmrms Whitepaper.Cnaa
jijiegg
Silent Running Side A
Silent Running Side A
Shunsaku Kudo
Web2.0 and Ruby
Web2.0 and Ruby
guest396df3
Sd Loader Seasar Con2009 White
Sd Loader Seasar Con2009 White
Akio Katayama
20081006 Highload2008 Postgresql самохвалов
20081006 Highload2008 Postgresql самохвалов
Ontico
More Related Content
What's hot
What is PHP Frameworks?
What is PHP Frameworks?
Masaki Komagata
Kpl Advisor(20080220)
Kpl Advisor(20080220)
真 岡本
WebHookの調査と実装
WebHookの調査と実装
moai kids
PHP at Yahoo! JAPAN
PHP at Yahoo! JAPAN
Ippei Ogiwara
Ext Ncs 20081029
Ext Ncs 20081029
Yuki Naotori
Webpeckerv7 Datasheet
Webpeckerv7 Datasheet
port80
91 Ch
91 Ch
anjaan
Php.On.Windows.Training.Chs
Php.On.Windows.Training.Chs
cqwang
Cloud for Enterprise IT (Japanese)
Cloud for Enterprise IT (Japanese)
kurikiyo
インフラエンジニアになろう!
インフラエンジニアになろう!
Toshiaki Baba
Sentokyo(20061012)
Sentokyo(20061012)
真 岡本
【13-B-3】 企業システムをマッシュアップ型に変えるには
【13-B-3】 企業システムをマッシュアップ型に変えるには
devsumi2009
Kdu(20081112)
Kdu(20081112)
真 岡本
極める routes.php
極める routes.php
Masahiro Akita
Fmrms Whitepaper.Cnaa
Fmrms Whitepaper.Cnaa
jijiegg
Silent Running Side A
Silent Running Side A
Shunsaku Kudo
Web2.0 and Ruby
Web2.0 and Ruby
guest396df3
Sd Loader Seasar Con2009 White
Sd Loader Seasar Con2009 White
Akio Katayama
20081006 Highload2008 Postgresql самохвалов
20081006 Highload2008 Postgresql самохвалов
Ontico
What's hot
(19)
What is PHP Frameworks?
What is PHP Frameworks?
Kpl Advisor(20080220)
Kpl Advisor(20080220)
WebHookの調査と実装
WebHookの調査と実装
PHP at Yahoo! JAPAN
PHP at Yahoo! JAPAN
Ext Ncs 20081029
Ext Ncs 20081029
Webpeckerv7 Datasheet
Webpeckerv7 Datasheet
91 Ch
91 Ch
Php.On.Windows.Training.Chs
Php.On.Windows.Training.Chs
Cloud for Enterprise IT (Japanese)
Cloud for Enterprise IT (Japanese)
インフラエンジニアになろう!
インフラエンジニアになろう!
Sentokyo(20061012)
Sentokyo(20061012)
【13-B-3】 企業システムをマッシュアップ型に変えるには
【13-B-3】 企業システムをマッシュアップ型に変えるには
Kdu(20081112)
Kdu(20081112)
極める routes.php
極める routes.php
Fmrms Whitepaper.Cnaa
Fmrms Whitepaper.Cnaa
Silent Running Side A
Silent Running Side A
Web2.0 and Ruby
Web2.0 and Ruby
Sd Loader Seasar Con2009 White
Sd Loader Seasar Con2009 White
20081006 Highload2008 Postgresql самохвалов
20081006 Highload2008 Postgresql самохвалов
Modern Front End Evolution
1.
Modern Front-End Evolution Kuan-Ching
Chou 2019/11/6
2.
2 ⾃Web興起
3.
3 我們迎來了新⼀波的資訊⾰命
4.
⼀開始我們是這樣的... 4 ⽤瀏覽器觀看⽂章 使⽤Server放置Static Files Static
Files (html, css, js)
5.
5 當Web熱潮來臨 我們開始在web上進⾏商業活動
6.
系統架構開始複雜化 6
7.
瀏覽器端(Front-End)的⾓⾊也開始吃重 7 我們必須仰賴 更為複雜的html css js來進⾏商業活動
8.
不再只是瀏覽網⾴ 8 Web Application ⽽是使⽤
9.
Web Application - 能夠在不同裝置良好呈現內容
- - 網⾴部分更新 - - 操作即時反饋 - - 網⾴快速載入 - - 服務容易被找到 - - 好開發維護 - 9
10.
Web Application - 能夠在不同裝置良好呈現內容
- - 網⾴部分更新 - - 操作即時反饋 - - 網⾴快速載入 - - 服務容易被找到 - - 好開發維護 - 10
11.
Responsive Web Design(RWD) 響應式網⾴設計 11 能在不同裝置呈現內容,依螢幕寬調整顯⽰⽅式
12.
利⽤Media Query 來設定不同螢幕寬,元素之寬度要是多少 12 // 1
collumn @media (max-width: 300px) { .container .ele{ width: 100%; } } // 2 collumn @media (min-width: 300px) and (max-width: 600px) { .container .ele{ width: 50%; } } // 3 collumn @media (min-width: 600px) { .container .ele{ width: 33%; } }
13.
Sassy CSS(SCSS) 13 // 1
collumn @media (max-width: 300px) { .container .ele{ width: 100%; } } // 2 collumn @media (min-width: 300px) and (max-width: 600px) { .container .ele{ width: 50%; } } // 3 collumn @media (min-width: 600px) { .container .ele{ width: 33%; } } .container{ // 1 collumn @media (max-width: 300px) { & .ele{ width: 100%; } } // 2 collumn @media (min-width: 300px) and (max-width: 600px) { & .ele{ width: 50%; } } // 3 collumn @media (min-width: 600px) { & .ele{ width: 33%; } } } 將 .ele 放在 .container 底下
14.
Sassy CSS(SCSS) ๏ 允許使⽤
變數, Function, 階層 ๏ 可讀性比CSS還⾼ ๏ 需要轉換回CSS, Browser才看得懂 14 compile Source Map 啟⽤source map,即可在Browser開 發⼯具上看到scss原始⾏數
15.
Web Application - 能夠在不同裝置良好呈現內容
- - 網⾴部分更新 - - 操作即時反饋 - - 網⾴快速載入 - - 服務容易被找到 - - 好開發維護 - 15
16.
網⾴部分更新 16
17.
๏ 點擊後 網⾴部分更新 ๏ 可使⽤像 之類的套件輔助動 態取得資料,但不 跳⾴ 網⾴部分更新 17 Load
More ๏ 好處 • 不需跳⾴,即可載入更多內容 • User體驗不會中斷 ๏ 衍伸議題 • Event Driven 難以管理Data • 網址不變 難以管理State • JS code 變多 需要更模組化的code
18.
Single Page Application(SPA) 18 畫⾯變,網址變,但不跳⾴ ⾴⾯差異更新
19.
Single Page Application(SPA) ๏
單⾴式應⽤ • 像是Gmail ๏ 完全不跳⾴ • 網址變,但實際上沒跳⾴ 19
20.
SPA應⽤場景 20 跳⾴的話,體驗會變差 ๏ 帶聊天功能網站 • ex
facebook ๏ ⾳樂網站 ๏ 影片網站 ๏ 直播網站 ๏ 後台類網站
21.
Web Application - 能夠在不同裝置良好呈現內容
- - 網⾴部分更新 - - 操作即時反饋 - - 網⾴快速載入 - - 服務容易被找到 - - 好開發維護 - 21
22.
操作即時反饋(Reactive) 22 Jquery $("input").on("change",function(){ $("#display").html( $(this).val() ) }) ๏
所⾒即所得,體驗不中斷
23.
Web Application - 能夠在不同裝置良好呈現內容
- - 網⾴部分更新 - - 操作即時反饋 - - 網⾴快速載入 - - 服務容易被找到 - - 好開發維護 - 23
24.
網⾴載入的越久,顧客越不會留下 24
25.
加快初始化速度 ๏ JS • Minify、Uglify •
… ๏ CSS • Minify • CSS Sprites • … ๏ Initial Data • PWA 25 JS Minify, Uglify 去除空格、縮排、註解、混淆...
26.
CSS Sprites 26 將圖檔合併以減少網路IO icon-s6194bebbcc.css .icon-sprite, .actions
.remove, .actions .pen, .actions .save, .actions .search { background-image: url('/images/icon-s6194bebbcc.png'); background-repeat: no-repeat; } .actions .remove { background-position: 0 0; width: 48px; height: 48px; } .actions .pen { background-position: 0 -48px; } .actions .save { background-position: 0 -96px; } .actions .search { background-position: 0 -144px; }
27.
Progressive Web Appication(PWA) 27 讓Web
Application 部分服務離線可使⽤ 已載入過的Data 離線時還可繼續使⽤
28.
Web Application - 能夠在不同裝置良好呈現內容
- - 網⾴部分更新 - - 操作即時反饋 - - 網⾴快速載入 - - 服務容易被找到 - - 好開發維護 - 28
29.
Search Engine 29 Crawler 爬取網站 Html Website 下載網站內容 Search ….
提供搜尋服務 分析 動態產⽣內容 難以被爬蟲抓取
30.
Search Engine Optimization(SEO) ๏
SEO: 將網⾴內容優化,以讓搜尋引擎好分析 ๏ 爬蟲程式難以爬取動態產⽣內容 ⼀些網⾴內容預先由Server Side Render(SSR)出來 30 Response Request Crawler Html Prerender Server 預先渲染 想讓爬蟲抓取的資料
31.
Web Application - 能夠在不同裝置良好呈現內容
- - 網⾴部分更新 - - 操作即時反饋 - - 網⾴快速載入 - - 服務容易被找到 - - 好開發維護 - 31
32.
模組化 32 <!DOCTYPE html> <html> <head> <script src=“/global_lib/aaa.js"></script> <script
src="/global_lib/bbb.js"></script> <script src="/global_lib/ccc.js"></script> <script src=“/index_lib/001.js"></script> <script src="/index_lib/002.js"></script> <script src="/index_lib/003.js"></script> ... </head> <body> ... </body> </html> <!DOCTYPE html> <html> <head> <script src=“/global_lib.js"></script> <script src=“/index_lib.js"></script> ... </head> <body> ... </body> </html> 1 將共⽤js包成⼀個js 1 22 將特定⾴⾯⽤之js包成⼀個js1 2
33.
模組化 33 ๏ ES5 • Require
JS: ⽤js的⽅式來進⾏模組化 ๏ ES6 • import, export: 原⽣⽀持模組化 • 導致require js的熱度降低 • 不⽀持ES6之瀏覽器無法使⽤ • 模組化後需要進⾏優化 => 使得webpack、babel等js興起
34.
模組化 34 ๏ ES5 • Require
JS: ⽤js的⽅式來進⾏模組化 ๏ ES6 • import, export: 原⽣⽀持模組化 • 導致require js的熱度降低 • 不⽀持ES6之瀏覽器無法使⽤ • 模組化後需要進⾏優化 => 使得webpack、babel等js興起 util.js function TestFunction(){ return "Hello World" } export { TestFunction } main.js import { TestFunction } from ‘util.js' TestFunction() // "Hello World"
35.
Babel ๏ Babel is
a JavaScript compiler. ๏ 旨在解決js語法跨瀏覽器相容問題 35 Compile
36.
Webpack 36 將多個檔案合併(Bundle)並進⾏優化
37.
Webpack 37 src/index.js import bar from
'./bar'; bar(); src/bar.js export default function bar() { // } page.html <!doctype html> <html> <head> ... </head> <body> ... <script src="dist/bundle.js"></script> </body> </html> webpack.config.js const path = require('path'); module.exports = { entry: './src/index.js', output: { path: path.resolve(__dirname,’dist'), filename: 'bundle.js' } }; Source CodeEntry Point Config File 利⽤entry js,將關聯檔案全部合 併(Bundle)成⼀個js並進⾏優化
38.
元件化 ๏ 有些前端框架甚⾄可以做到元件化 ๏ 不只是物件化 •
將html, css, js整個物件化起來 ๏ 元件內部之html, css, js 不會影響到外部 ๏ 也可定義與外部js 之input, output接⼝ 38 元件化後之⽇曆 內部運作邏輯已經與外部隔開
39.
39 元件化 ๏ Suedo Code 以Vue為例 Main.vue
Calendar.vue <template> <!-- Define Html Template --> <div> ... </div> </template> <script> // Define js logic export default { name: "Calendar", data(){ return { ... } }, } </script> <style lang="scss" scoped> // Define Scss ... </style> <template> <!-- Define Html Template --> <Calendar/> </template> <script> // Define js logic import Calendar from 'Calendar.vue' export default { name: “Main", components:{ Calendar }, data(){ return { ... } }, } </script> <style lang="scss" scoped> // Define Scss ... </style>
40.
40 元件化 Main.vue <template> <!-- Define Html
Template --> <Calendar/> <Calendar/> </template> <script> // Define js logic import Calendar from 'Calendar.vue' export default { name: “Main", components:{ Calendar }, ... } </script> <style lang="scss" scoped> // Define Scss ... </style> 2個⽇曆各⾃有⾃⼰的狀態 不會被另⼀個⽇曆影響 ๏ Suedo Code以Vue為例
41.
管理複雜化之前端 ๏ 以SPA為例 • 何時更新Data,同步Data? •
何時該連動更新畫⾯? • 何時該呼叫後端更新Data? 41 管理的議題,使前端框架興起
42.
以Vue為例 ๏ Vue是Model-View-ViewModel(MVVM)架構 42
43.
使⽤前端框架 ๏ 前端的運作開始複雜化 ๏ Data在event
driven下越來越難管理 ๏ 前端框架希望簡化這些複雜的管理問題 ๏ 3⼤前端框架 43 React Angular Vue
44.
⽤前端框架進⾏開發 ๏ 以下是⼀個基本型開發模式 1. 安裝node
js 2. 安裝框架 3. 以框架的規範進⾏開發 4. Build前端專案 5. 將Build後之Static File進⾏部署 44 過去我們直接撰寫Static File,並部署 應⽤前端框架的話,通常要先Build過才會部署
45.
45 前端技術如雨後春筍般出現
46.
46 這麼多的技術 選誰好?
47.
47 每個技術的出現,背後都有它所想要解決的問題 只要他能解決你的痛點,你就有選他的理由
48.
48 ⾄於我選誰...
49.
49 我選擇可以讓我準時下班的
50.
感謝您的聆聽
Download now