SlideShare a Scribd company logo
1 of 66
黃升煌 Mike
多奇數位創意有限公司 全端工程師
Blog: https://wellwind.idv.tw/blog/
玩轉 Schematics
Name
黃升煌 Mike
Title
多奇數位創意有限公司
全端工程師
Award
2018 iT鐵人賽
Modern Web 組冠軍
About Me
程序猿,你覺得
寫程式快樂嗎?
快樂 不快樂
• 面對不同問題很有趣
• 職稱聽起來很帥氣
• 學習新東西很好玩
• 重複一樣的事情很無聊
• 加班、爆肝、沒生活
• 看不到未來
程序員所要面臨的
「必要重複程式碼」
程序員面臨的「必要重複程式碼」
程序員面臨的「必要重複程式碼」
程序員面臨的「必要重複程式碼」
程序員面臨的「必要重複程式碼」
程序員面臨的「必要重複程式碼」
• 每一頁內容都差不多
• 欄位不一樣
• 邏輯不一樣
• 程式碼幾乎一樣
我們每天都在面臨許多
「必須重複」的程式碼!
在一些簡單的情境,
我們可以靠code snippet解決
但它卻無法解決許多更複雜的情境
身為懶惰的工程師
應該找點更有效率的方法
Schematics 就是其中
一種強力工具
(Angular Only)
Schematics 基本觀念
關於 Schematics
將專案從某種狀態
變成另外一種狀態
Workflow
具有豐富API來處理檔
案變更,且容易組合
Compose
確認所有步驟正確才更新,
沒有副作用!
No Side Effect
簡單來說,就是
「程式碼產生器」
Schematics 基本觀念 (新增)
A
B
C
D
E
A
B
C
D
E
Schematics 基本觀念 (變更內容)
A
B
C
A
B
C'
C'
Schematics 基本觀念 (移除)
A
B
C
A
B
C
開始使用 Schematics
開始使用 Schematics
> npm install -g @angular-devkit/schematics-cli
> schematics blank --name=my-schematics
(建立基本 schematics 專案骨架)
開始使用 Schematics
> schematics @schematics/schematics:schematic 
--name=my-schematics
> schematics schematic --name=my-schematics
(使用 @schematics/schematics 的 schematic 產生程式)
(意義同上)
專案架構
package.json
專案架構
Schematic
(Generator)
collection.json
專案架構
Collection
(Scheamtics的集合)
collection.json
專案架構
collection.json
程式進入點
專案架構
collection.json
參數設定檔
專案架構 schema.json
可用的參數
專案架構 schema.json
必填的參數
程式說明
Rule:用來回傳一個 Tree 的方法
(把TreeA變更成TreeB)
Tree:代表一個等待變更中目錄的樹狀架構
程式說明
Action:用來處理檔案結構的操作符號(operators)
程式說明
Rule
A
B
C
A
B
C
程式說明
Tree Tree'
A
B
C
A
B
C
Action
執行 Schematics
執行 & 測試
> npm run build
> schematics .:my-schematics
執行my-schematics(只會顯示變更資訊,不會真正變更檔案)
> schematics .:my-schematics --dry-run=false
執行my-schematics(會真正變更檔案)
執行 & 測試
> npm link ../my-schematics
> schematics my-schematics:my-schematics
> ng generate my-schematics:my-schematics
(Angular CLI 專用指令:指定某個 schematic 建立檔案)
> ng set defaults.schematics.collection=my-schematics
(Angular CLI 專用指令:設定預設 schematics)
DEMO
使用 Schematics CLI 產生範本
使用 Schematics 範本目錄結構
執行 Schematics 結果
Schematics 常用工具
常用工具
常用工具
常用工具
使用 chain 組合多個 Rule
常用工具
執行其他外部 schematic
常用工具
合併 Tree
合併檔案來源
取代變數資料
Angular CLI 與 Schematics
完美整合
與 Angular CLI 整合
使用 ng add 安裝套件
與 Angular CLI 整合
使用 ng update 更新套件 (package.json)
與 Angular CLI 整合
使用 ng update 更新套件 (migration-collection.json)
使用案例
使用案例 (Angular Material)
安裝 Angular Material
需要 6 個步驟
使用案例 (Angular Material)
透過 schematic…
ng add @angular/material
一行搞定!
Angular Material 5.0.0 到 6.0.0 時,
breaking changes 多達將近70條!
使用案例 (Angular Material)
使用案例 (Angular Material)
透過 schematic…
ng update @angular/material
一行搞定!
有了schematics以及ng update,
我們就可以更安心肆無忌憚的breaking changes了
使用案例 (NG-ZORRO)
文件直接提供 generate command code
連記憶 schematic 語法的麻煩都省下來了!
使用案例 (其他)
• @ngrx/schematics
• ngcli-wallaby
• cypress-schematics
• ngx-schematics-collection
撰寫 Schematics 的建議
撰寫 Schematics 的建議
• 學習 Functional Programming 與 Patterns
• 盡量使用 Pure Function
• 將步驟切成小的 rule functions
Thank You
&
QA Time
Resources
• @angular-devkit/schematics
• Schematics: Generating custom Angular
Code with the CLI
• Schematics — An Introduction

