simple-boot-front 1.0.102 → 1.0.103

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. package/README.MD +388 -388
  2. package/SimpleBootFront.d.ts +34 -34
  3. package/SimpleBootFront.js +337 -337
  4. package/decorators/Component.d.ts +11 -11
  5. package/decorators/Component.js +30 -30
  6. package/decorators/Script.d.ts +10 -10
  7. package/decorators/Script.js +31 -31
  8. package/decorators/inject/InjectFrontSituationType.d.ts +3 -3
  9. package/decorators/inject/InjectFrontSituationType.js +7 -7
  10. package/fetch/Fetcher.d.ts +4 -4
  11. package/fetch/Fetcher.js +9 -9
  12. package/lifecycle/OnChangedRender.d.ts +3 -3
  13. package/lifecycle/OnChangedRender.js +2 -2
  14. package/lifecycle/OnDestroy.d.ts +3 -3
  15. package/lifecycle/OnDestroy.js +2 -2
  16. package/lifecycle/OnFinish.d.ts +3 -3
  17. package/lifecycle/OnFinish.js +2 -2
  18. package/lifecycle/OnInit.d.ts +8 -8
  19. package/lifecycle/OnInit.js +2 -2
  20. package/lifecycle/OnInitedChild.d.ts +3 -3
  21. package/lifecycle/OnInitedChild.js +2 -2
  22. package/option/SimFrontOption.d.ts +14 -14
  23. package/option/SimFrontOption.js +45 -45
  24. package/package.json +83 -83
  25. package/script/ScriptRunnable.d.ts +7 -7
  26. package/script/ScriptRunnable.js +22 -22
  27. package/service/CookieService.d.ts +11 -11
  28. package/service/CookieService.js +54 -54
  29. package/service/HttpService.d.ts +3 -3
  30. package/service/HttpService.js +23 -23
  31. package/service/MetaTagService.d.ts +11 -11
  32. package/service/MetaTagService.js +52 -52
  33. package/service/Navigation.d.ts +18 -18
  34. package/service/Navigation.js +117 -117
  35. package/service/ScriptService.d.ts +7 -7
  36. package/service/ScriptService.js +39 -39
  37. package/service/StorageService.d.ts +12 -12
  38. package/service/StorageService.js +67 -67
  39. package/service/view/View.d.ts +6 -6
  40. package/service/view/View.js +29 -29
  41. package/service/view/ViewService.d.ts +7 -7
  42. package/service/view/ViewService.js +46 -46
  43. package/throwable/RouterError.d.ts +4 -4
  44. package/throwable/RouterError.js +27 -27
  45. package/throwable/RouterIntentError.d.ts +4 -4
  46. package/throwable/RouterIntentError.js +27 -27
  47. package/throwable/RouterNotFount.d.ts +4 -4
  48. package/throwable/RouterNotFount.js +27 -27
