iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 2
1
Modern Web

高效 Coding 術:Angular Schematics 實戰三十天系列 第 2

[高效 Coding 術:Angular Schematics 實戰三十天] Day01 - Schematics 簡介

Schematics 的起源

相信大家都知道,現代有非常非常多的事情都已經可以被自動化的機器或是工具取代。而這些事情之所以會被取代,基本上都是因為只要有個模組或是模型,就可以不斷地重複利用,產出一模一樣的行為或是物品,進而減少無謂的時間花費

而工程師們如果想要提高自己的工作效率,除了學好 Design PatternDRY ,讓自己的 Code 更好維護之外,也有不少人會寫些像是 Code Snippet 之類小工具來提昇自己的 Coding 速度。

不過如果你今天需要在你的專案新增檔案、甚至是一整個功能模組的話,就會需要花你不少時間去處理。或許有人會覺得:「那又沒花多少時間,沒有差吧?!」。我只能說:一部分是因為你目前沒有遇過較為大型的應用,另一部分則是「積沙成塔、滴水穿石」,千萬不要小看了累積的力量!

正因為如此,貼心的 Angular CLI 提供了讓我們只要下一行簡單的 command , 它就會幫大家產生我們所需要的檔案與程式碼的功能,是不是超棒的?!

不過這麼棒的功能, Angular CLI 早期是基於 Ember CLI 所開發的,所以當時並不支援讓開發者們客製,直到 Angluar CLI 釋出了 1.4 版,將原本基於 Ember CLI 所開發的功能改為採用 Angular 團隊自行研發的 Schematics 來實作時,才真正逐步開啟客製的大門,也讓 Schematics 漸漸成為所有使用 Angular 的進階開發者必修的學分。

簡單地說, Schematics 是一個程式碼產生器,只是它並不只是單純的程式碼產生器。因為我們除了可以透過它來產生出我們所需要的程式碼、檔案之外,甚至還可以透過它去修改我們的程式碼、幫我們快速地安裝所需的套件等等,是個非常強大的工具!!

更重要的是, Schematics 雖然是 Angular 生態系統的一部分,但它也可以用在 Angular 之外的地方,只是在 Angular 使用它較容易,且 Angular CLI 與它的整合度更好而已。

Schematics 的目標

作為 Angular 生態圈的一份子,而 Angular CLI 又這麼強大的情況下, Schematics 當然也不能讓 Angular CLI 專美於前, Angular 開發團隊在設計 Schematics 時,主要圍繞著以下四個目標展開:

  • 容易使用與開發
  • 容易擴充與重用
  • 無副作用
  • 支援非同步處理

其中除了容易使用與開發容易擴充與重用對大家來說是標準配備之外,無副作用的意思是指,當我們在使用 Schematics 時,所有的更改記錄會先儲存在記憶體裡,直到確認沒有任何錯誤之後,才會真正去變動我們的檔案;而支援非同步處理的意思是,因為許多工作流程在本質上是非同步的(例如去訪問 Web server ),所以 Schematics 才必須支援非同步處理。不過別擔心,這並不會造成開發人員的負擔,敬請放心使用。

關於無副作用的部份,原文稱其為 Atomicity - 原子性 ,但我覺得直接說無副作用會比較好理解,才會如此解釋。

本日結語

鐵人賽第一天,筆者想先從「 Schematics 是什麼」、「 Schematics 想幫開發者解決什麼問題」與「 Schematics 的發展史」開始,讓大家對於 Schematics 有初步的了解。

明天將從「如何使用」的角度來讓大家進一步體會 Schematics 所帶來的便利。

參考資料


上一篇
[高效 Coding 術:Angular Schematics 實戰三十天] Day00 - 前言
下一篇
[高效 Coding 術:Angular Schematics 實戰三十天] Day02 - 要學打人,先學挨打
系列文
高效 Coding 術:Angular Schematics 實戰三十天32

尚未有邦友留言

立即登入留言