More Related Content

What's hot

20210220 新竹敏捷社群分享
20210220 新竹敏捷社群分享20210220 新竹敏捷社群分享
20210220 新竹敏捷社群分享棋文 鄭
 
User story concept for agiletourkaohsiung
User story concept for agiletourkaohsiung User story concept for agiletourkaohsiung
User story concept for agiletourkaohsiung Jen-Chieh Ko
 
需求怎麼估 20150424新竹scrum社群分享
需求怎麼估 20150424新竹scrum社群分享需求怎麼估 20150424新竹scrum社群分享
需求怎麼估 20150424新竹scrum社群分享Juggernaut Liu
 
客倌您好,有聽過scrum嗎? first time meeting scrum
客倌您好,有聽過scrum嗎?  first time meeting scrum客倌您好,有聽過scrum嗎?  first time meeting scrum
客倌您好,有聽過scrum嗎? first time meeting scrumSylvia Yang
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development升煌 黃
 
3.厚植你的職場競爭力
3.厚植你的職場競爭力3.厚植你的職場競爭力
3.厚植你的職場競爭力gipi
 
從敏捷思考讀書會創業與人生 2
從敏捷思考讀書會創業與人生 2從敏捷思考讀書會創業與人生 2
從敏捷思考讀書會創業與人生 2Jen-Chieh Ko
 
火狐校園大使北二區 App:ShotNote
火狐校園大使北二區 App:ShotNote火狐校園大使北二區 App:ShotNote
火狐校園大使北二區 App:ShotNotefxcatw
 
Scrum Gathering 2012 Shanghai_团队合作与团队指导分会场演讲话题:自组织?你开玩笑吧!(艾永亮)
Scrum Gathering 2012 Shanghai_团队合作与团队指导分会场演讲话题:自组织?你开玩笑吧!(艾永亮)Scrum Gathering 2012 Shanghai_团队合作与团队指导分会场演讲话题:自组织?你开玩笑吧!(艾永亮)
Scrum Gathering 2012 Shanghai_团队合作与团队指导分会场演讲话题:自组织?你开玩笑吧!(艾永亮)JoXuZi
 
硬幣遊戲 Agile Summit 2018 side vent
硬幣遊戲 Agile Summit 2018 side vent硬幣遊戲 Agile Summit 2018 side vent
硬幣遊戲 Agile Summit 2018 side ventJen-Chieh Ko
 
Besides programming
Besides programmingBesides programming
Besides programmingHui-Hong You
 
Agile Summit Taipei 2019 - 找出敏捷轉型的基本模型
Agile Summit Taipei 2019 - 找出敏捷轉型的基本模型Agile Summit Taipei 2019 - 找出敏捷轉型的基本模型
Agile Summit Taipei 2019 - 找出敏捷轉型的基本模型Jason Liao
 