package/README.MD CHANGED
@@ -1,388 +1,388 @@
1
- ![Single Page Application Framworks](assets/banner.png)
2
- ![typescript](https://img.shields.io/badge/-typescript-black?logo=typescript) [![npm](https://img.shields.io/badge/-npm-black?logo=npm)](https://www.npmjs.com/package/simple-boot-front) [![license](https://img.shields.io/badge/license-MIT-green)](LICENSE.md) [![Chat](https://img.shields.io/badge/discord-20%20online-brightgreen?logo=discord)](https://discord.gg/PW56dpns) [![Github](https://img.shields.io/badge/-github-black?logo=github)](https://github.com/visualkhh/simple-boot-front)
3
-
4
- **Our primary goals are**
5
- * Single Page Application Framworks for Web
6
- * Provide a radically faster and widely accessible getting started experience for all front end.
7
-
8
- ### dependencies
9
- * dom-render [![npm](https://img.shields.io/badge/-npm-black?logo=npm)](https://www.npmjs.com/package/dom-render)
10
- * simple-boot-core [![npm](https://img.shields.io/badge/-npm-black?logo=npm)](https://www.npmjs.com/package/simple-boot-core)
11
-
12
-
13
- # [📄 introduction page 🔗](https://simple-boot-front.github.io)
14
- - [https://simple-boot-front.github.io](https://simple-boot-front.github.io)
15
-
16
-
17
- ---
18
- # 🚀 Quick start cli
19
- ```shell
20
- npm init simple-boot-front projectname
21
- cd projectname
22
- npm start
23
- # open browser: http://localhost:4500
24
- ```
25
-
26
- # 😃 examples, templates
27
- - [templates](./templates)
28
- - [examples](./examples)
29
-
30
- # directory structure
31
- ```
32
- ┌─ assets
33
- ├─ dist (out put directory)
34
- ├─ src (source)
35
- │ ├─ pages (your pages)
36
- │ │ ├ home.ts (sample page)
37
- │ │ └ user.ts (sample page)
38
- │ ├─ index.css (index route page css)
39
- │ ├─ index.html (index route page template)
40
- │ └─ index.ts (simple-boot-fornt start and route point)
41
- ├─ types (typescript type)
42
- │ └ index.d.ts (type definition)
43
- ├─ index.html start (point html)
44
- ├─ package.json (project config)
45
- ├─ rollup.config.js (rollup bundler config)
46
- └─ tsconfig.json (typescript config)
47
- ```
48
-
49
- ## source
50
- * simple-boot-front start and route point (set: ts, html, css)
51
- <details>
52
- <summary>pages/home.ts<strong>🔻(click)</strong></summary>
53
-
54
- ```typescript
55
- @Sim()
56
- @Component({
57
- template: '<div>home</div>'
58
- })
59
- export class Home {
60
-
61
- }
62
- ```
63
- </details>
64
- <details>
65
- <summary>pages/user.ts<strong>🔻(click)</strong></summary>
66
-
67
- ```typescript
68
- @Sim()
69
- @Component({
70
- template: '<div>user</div>'
71
- })
72
- export class User {
73
-
74
- }
75
- ```
76
- </details>
77
- <details>
78
- <summary>index.html<strong>🔻(click)</strong></summary>
79
-
80
- ```html
81
- <header>
82
- <nav>
83
- <ul>
84
- <li>
85
- <button router-link="/">home</button>
86
- </li>
87
- <li>
88
- <button router-link="/user">user</button>
89
- </li>
90
- </ul>
91
- </nav>
92
-
93
- </header>
94
- <main>
95
- <router component="this.child"></router>
96
- </main>
97
- <footer>
98
- footer
99
- </footer>
100
- ```
101
- </details>
102
-
103
- <details>
104
- <summary>index.css<strong>🔻(click)</strong></summary>
105
-
106
- ```css
107
- header, footer, main {
108
- border: #333333 1px solid;
109
- padding: 20px;
110
- margin: 20px;
111
- }
112
- ```
113
- </details>
114
-
115
- index.ts ▼
116
- ```typescript
117
- import template from './index.html'
118
- import style from './index.css'
119
- @Sim()
120
- @Router({
121
- path: '',
122
- route: {
123
- '/': Home,
124
- '/user': User
125
- }
126
- })
127
- @Component({
128
- template,
129
- styles: [style]
130
- })
131
- export class Index implements RouterAction {
132
- child?: any;
133
- async canActivate(url: any, module: any) {
134
- this.child = module;
135
- }
136
- }
137
-
138
- const config = new SimFrontOption(window).setUrlType(UrlType.hash);
139
- const simpleApplication = new SimpleBootFront(Index, config);
140
- simpleApplication.run();
141
- ```
142
-
143
- ## Decorator
144
- <details>
145
- <summary>@Sim<strong>🔻(click)</strong></summary>
146
-
147
- Objects managed by the SimpleBootFront framework
148
- - parameter: SimConfig {schema: string}
149
-
150
- ```typescript
151
- @Sim({scheme: 'index'})
152
- ```
153
- </details>
154
-
155
-
156
- <details>
157
- <summary>@Component<strong>🔻(click)</strong></summary>
158
-
159
-
160
- ```html
161
- <!--template.html-->
162
- <h1>${this.title}</h1>
163
- <div>#innerHTML#</div>
164
- ```
165
- ```typescript
166
- import template from './index.html'
167
- import style from './index.css'
168
- @Sim()
169
- @Component({
170
- selector: 'index', // default class name LowerCase
171
- template,
172
- styles: [style]
173
- })
174
- export class Index {
175
- public title = ''
176
- public setData(title: string) {
177
- this.title = title;
178
- }
179
- }
180
- ```
181
- ### using
182
- ```typescript
183
- constructor(index: Index){...}
184
- ```
185
- ```html
186
- <index></index>
187
- <!-- dr-set: $index.setData('data'); $element, $innerHTML, $attributes -->
188
- <index dr-set="$index.setData('hello component')">
189
- <ul>
190
- <li>content</li>
191
- </ul>
192
- </index>
193
- ```
194
- </details>
195
-
196
- <details>
197
- <summary>@Router<strong>🔻(click)</strong></summary>
198
-
199
- ```typescript
200
- import template from './index.html'
201
- import style from './index.css'
202
- @Sim()
203
- @Router({
204
- path: '',
205
- route: {
206
- '/': Home,
207
- '/user': User,
208
- '/user/{id}': UserDetail
209
- }
210
- })
211
- @Component({
212
- template,
213
- styles: [style]
214
- })
215
- export class Index implements RouterAction {
216
- child?: any;
217
- canActivate(url: any, module: any): void {
218
- this.child = module;
219
- }
220
- }
221
- ```
222
-
223
- ### activeRoute
224
- ```typescript
225
- constructor(routerManager: RouterManager){
226
- // get path data
227
- routerManager.activeRouterModule.pathData.id; // /user/:id
228
- }
229
- ```
230
-
231
- ### component include
232
- ```html
233
- <route component="this.child"></route>
234
- ```
235
-
236
-
237
- ### router option
238
- - attribute
239
- - **router-active-class**: url === href attribute => class add (a-classname, b-classname)
240
- - value: add and remove class name
241
- - **router-inactive-class**: url !== href attribute => class add (a-classname, b-classname)
242
- - value: add and remove class name
243
- ```html
244
- <a router-link="/home" router-active-class="active" router-inactive-class="inactive">home</a>
245
- ```
246
- - **router-link**:
247
- - value: router link
248
-
249
- </details>
250
-
251
- <details>
252
- <summary>@Script<strong>🔻(click)</strong></summary>
253
-
254
- ```typescript
255
- @Sim({scheme: 'i18nScript'})
256
- @Script({
257
- name: 'i18n'
258
- })
259
- export class I18nScript extends ScriptRunnable {
260
- public language?: Language;
261
- constructor(public i18nService: I18nService) {
262
- super();
263
- i18nService.subject.subscribe(it => {
264
- this.language = it;
265
- this.render(); // <-- ref target rerender
266
- })
267
- }
268
- run(key: string): any {
269
- return this.language?.defaultData?.[key] ?? key;
270
- }
271
- }
272
- ```
273
- ### using script
274
- ```typescript
275
- counstructor(i18nScript: I18nScript) {...}
276
- counstructor(scriptService: ScriptService) {
277
- const i18nScript = scriptService.getScript('i18n');
278
- }
279
- ```
280
- ```html
281
- <div>${$scripts.i18n('Get Locale JSON')}</div>
282
- <div dr-if="$scripts.i18n('Get Locale JSON') === 'wow'"> is wow</div>
283
- ```
284
-
285
- </details>
286
-
287
- <details>
288
- <summary>@PostConstruct<strong>🔻(click)</strong></summary>
289
-
290
- Methods that you run for a separate initialization operation after the object is created
291
-
292
- ```typescript
293
- @PostConstruct
294
- post(projectService: ProjectService) {
295
- console.log('post Construct and dependency injection')
296
- }
297
- ```
298
- </details>
299
-
300
-
301
- <details>
302
- <summary>@After, @Before (AOP)<strong>🔻(click)</strong></summary>
303
-
304
- ```typescript
305
- fire($event: MouseEvent, view: View<Element>) {
306
- console.log('fire method')
307
- this.data = RandomUtils.random(0, 100);
308
- }
309
-
310
- @Before({property: 'fire'})
311
- before(obj: any, protoType: Function) {
312
- console.log('before', obj, protoType)
313
- }
314
-
315
- @After({property: 'fire'})
316
- after(obj: any, protoType: Function) {
317
- console.log('after', obj, protoType)
318
- }
319
- ```
320
- </details>
321
-
322
- <details>
323
- <summary>@ExceptionHandler<strong>🔻(click)</strong></summary>
324
-
325
- ```typescript
326
- @ExceptionHandler(TypeError)
327
- public exceptionTypeError(e: TypeError) {
328
- console.log('TypeError exception:')
329
- }
330
-
331
- @ExceptionHandler(SimError)
332
- public exception1(e: SimError) {
333
- console.log('SimError exception:')
334
- }
335
-
336
- @ExceptionHandler(RouterError)
337
- public exception3(e: RouterError) {
338
- console.log('NotFountRoute exception:')
339
- }
340
-
341
- @ExceptionHandler(SimNoSuch)
342
- public exception2(e: SimNoSuch) {
343
- console.log('NoSuchSim exception:')
344
- }
345
- ```
346
- </details>
347
-
348
-
349
- # Framework Core (simple-boot-core)
350
- [![npm version](https://img.shields.io/badge/-npm-black?logo=npm)](https://www.npmjs.com/package/simple-boot-core) [![Github](https://img.shields.io/badge/-github-black?logo=github)](https://github.com/visualkhh/simple-boot-core)
351
- * Object management.
352
- * Dependency Injection (DI)
353
- * Life cycle provided.
354
- * Aspect Oriented Programming (AOP)
355
- * ExceptionHandler (Global or Local)
356
- * Router System
357
- * Intent Event System
358
-
359
-
360
- # View template engine (dom-render)
361
- [![npm version](https://img.shields.io/badge/-npm-black?logo=npm)](https://www.npmjs.com/package/dom-render) [![Github](https://img.shields.io/badge/-github-black?logo=github)](https://github.com/visualkhh/dom-render)
362
- * view template engine
363
- * Dom control and reorder and render
364
- * all internal variables are managed by proxy. (DomRenderProxy)
365
-
366
- ----
367
-
368
-
369
-
370
- # LifeCycle
371
- ## Module LifeCycle interface
372
- * LifeCycle
373
- - onCreate(): Sim onCreate just one call
374
- * OnChangedRender
375
- - onChangedRender(): change rended in module event
376
- * OnFinish
377
- - onFinish(): lifecycle finish event
378
- * OnInit
379
- - onInit(): module load event
380
- * OnDestroy
381
- - onDestroy(): module destroy event
382
- * OnInitedChild
383
- - onInitedChild(): module and child module inited event
384
-
385
- ----
386
- # License
387
- * MIT
388
- * visualkhh@gmail.com
1
+ ![Single Page Application Framworks](assets/banner.png)
2
+ ![typescript](https://img.shields.io/badge/-typescript-black?logo=typescript) [![npm](https://img.shields.io/badge/-npm-black?logo=npm)](https://www.npmjs.com/package/simple-boot-front) [![license](https://img.shields.io/badge/license-MIT-green)](LICENSE.md) [![Chat](https://img.shields.io/badge/discord-20%20online-brightgreen?logo=discord)](https://discord.gg/PW56dpns) [![Github](https://img.shields.io/badge/-github-black?logo=github)](https://github.com/visualkhh/simple-boot-front)
3
+
4
+ **Our primary goals are**
5
+ * Single Page Application Framworks for Web
6
+ * Provide a radically faster and widely accessible getting started experience for all front end.
7
+
8
+ ### dependencies
9
+ * dom-render [![npm](https://img.shields.io/badge/-npm-black?logo=npm)](https://www.npmjs.com/package/dom-render)
10
+ * simple-boot-core [![npm](https://img.shields.io/badge/-npm-black?logo=npm)](https://www.npmjs.com/package/simple-boot-core)
11
+
12
+
13
+ # [📄 introduction page 🔗](https://simple-boot-front.github.io)
14
+ - [https://simple-boot-front.github.io](https://simple-boot-front.github.io)
15
+
16
+
17
+ ---
18
+ # 🚀 Quick start cli
19
+ ```shell
20
+ npm init simple-boot-front projectname
21
+ cd projectname
22
+ npm start
23
+ # open browser: http://localhost:4500
24
+ ```
25
+
26
+ # 😃 examples, templates
27
+ - [templates](./templates)
28
+ - [examples](./examples)
29
+
30
+ # directory structure
31
+ ```
32
+ ┌─ assets
33
+ ├─ dist (out put directory)
34
+ ├─ src (source)
35
+ │ ├─ pages (your pages)
36
+ │ │ ├ home.ts (sample page)
37
+ │ │ └ user.ts (sample page)
38
+ │ ├─ index.css (index route page css)
39
+ │ ├─ index.html (index route page template)
40
+ │ └─ index.ts (simple-boot-fornt start and route point)
41
+ ├─ types (typescript type)
42
+ │ └ index.d.ts (type definition)
43
+ ├─ index.html start (point html)
44
+ ├─ package.json (project config)
45
+ ├─ rollup.config.js (rollup bundler config)
46
+ └─ tsconfig.json (typescript config)
47
+ ```
48
+
49
+ ## source
50
+ * simple-boot-front start and route point (set: ts, html, css)
51
+ <details>
52
+ <summary>pages/home.ts<strong>🔻(click)</strong></summary>
53
+
54
+ ```typescript
55
+ @Sim()
56
+ @Component({
57
+ template: '<div>home</div>'
58
+ })
59
+ export class Home {
60
+
61
+ }
62
+ ```
63
+ </details>
64
+ <details>
65
+ <summary>pages/user.ts<strong>🔻(click)</strong></summary>
66
+
67
+ ```typescript
68
+ @Sim()
69
+ @Component({
70
+ template: '<div>user</div>'
71
+ })
72
+ export class User {
73
+
74
+ }
75
+ ```
76
+ </details>
77
+ <details>
78
+ <summary>index.html<strong>🔻(click)</strong></summary>
79
+
80
+ ```html
81
+ <header>
82
+ <nav>
83
+ <ul>
84
+ <li>
85
+ <button router-link="/">home</button>
86
+ </li>
87
+ <li>
88
+ <button router-link="/user">user</button>
89
+ </li>
90
+ </ul>
91
+ </nav>
92
+
93
+ </header>
94
+ <main>
95
+ <router component="this.child"></router>
96
+ </main>
97
+ <footer>
98
+ footer
99
+ </footer>
100
+ ```
101
+ </details>
102
+
103
+ <details>
104
+ <summary>index.css<strong>🔻(click)</strong></summary>
105
+
106
+ ```css
107
+ header, footer, main {
108
+ border: #333333 1px solid;
109
+ padding: 20px;
110
+ margin: 20px;
111
+ }
112
+ ```
113
+ </details>
114
+
115
+ index.ts ▼
116
+ ```typescript
117
+ import template from './index.html'
118
+ import style from './index.css'
119
+ @Sim()
120
+ @Router({
121
+ path: '',
122
+ route: {
123
+ '/': Home,
124
+ '/user': User
125
+ }
126
+ })
127
+ @Component({
128
+ template,
129
+ styles: [style]
130
+ })
131
+ export class Index implements RouterAction {
132
+ child?: any;
133
+ async canActivate(url: any, module: any) {
134
+ this.child = module;
135
+ }
136
+ }
137
+
138
+ const config = new SimFrontOption(window).setUrlType(UrlType.hash);
139
+ const simpleApplication = new SimpleBootFront(Index, config);
140
+ simpleApplication.run();
141
+ ```
142
+
143
+ ## Decorator
144
+ <details>
145
+ <summary>@Sim<strong>🔻(click)</strong></summary>
146
+
147
+ Objects managed by the SimpleBootFront framework
148
+ - parameter: SimConfig {schema: string}
149
+
150
+ ```typescript
151
+ @Sim({scheme: 'index'})
152
+ ```
153
+ </details>
154
+
155
+
156
+ <details>
157
+ <summary>@Component<strong>🔻(click)</strong></summary>
158
+
159
+
160
+ ```html
161
+ <!--template.html-->
162
+ <h1>${this.title}</h1>
163
+ <div>#innerHTML#</div>
164
+ ```
165
+ ```typescript
166
+ import template from './index.html'
167
+ import style from './index.css'
168
+ @Sim()
169
+ @Component({
170
+ selector: 'index', // default class name LowerCase
171
+ template,
172
+ styles: [style]
173
+ })
174
+ export class Index {
175
+ public title = ''
176
+ public setData(title: string) {
177
+ this.title = title;
178
+ }
179
+ }
180
+ ```
181
+ ### using
182
+ ```typescript
183
+ constructor(index: Index){...}
184
+ ```
185
+ ```html
186
+ <index></index>
187
+ <!-- dr-set: $index.setData('data'); $element, $innerHTML, $attributes -->
188
+ <index dr-set="$index.setData('hello component')">
189
+ <ul>
190
+ <li>content</li>
191
+ </ul>
192
+ </index>
193
+ ```
194
+ </details>
195
+
196
+ <details>
197
+ <summary>@Router<strong>🔻(click)</strong></summary>
198
+
199
+ ```typescript
200
+ import template from './index.html'
201
+ import style from './index.css'
202
+ @Sim()
203
+ @Router({
204
+ path: '',
205
+ route: {
206
+ '/': Home,
207
+ '/user': User,
208
+ '/user/{id}': UserDetail
209
+ }
210
+ })
211
+ @Component({
212
+ template,
213
+ styles: [style]
214
+ })
215
+ export class Index implements RouterAction {
216
+ child?: any;
217
+ canActivate(url: any, module: any): void {
218
+ this.child = module;
219
+ }
220
+ }
221
+ ```
222
+
223
+ ### activeRoute
224
+ ```typescript
225
+ constructor(routerManager: RouterManager){
226
+ // get path data
227
+ routerManager.activeRouterModule.pathData.id; // /user/:id
228
+ }
229
+ ```
230
+
231
+ ### component include
232
+ ```html
233
+ <route component="this.child"></route>
234
+ ```
235
+
236
+
237
+ ### router option
238
+ - attribute
239
+ - **router-active-class**: url === href attribute => class add (a-classname, b-classname)
240
+ - value: add and remove class name
241
+ - **router-inactive-class**: url !== href attribute => class add (a-classname, b-classname)
242
+ - value: add and remove class name
243
+ ```html
244
+ <a router-link="/home" router-active-class="active" router-inactive-class="inactive">home</a>
245
+ ```
246
+ - **router-link**:
247
+ - value: router link
248
+
249
+ </details>
250
+
251
+ <details>
252
+ <summary>@Script<strong>🔻(click)</strong></summary>
253
+
254
+ ```typescript
255
+ @Sim({scheme: 'i18nScript'})
256
+ @Script({
257
+ name: 'i18n'
258
+ })
259
+ export class I18nScript extends ScriptRunnable {
260
+ public language?: Language;
261
+ constructor(public i18nService: I18nService) {
262
+ super();
263
+ i18nService.subject.subscribe(it => {
264
+ this.language = it;
265
+ this.render(); // <-- ref target rerender
266
+ })
267
+ }
268
+ run(key: string): any {
269
+ return this.language?.defaultData?.[key] ?? key;
270
+ }
271
+ }
272
+ ```
273
+ ### using script
274
+ ```typescript
275
+ counstructor(i18nScript: I18nScript) {...}
276
+ counstructor(scriptService: ScriptService) {
277
+ const i18nScript = scriptService.getScript('i18n');
278
+ }
279
+ ```
280
+ ```html
281
+ <div>${$scripts.i18n('Get Locale JSON')}</div>
282
+ <div dr-if="$scripts.i18n('Get Locale JSON') === 'wow'"> is wow</div>
283
+ ```
284
+
285
+ </details>
286
+
287
+ <details>
288
+ <summary>@PostConstruct<strong>🔻(click)</strong></summary>
289
+
290
+ Methods that you run for a separate initialization operation after the object is created
291
+
292
+ ```typescript
293
+ @PostConstruct
294
+ post(projectService: ProjectService) {
295
+ console.log('post Construct and dependency injection')
296
+ }
297
+ ```
298
+ </details>
299
+
300
+
301
+ <details>
302
+ <summary>@After, @Before (AOP)<strong>🔻(click)</strong></summary>
303
+
304
+ ```typescript
305
+ fire($event: MouseEvent, view: View<Element>) {
306
+ console.log('fire method')
307
+ this.data = RandomUtils.random(0, 100);
308
+ }
309
+
310
+ @Before({property: 'fire'})
311
+ before(obj: any, protoType: Function) {
312
+ console.log('before', obj, protoType)
313
+ }
314
+
315
+ @After({property: 'fire'})
316
+ after(obj: any, protoType: Function) {
317
+ console.log('after', obj, protoType)
318
+ }
319
+ ```
320
+ </details>
321
+
322
+ <details>
323
+ <summary>@ExceptionHandler<strong>🔻(click)</strong></summary>
324
+
325
+ ```typescript
326
+ @ExceptionHandler(TypeError)
327
+ public exceptionTypeError(e: TypeError) {
328
+ console.log('TypeError exception:')
329
+ }
330
+
331
+ @ExceptionHandler(SimError)
332
+ public exception1(e: SimError) {
333
+ console.log('SimError exception:')
334
+ }
335
+
336
+ @ExceptionHandler(RouterError)
337
+ public exception3(e: RouterError) {
338
+ console.log('NotFountRoute exception:')
339
+ }
340
+
341
+ @ExceptionHandler(SimNoSuch)
342
+ public exception2(e: SimNoSuch) {
343
+ console.log('NoSuchSim exception:')
344
+ }
345
+ ```
346
+ </details>
347
+
348
+
349
+ # Framework Core (simple-boot-core)
350
+ [![npm version](https://img.shields.io/badge/-npm-black?logo=npm)](https://www.npmjs.com/package/simple-boot-core) [![Github](https://img.shields.io/badge/-github-black?logo=github)](https://github.com/visualkhh/simple-boot-core)
351
+ * Object management.
352
+ * Dependency Injection (DI)
353
+ * Life cycle provided.
354
+ * Aspect Oriented Programming (AOP)
355
+ * ExceptionHandler (Global or Local)
356
+ * Router System
357
+ * Intent Event System
358
+
359
+
360
+ # View template engine (dom-render)
361
+ [![npm version](https://img.shields.io/badge/-npm-black?logo=npm)](https://www.npmjs.com/package/dom-render) [![Github](https://img.shields.io/badge/-github-black?logo=github)](https://github.com/visualkhh/dom-render)
362
+ * view template engine
363
+ * Dom control and reorder and render
364
+ * all internal variables are managed by proxy. (DomRenderProxy)
365
+
366
+ ----
367
+
368
+
369
+
370
+ # LifeCycle
371
+ ## Module LifeCycle interface
372
+ * LifeCycle
373
+ - onCreate(): Sim onCreate just one call
374
+ * OnChangedRender
375
+ - onChangedRender(): change rended in module event
376
+ * OnFinish
377
+ - onFinish(): lifecycle finish event
378
+ * OnInit
379
+ - onInit(): module load event
380
+ * OnDestroy
381
+ - onDestroy(): module destroy event
382
+ * OnInitedChild
383
+ - onInitedChild(): module and child module inited event
384
+
385
+ ----
386
+ # License
387
+ * MIT
388
+ * visualkhh@gmail.com