Closed11
Angularのライブラリを自作するぞい!作業メモ
Angular 日本語ドキュメンテーション - ライブラリを作成する
接頭辞ng-は、Angularフレームワークとそのライブラリで使用される予約済みのキーワードです。ライブラリがAngularでの使用に適していることを示すために使用される慣行として、接頭辞ngx-が推奨されます。
命名はngxを使う。
ng new <project_name>
で指定した名前をつかって
ng generate library <library_name>
したらおこられたぞい!
project_nameとlibrary_name一緒にすると怒られる。
Project name already exists.
初回ライブラリビルドから同一project内projectで動かすまで
ng build <library-name>
でビルドする。
でAppModuleでimportする。
import { LibraryNameModule } from '<library-name>';
// ...
imports: [
BrowserModule,
LibraryNameModule
],
// ...
export class AppModule { }
でそのあとserveすればライブラリ取り込んで動かせる。
テストの書き方メモ
describe('TestSuite', () => { // desicribeでTestSuiteを表現
it('should be hoge', ()=> { // it('テストが何チェックしているのかの説明'
// テストケースを書く
})
});
compositeパターン使ってるんだけど、compositeを作る部分のコードが複雑になってしまった。
Builderによるcompositeの隠蔽
いろいろ調べてたら↑のスライドに辿り着き面白そうな本を見つけたからポチった。早く届いてくれ〜〜
パターン指向リファクタリング入門~ソフトウエア設計を改善する27の作法
compositeパターン
- 透過性を優先する
- 安全性を優先する
どっちにするか迷ったけど、透過性にした。
最初安全性優先で実装したんだけど、透過性優先の実装の方が疎結合になるからそうする。
安全性優先で実装 -> newしてる部分をメソッドで隠すようにした -> 透過性の実装のほうがもっと疎結合になると気づいたから変更
例外投げるケースのテストの書き方
NG
expect(throwErrorFunc()).toThrowError('hoge');
OK
expect(() => throwErrorFunc()).toThrowError('hoge');
テスト逆に書いてた。actual -> expected の順が正
expect(actual).toEqual(expected)
MITライセンスがゆるそうでよさげ
natlifyでライブラリをビルドしてからデモprojectをビルドする。
ng build <library_name> && ng build
おわり
このスクラップは2022/06/13にクローズされました