平台思维
平台思维平台思维
平台思维LC2009
 
Scrum Workshop - Paper Prototyping Game - for Girls in Tech
Scrum Workshop - Paper Prototyping Game - for Girls in TechScrum Workshop - Paper Prototyping Game - for Girls in Tech
Scrum Workshop - Paper Prototyping Game - for Girls in TechJonathan Chen
 

What's hot (15)

20210220 新竹敏捷社群分享
20210220 新竹敏捷社群分享20210220 新竹敏捷社群分享
20210220 新竹敏捷社群分享
 
User story concept for agiletourkaohsiung
User story concept for agiletourkaohsiung User story concept for agiletourkaohsiung
User story concept for agiletourkaohsiung
 
需求怎麼估 20150424新竹scrum社群分享
需求怎麼估 20150424新竹scrum社群分享需求怎麼估 20150424新竹scrum社群分享
需求怎麼估 20150424新竹scrum社群分享
 
客倌您好,有聽過scrum嗎? first time meeting scrum
客倌您好,有聽過scrum嗎?  first time meeting scrum客倌您好,有聽過scrum嗎?  first time meeting scrum
客倌您好,有聽過scrum嗎? first time meeting scrum
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
3.厚植你的職場競爭力
3.厚植你的職場競爭力3.厚植你的職場競爭力
3.厚植你的職場競爭力
 
從敏捷思考讀書會創業與人生 2
從敏捷思考讀書會創業與人生 2從敏捷思考讀書會創業與人生 2
從敏捷思考讀書會創業與人生 2
 
火狐校園大使北二區 App:ShotNote
火狐校園大使北二區 App:ShotNote火狐校園大使北二區 App:ShotNote
火狐校園大使北二區 App:ShotNote
 
Scrum Gathering 2012 Shanghai_团队合作与团队指导分会场演讲话题:自组织?你开玩笑吧!(艾永亮)
Scrum Gathering 2012 Shanghai_团队合作与团队指导分会场演讲话题:自组织?你开玩笑吧!(艾永亮)Scrum Gathering 2012 Shanghai_团队合作与团队指导分会场演讲话题:自组织?你开玩笑吧!(艾永亮)
Scrum Gathering 2012 Shanghai_团队合作与团队指导分会场演讲话题:自组织?你开玩笑吧!(艾永亮)
 
硬幣遊戲 Agile Summit 2018 side vent
硬幣遊戲 Agile Summit 2018 side vent硬幣遊戲 Agile Summit 2018 side vent
硬幣遊戲 Agile Summit 2018 side vent
 
Besides programming
Besides programmingBesides programming
Besides programming
 
Agile Summit Taipei 2019 - 找出敏捷轉型的基本模型
Agile Summit Taipei 2019 - 找出敏捷轉型的基本模型Agile Summit Taipei 2019 - 找出敏捷轉型的基本模型
Agile Summit Taipei 2019 - 找出敏捷轉型的基本模型
 
平台思维
平台思维平台思维
平台思维
 
第2章
第2章第2章
第2章
 
Scrum Workshop - Paper Prototyping Game - for Girls in Tech
Scrum Workshop - Paper Prototyping Game - for Girls in TechScrum Workshop - Paper Prototyping Game - for Girls in Tech
Scrum Workshop - Paper Prototyping Game - for Girls in Tech
 

Similar to 玩轉 Schematics - Modern Web 2018

大獅子與小獅子的分享
大獅子與小獅子的分享大獅子與小獅子的分享
大獅子與小獅子的分享jo lin
 
數學系的資訊人生
數學系的資訊人生數學系的資訊人生
數學系的資訊人生Jintin Lin
 
初探工程師升級手冊 2022
初探工程師升級手冊 2022初探工程師升級手冊 2022
初探工程師升級手冊 2022Caesar Chi
 
一場與程式設計的邂逅
一場與程式設計的邂逅一場與程式設計的邂逅
一場與程式設計的邂逅建宇 陳
 
