2018年11月21日 星期三

[Day2]NgLocalization & NgLocaleLocalization

Common Module封裝了很多Directive, Pipe,還有一個很特殊的Providers:
{
provide: NgLocalization,
useClass: NgLocaleLocalization
}
官方文件的說明非常少,簡單來說就是應用在
1.各國語系的複數型態的規則訂定及表達
2.各種單位的複數型態的規則訂定及表達

abstract class NgLocalization

這是一個抽象類別,裡面只包含一個抽象方法
 abstract getPluralCategory(value: any, locale?: string): string
而且唯一擴充這個抽象類別的類別就是 NgLocaleLocalization

class NgLocaleLocalization extends NgLocalization

往深層的code track後發現一份規格 - CLDR(Common Locale Data Repository),由萬國碼(unicode)聯盟訂定的規範
http://cldr.unicode.org/index/cldr-spec/plural-rules
這份規格在描述各種語言
1.名詞的複數如何表達
2.單位的複數如何表達(e.g."hour" vs "hours")

語言複數規則的詳細列表
http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html

不過目前從source code觀察,似乎angular團隊在這個領域還沒有積極的發展,在angular5的時候很多相關的API都被列為deprecated。

github:https://github.com/ShawnTseng/angular-api-research/commit/2fc5c38129a732bf2ed709b1a66d31e3905e6c30

這些API跟多國語系(i18n)相關性較高,明天先讀I18N的章節( https://angular.io/guide/i18n ) 



2018年11月20日 星期二

[Day1]Angular API Overview & common(package)

Angular API(https://angular.io/api)
版本 - v7.0.4

所有Angular提供的API以package分為28包(可用:25, 棄用:3)
animation
animations/browser; animations/browser/testing
common/http; common/http/testing
common; common/testing
core; core/testing
elements
forms
platform-browser; platform-browser/testing
platform-browser/animations
platform-browser-dynamic; platform-browser-dynamic/testing
platform-server; platform-server/testing
platform-webworker; platform-webworker-dynamic
router; router/testing
router/upgrade
service-worker
upgrade/static
http; http/testing
upgrade

每個package都有一堆API,一眼看過去大約有400~600個左右。
大多數的API都有出現在教學或功能分類中,重點是有些沒有。所以這一系列的文章就是要用地毯式搜索的方式,一個個看過,找出埋藏在Angular框架中的寶藏。


今天就從common這個package出發吧。
Package:common
說明:顧名思義,就是實作了一些基本的angular的directive, pipe
進入點:
主要
        @angular/common
次要
        @angular/common/http - 提供http通訊協定的client端
        @angular/common/http/testing
        @angular/common/testing



CommonModule(NgModule)
說明:匯出所有基本的angular的directive, pipe
p.s.BrowserModule包含了CommonModule,所以如果已經import了BrowserModule,就不需要import CommonModule。

https://github.com/ShawnTseng/angular-api-research/commit/f9f769cf5138589ed28975c39e8f90af1265f541

待續...明日進度:
NgLocalization
NgLocaleLocalization
NgClass
NgComponentOutlet
NgForOf
NgIf
NgPlural
NgPluralCase
NgStyle
NgSwitch
NgSwitchCase
NgSwitchDefault
NgTemplateOutlet

2018年11月19日 星期一

立定目標;把Angular API讀過一次

今天和保哥前往客戶家的途中,他鼓勵我寫些跟技術有關的議題。

漫無目標的我心裡想著,離開學校4年多,在職場中載浮載沉,對有興趣的人事物也都追求過、嘗試過了,但終究也沒找到自己在社會中的定位與價值,似乎在人生的旅途中迷失了自我。或許消逝的熱忱是因為沒有目標吧。

進入軟體產業的時間也不算短,對於軟體業中,生產面整體的概觀及輪廓還算明白,也該訂定自己在這個行業中的定位了。

根據現在的資源、知識及能力來做為決策標竿的話,我決定深耕前端工程(Front-End),來累積自我的價值。

前端工程(Front-End),是深不見底的一個大坑,短時間內想囊括前端的全貌是不可行的,因為知識含量過高。為了最有效率的累積相關的學理及實務,往後的學習策略與行動 - 站在巨人的肩膀上:Google推行的Angular - 前端框架是一群專家搞出來的產物。

因為相較於Vue、React,我比較熟悉這套框架,加上個人有很強烈的控制慾,所以偏愛Angular 2+。

因此在今日立定目標:把Angular API全部讀過一次。必要時寫些Code、讀個原始碼,往後會將每個API的學習心得記錄於此。