Codeigniter 3.0 之 30 分鐘就上手
Codeigniter 3.0 之 30 分鐘就上手Codeigniter 3.0 之 30 分鐘就上手
Codeigniter 3.0 之 30 分鐘就上手Piece Chao
 
Agile tour 2014 - Coding Dojo with C# and TDD
Agile tour 2014 - Coding Dojo with C# and TDDAgile tour 2014 - Coding Dojo with C# and TDD
Agile tour 2014 - Coding Dojo with C# and TDDAgileCommunity
 
Agile tour Taipei 2014 - coding dojo with CSharp and TDD
Agile tour Taipei 2014 - coding dojo with CSharp and TDDAgile tour Taipei 2014 - coding dojo with CSharp and TDD
Agile tour Taipei 2014 - coding dojo with CSharp and TDDJoey Chen
 
我要活下來 - Ruby Junior 工程師的存活術
我要活下來 - Ruby Junior 工程師的存活術我要活下來 - Ruby Junior 工程師的存活術
我要活下來 - Ruby Junior 工程師的存活術Li Hsuan Hung
 
Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧
Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧
Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧升煌 黃
 
瀏覽器與網頁原理 Principles of Browsers and Webpages
瀏覽器與網頁原理 Principles of Browsers and Webpages瀏覽器與網頁原理 Principles of Browsers and Webpages
瀏覽器與網頁原理 Principles of Browsers and Webpages安齊 劉
 
邁向A+,談專案經理的跨界能力
邁向A+,談專案經理的跨界能力邁向A+,談專案經理的跨界能力
邁向A+,談專案經理的跨界能力gipi
 
技术人怎么做产品
技术人怎么做产品技术人怎么做产品
技术人怎么做产品Cando Zhou
 
有效面對技術債
有效面對技術債有效面對技術債
有效面對技術債Kirk Chen
 
HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程Souyi Yang
 
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文MAKERPRO.cc
 
Djt22 justinliu djt.qq.com
Djt22 justinliu djt.qq.comDjt22 justinliu djt.qq.com
Djt22 justinliu djt.qq.comdrewz lin
 
Open source的devops工具箱 公開版@coscup2016
Open source的devops工具箱 公開版@coscup2016Open source的devops工具箱 公開版@coscup2016
Open source的devops工具箱 公開版@coscup2016Kirk Chen
 
Go for web
Go for webGo for web
Go for webWeng Wei
 
Developer vs designer
Developer vs designerDeveloper vs designer
Developer vs designerRobert Luo
 

Similar to 玩轉 Schematics - Modern Web 2018 (20)

大獅子與小獅子的分享
大獅子與小獅子的分享大獅子與小獅子的分享
大獅子與小獅子的分享
 
數學系的資訊人生
數學系的資訊人生數學系的資訊人生
數學系的資訊人生
 
初探工程師升級手冊 2022
初探工程師升級手冊 2022初探工程師升級手冊 2022
初探工程師升級手冊 2022
 
一場與程式設計的邂逅
一場與程式設計的邂逅一場與程式設計的邂逅
一場與程式設計的邂逅
 
Codeigniter 3.0 之 30 分鐘就上手
Codeigniter 3.0 之 30 分鐘就上手Codeigniter 3.0 之 30 分鐘就上手
Codeigniter 3.0 之 30 分鐘就上手
 
Agile tour 2014 - Coding Dojo with C# and TDD
Agile tour 2014 - Coding Dojo with C# and TDDAgile tour 2014 - Coding Dojo with C# and TDD
Agile tour 2014 - Coding Dojo with C# and TDD
 
Agile tour Taipei 2014 - coding dojo with CSharp and TDD
Agile tour Taipei 2014 - coding dojo with CSharp and TDDAgile tour Taipei 2014 - coding dojo with CSharp and TDD
Agile tour Taipei 2014 - coding dojo with CSharp and TDD
 
我要活下來 - Ruby Junior 工程師的存活術
我要活下來 - Ruby Junior 工程師的存活術我要活下來 - Ruby Junior 工程師的存活術
我要活下來 - Ruby Junior 工程師的存活術
 
Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧
Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧
Angular Taiwan 2019 - 大型 Angular 專案的的管理心得與技巧
 
瀏覽器與網頁原理 Principles of Browsers and Webpages
瀏覽器與網頁原理 Principles of Browsers and Webpages瀏覽器與網頁原理 Principles of Browsers and Webpages
瀏覽器與網頁原理 Principles of Browsers and Webpages
 
邁向A+,談專案經理的跨界能力
邁向A+,談專案經理的跨界能力邁向A+,談專案經理的跨界能力
邁向A+,談專案經理的跨界能力
 
技术人怎么做产品
技术人怎么做产品技术人怎么做产品
技术人怎么做产品
 
有效面對技術債
有效面對技術債有效面對技術債
有效面對技術債
 
HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程
 
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
 
Djt22 justinliu djt.qq.com
Djt22 justinliu djt.qq.comDjt22 justinliu djt.qq.com
Djt22 justinliu djt.qq.com
 
Open source的devops工具箱 公開版@coscup2016
Open source的devops工具箱 公開版@coscup2016Open source的devops工具箱 公開版@coscup2016
Open source的devops工具箱 公開版@coscup2016
 
Go for web
Go for webGo for web
Go for web
 
猛犸浏览器
猛犸浏览器猛犸浏览器
猛犸浏览器
 
Developer vs designer
Developer vs designerDeveloper vs designer
Developer vs designer
 

More from 升煌 黃

使用 Passkeys 打造無密碼驗證服務
使用 Passkeys 打造無密碼驗證服務使用 Passkeys 打造無密碼驗證服務
使用 Passkeys 打造無密碼驗證服務升煌 黃
 
陽明交大 - 跟著 AI 學習 Angular
陽明交大 - 跟著 AI 學習 Angular陽明交大 - 跟著 AI 學習 Angular
陽明交大 - 跟著 AI 學習 Angular升煌 黃
 
用 Standalone Component 來寫 Angular 吧! - STUDY4.TW 2023 小聚 - 聊前端
用 Standalone Component 來寫 Angular 吧! - STUDY4.TW 2023 小聚 - 聊前端 用 Standalone Component 來寫 Angular 吧! - STUDY4.TW 2023 小聚 - 聊前端
用 Standalone Component 來寫 Angular 吧! - STUDY4.TW 2023 小聚 - 聊前端 升煌 黃
 
.NET Conf Taiwan 2022 - Tauri - 前端人員也能打造小巧快速的 Windows 應用程式
.NET Conf Taiwan 2022 - Tauri -前端人員也能打造小巧快速的 Windows 應用程式.NET Conf Taiwan 2022 - Tauri -前端人員也能打造小巧快速的 Windows 應用程式
.NET Conf Taiwan 2022 - Tauri - 前端人員也能打造小巧快速的 Windows 應用程式升煌 黃
 
DevFest 2022 Taipei 使用 Standalone Component 來寫 Angular 吧!
DevFest 2022 Taipei 使用 Standalone Component 來寫 Angular 吧!DevFest 2022 Taipei 使用 Standalone Component 來寫 Angular 吧!
DevFest 2022 Taipei 使用 Standalone Component 來寫 Angular 吧!升煌 黃
 
gRPC - 打造輕量、高效能的後端服務
gRPC - 打造輕量、高效能的後端服務gRPC - 打造輕量、高效能的後端服務
gRPC - 打造輕量、高效能的後端服務升煌 黃
 
Modern web 2020 - 使用 Nx 管理超大型前後端專案
Modern web 2020 - 使用 Nx 管理超大型前後端專案Modern web 2020 - 使用 Nx 管理超大型前後端專案
Modern web 2020 - 使用 Nx 管理超大型前後端專案升煌 黃
 
Angular Taiwan 2019 - Schematics Workshop
Angular Taiwan 2019 - Schematics WorkshopAngular Taiwan 2019 - Schematics Workshop
Angular Taiwan 2019 - Schematics Workshop升煌 黃
 
Angular Meetup 04 - Angular PWA 之沒有網路的日子 20190731
Angular Meetup 04 - Angular PWA 之沒有網路的日子 20190731Angular Meetup 04 - Angular PWA 之沒有網路的日子 20190731
Angular Meetup 04 - Angular PWA 之沒有網路的日子 20190731升煌 黃
 
Angular Taiwan 2018 - Angular CDK
Angular Taiwan 2018 - Angular CDKAngular Taiwan 2018 - Angular CDK
Angular Taiwan 2018 - Angular CDK升煌 黃
 
Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器升煌 黃
 

More from 升煌 黃 (12)

使用 Passkeys 打造無密碼驗證服務
使用 Passkeys 打造無密碼驗證服務使用 Passkeys 打造無密碼驗證服務
使用 Passkeys 打造無密碼驗證服務
 
陽明交大 - 跟著 AI 學習 Angular
陽明交大 - 跟著 AI 學習 Angular陽明交大 - 跟著 AI 學習 Angular
陽明交大 - 跟著 AI 學習 Angular
 
用 Standalone Component 來寫 Angular 吧! - STUDY4.TW 2023 小聚 - 聊前端
用 Standalone Component 來寫 Angular 吧! - STUDY4.TW 2023 小聚 - 聊前端 用 Standalone Component 來寫 Angular 吧! - STUDY4.TW 2023 小聚 - 聊前端
用 Standalone Component 來寫 Angular 吧! - STUDY4.TW 2023 小聚 - 聊前端
 
.NET Conf Taiwan 2022 - Tauri - 前端人員也能打造小巧快速的 Windows 應用程式
.NET Conf Taiwan 2022 - Tauri -前端人員也能打造小巧快速的 Windows 應用程式.NET Conf Taiwan 2022 - Tauri -前端人員也能打造小巧快速的 Windows 應用程式
.NET Conf Taiwan 2022 - Tauri - 前端人員也能打造小巧快速的 Windows 應用程式
 
DevFest 2022 Taipei 使用 Standalone Component 來寫 Angular 吧!
DevFest 2022 Taipei 使用 Standalone Component 來寫 Angular 吧!DevFest 2022 Taipei 使用 Standalone Component 來寫 Angular 吧!
DevFest 2022 Taipei 使用 Standalone Component 來寫 Angular 吧!
 
gRPC - 打造輕量、高效能的後端服務
gRPC - 打造輕量、高效能的後端服務gRPC - 打造輕量、高效能的後端服務
gRPC - 打造輕量、高效能的後端服務
 
Modern web 2020 - 使用 Nx 管理超大型前後端專案
Modern web 2020 - 使用 Nx 管理超大型前後端專案Modern web 2020 - 使用 Nx 管理超大型前後端專案
Modern web 2020 - 使用 Nx 管理超大型前後端專案
 
Angular Taiwan 2019 - Schematics Workshop
Angular Taiwan 2019 - Schematics WorkshopAngular Taiwan 2019 - Schematics Workshop
Angular Taiwan 2019 - Schematics Workshop
 
Angular Meetup 04 - Angular PWA 之沒有網路的日子 20190731
Angular Meetup 04 - Angular PWA 之沒有網路的日子 20190731Angular Meetup 04 - Angular PWA 之沒有網路的日子 20190731
Angular Meetup 04 - Angular PWA 之沒有網路的日子 20190731
 
Angular Taiwan 2018 - Angular CDK
Angular Taiwan 2018 - Angular CDKAngular Taiwan 2018 - Angular CDK
Angular Taiwan 2018 - Angular CDK
 
OAuth2介紹
OAuth2介紹OAuth2介紹
OAuth2介紹
 
Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器Docker - 30秒生出100台伺服器
Docker - 30秒生出100台伺服器
 

玩轉 Schematics - Modern Web 2018