cabloy 5.1.61 → 5.1.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/cabloy-backend-scaffold/SKILL.md +2 -0
- package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +1 -1
- package/.claude/skills/cabloy-domain-planning/SKILL.md +212 -0
- package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +2 -0
- package/CHANGELOG.md +42 -0
- package/CLAUDE.md +1 -0
- package/cabloy-docs/.vitepress/config.mjs +158 -12
- package/cabloy-docs/ai/docs-skills-rules-mapping.md +8 -0
- package/cabloy-docs/ai/future-skill-roadmap.md +2 -0
- package/cabloy-docs/ai/skills.md +1 -0
- package/cabloy-docs/backend/backend-contract-emission-output-inspection.md +189 -0
- package/cabloy-docs/backend/backend-contract-emission-source-reading-map.md +160 -0
- package/cabloy-docs/backend/backend-contract-emission-specimen.md +170 -0
- package/cabloy-docs/backend/backend-resource-module-contract-chain.md +323 -0
- package/cabloy-docs/backend/backend-source-reading-debug-checklist.md +173 -0
- package/cabloy-docs/backend/backend-source-reading-roadmap.md +129 -0
- package/cabloy-docs/backend/backend-source-reading-verify-playbook.md +166 -0
- package/cabloy-docs/backend/bean-scene-authoring.md +4 -4
- package/cabloy-docs/backend/broadcast-guide.md +3 -3
- package/cabloy-docs/backend/cli.md +20 -11
- package/cabloy-docs/backend/config-guide.md +4 -4
- package/cabloy-docs/backend/controller-aop-guide.md +10 -10
- package/cabloy-docs/backend/controller-guide.md +12 -2
- package/cabloy-docs/backend/crud-workflow.md +7 -3
- package/cabloy-docs/backend/dto-guide.md +12 -2
- package/cabloy-docs/backend/dto-infer-generation.md +201 -25
- package/cabloy-docs/backend/election-guide.md +2 -2
- package/cabloy-docs/backend/entity-guide.md +12 -3
- package/cabloy-docs/backend/error-guide.md +3 -3
- package/cabloy-docs/backend/event-guide.md +4 -4
- package/cabloy-docs/backend/external-aop-guide.md +2 -2
- package/cabloy-docs/backend/field-indexes.md +9 -3
- package/cabloy-docs/backend/foundation.md +8 -8
- package/cabloy-docs/backend/i18n-guide.md +6 -6
- package/cabloy-docs/backend/internal-aop-guide.md +2 -2
- package/cabloy-docs/backend/introduction.md +13 -0
- package/cabloy-docs/backend/migration-and-changes.md +3 -3
- package/cabloy-docs/backend/model-guide.md +16 -6
- package/cabloy-docs/backend/openapi-guide.md +3 -0
- package/cabloy-docs/backend/queue-guide.md +3 -3
- package/cabloy-docs/backend/redlock-guide.md +2 -2
- package/cabloy-docs/backend/schedule-guide.md +2 -2
- package/cabloy-docs/backend/scripts.md +8 -0
- package/cabloy-docs/backend/serialization-guide.md +2 -2
- package/cabloy-docs/backend/service-guide.md +18 -9
- package/cabloy-docs/backend/startup-guide.md +5 -5
- package/cabloy-docs/backend/status-guide.md +7 -7
- package/cabloy-docs/backend/unit-testing.md +3 -3
- package/cabloy-docs/backend/vona-source-reading-map.md +157 -0
- package/cabloy-docs/backend/websocket-protocol-guide.md +5 -5
- package/cabloy-docs/backend/websocket-usage-guide.md +15 -8
- package/cabloy-docs/frontend/a-model-under-the-hood.md +281 -0
- package/cabloy-docs/frontend/a-openapi-under-the-hood.md +248 -0
- package/cabloy-docs/frontend/a-router-guide.md +307 -0
- package/cabloy-docs/frontend/api-guide.md +4 -4
- package/cabloy-docs/frontend/api-schema-guide.md +1 -0
- package/cabloy-docs/frontend/app-startup-guide.md +7 -4
- package/cabloy-docs/frontend/bean-scene-authoring.md +1 -1
- package/cabloy-docs/frontend/behavior-guide.md +16 -16
- package/cabloy-docs/frontend/cli.md +5 -5
- package/cabloy-docs/frontend/command-scene-authoring.md +17 -8
- package/cabloy-docs/frontend/component-guide.md +5 -5
- package/cabloy-docs/frontend/component-props-guide.md +1 -1
- package/cabloy-docs/frontend/component-v-model-guide.md +2 -2
- package/cabloy-docs/frontend/filter-query-select-data-flow-guide.md +260 -0
- package/cabloy-docs/frontend/form-guide.md +19 -28
- package/cabloy-docs/frontend/form-scene-to-page-meta-guide.md +303 -0
- package/cabloy-docs/frontend/foundation.md +10 -6
- package/cabloy-docs/frontend/frontend-source-reading-roadmap.md +249 -0
- package/cabloy-docs/frontend/generated-contract-consumption-debug-checklist.md +190 -0
- package/cabloy-docs/frontend/generated-contract-consumption-entry-branch.md +205 -0
- package/cabloy-docs/frontend/generated-contract-consumption-list-branch.md +157 -0
- package/cabloy-docs/frontend/generated-contract-consumption-specimen.md +203 -0
- package/cabloy-docs/frontend/generated-contract-consumption-verify-playbook.md +189 -0
- package/cabloy-docs/frontend/generic-component-guide.md +1 -1
- package/cabloy-docs/frontend/introduction.md +29 -7
- package/cabloy-docs/frontend/model-architecture.md +38 -2
- package/cabloy-docs/frontend/model-resource-cookbook.md +11 -8
- package/cabloy-docs/frontend/model-resource-internals-deep-dive.md +238 -0
- package/cabloy-docs/frontend/model-resource-owner-pattern.md +22 -2
- package/cabloy-docs/frontend/model-resource-usage-guide.md +22 -6
- package/cabloy-docs/frontend/model-state-guide.md +12 -9
- package/cabloy-docs/frontend/module-scope.md +8 -8
- package/cabloy-docs/frontend/modules-and-suites.md +2 -1
- package/cabloy-docs/frontend/navigation-guards-guide.md +7 -0
- package/cabloy-docs/frontend/openapi-sdk-guide.md +12 -4
- package/cabloy-docs/frontend/page-guide.md +9 -9
- package/cabloy-docs/frontend/page-meta-guide.md +466 -0
- package/cabloy-docs/frontend/page-params-guide.md +3 -3
- package/cabloy-docs/frontend/page-query-guide.md +2 -2
- package/cabloy-docs/frontend/page-route-guide.md +6 -0
- package/cabloy-docs/frontend/permission-formscene-action-visibility-guide.md +263 -0
- package/cabloy-docs/frontend/quickstart.md +14 -2
- package/cabloy-docs/frontend/resource-entry-page-deep-dive.md +271 -0
- package/cabloy-docs/frontend/resource-list-page-deep-dive.md +279 -0
- package/cabloy-docs/frontend/rest-resource-source-reading-map.md +522 -0
- package/cabloy-docs/frontend/rest-resource-under-the-hood.md +622 -0
- package/cabloy-docs/frontend/root-behaviors-guide.md +282 -0
- package/cabloy-docs/frontend/route-alias-guide.md +6 -0
- package/cabloy-docs/frontend/router-stack-guide.md +229 -0
- package/cabloy-docs/frontend/router-tabs-introduction.md +26 -3
- package/cabloy-docs/frontend/router-tabs-layout-integration.md +367 -0
- package/cabloy-docs/frontend/router-tabs-mechanism.md +6 -0
- package/cabloy-docs/frontend/router-tabs-route-meta-cookbook.md +7 -0
- package/cabloy-docs/frontend/router-tabs-vs-stack.md +167 -0
- package/cabloy-docs/frontend/router-view-hosts-guide.md +450 -0
- package/cabloy-docs/frontend/server-data.md +2 -1
- package/cabloy-docs/frontend/system-startup-guide.md +2 -2
- package/cabloy-docs/frontend/table-action-visibility-permission-flow-guide.md +263 -0
- package/cabloy-docs/frontend/table-cell-cookbook.md +568 -0
- package/cabloy-docs/frontend/table-guide.md +373 -0
- package/cabloy-docs/frontend/table-resource-crud-cookbook.md +496 -0
- package/cabloy-docs/frontend/zova-app-guide.md +251 -0
- package/cabloy-docs/frontend/zova-form-source-reading-map.md +7 -9
- package/cabloy-docs/frontend/zova-form-under-the-hood.md +5 -0
- package/cabloy-docs/frontend/zova-router-under-the-hood.md +561 -0
- package/cabloy-docs/frontend/zova-source-reading-map.md +101 -7
- package/cabloy-docs/frontend/zova-table-controller-render-supplement.md +225 -0
- package/cabloy-docs/frontend/zova-table-source-reading-map.md +317 -0
- package/cabloy-docs/frontend/zova-table-under-the-hood.md +532 -0
- package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions-debug-checklist.md +245 -0
- package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions-source-reading-map.md +139 -0
- package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions-verify-playbook.md +248 -0
- package/cabloy-docs/fullstack/backend-metadata-to-frontend-table-actions.md +511 -0
- package/cabloy-docs/fullstack/contract-loop-playbook.md +8 -2
- package/cabloy-docs/fullstack/edition-collaboration-differences.md +6 -0
- package/cabloy-docs/fullstack/frontend-metadata-to-backend.md +181 -48
- package/cabloy-docs/fullstack/introduction.md +3 -0
- package/cabloy-docs/fullstack/openapi-to-sdk.md +116 -2
- package/cabloy-docs/fullstack/suites-and-modules.md +333 -0
- package/cabloy-docs/fullstack/tutorial-1-first-module.md +3 -0
- package/cabloy-docs/fullstack/tutorial-2-first-crud.md +4 -0
- package/cabloy-docs/fullstack/tutorial-3-frontend-metadata-sharing.md +4 -0
- package/cabloy-docs/fullstack/tutorial-4-custom-level-renderers.md +31 -19
- package/cabloy-docs/fullstack/tutorial-5-backend-contract-sharing.md +5 -0
- package/cabloy-docs/fullstack/tutorial-6-one-contract-four-uses.md +4 -0
- package/cabloy-docs/fullstack/tutorials-overview.md +1 -1
- package/cabloy-docs/reference/bean-scene-boilerplates.md +13 -13
- package/cabloy-docs/reference/package-map.md +4 -3
- package/package.json +1 -1
- package/vona/pnpm-lock.yaml +22 -258
- package/vona/src/suite/a-training/modules/training-student/package.json +53 -0
- package/vona/src/suite/a-training/modules/training-student/src/.metadata/index.ts +400 -0
- package/vona/src/suite/a-training/modules/training-student/src/.metadata/locales.ts +18 -0
- package/vona/src/suite/a-training/modules/training-student/src/.metadata/this.ts +2 -0
- package/vona/src/suite/a-training/modules/training-student/src/bean/meta.index.ts +12 -0
- package/vona/src/suite/a-training/modules/training-student/src/bean/meta.version.ts +21 -0
- package/vona/src/suite/a-training/modules/training-student/src/bean/ssrMenu.student.ts +29 -0
- package/vona/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +15 -0
- package/vona/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +15 -0
- package/vona/src/suite/a-training/modules/training-student/src/controller/student.ts +74 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentCreate.tsx +28 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectReq.tsx +44 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectRes.tsx +11 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentSelectResItem.tsx +45 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentSummary.tsx +42 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentUpdate.tsx +28 -0
- package/vona/src/suite/a-training/modules/training-student/src/dto/studentView.tsx +25 -0
- package/vona/src/suite/a-training/modules/training-student/src/entity/student.tsx +84 -0
- package/vona/src/suite/a-training/modules/training-student/src/index.ts +2 -0
- package/vona/src/suite/a-training/modules/training-student/src/model/student.ts +10 -0
- package/vona/src/suite/a-training/modules/training-student/src/service/student.ts +57 -0
- package/vona/src/suite/a-training/modules/training-student/test/student.test.ts +173 -0
- package/vona/src/suite/a-training/modules/training-student/tsconfig.build.json +11 -0
- package/vona/src/suite/a-training/modules/training-student/tsconfig.json +7 -0
- package/vona/src/suite/a-training/package.json +12 -0
- package/vona/src/suite/a-training/tsconfig.base.json +4 -0
- package/vona/src/suite/a-training/tsconfig.json +10 -0
- package/zova/packages-zova/zova/package.json +2 -2
- package/zova/pnpm-lock.yaml +406 -680
- package/zova/src/suite/a-training/modules/training-student/cli/openapi.config.ts +9 -0
- package/zova/src/suite/a-training/modules/training-student/package.json +52 -0
- package/zova/src/suite/a-training/modules/training-student/src/.metadata/component/formFieldLevel.ts +31 -0
- package/zova/src/suite/a-training/modules/training-student/src/.metadata/index.ts +258 -0
- package/zova/src/suite/a-training/modules/training-student/src/.metadata/locales.ts +7 -0
- package/zova/src/suite/a-training/modules/training-student/src/.metadata/this.ts +2 -0
- package/zova/src/suite/a-training/modules/training-student/src/api/openapi/baseURL.ts +5 -0
- package/zova/src/suite/a-training/modules/training-student/src/api/openapi/index.ts +3 -0
- package/zova/src/suite/a-training/modules/training-student/src/api/openapi/schemas.ts +196 -0
- package/zova/src/suite/a-training/modules/training-student/src/api/openapi/types.ts +4146 -0
- package/zova/src/suite/a-training/modules/training-student/src/api/trainingStudent.ts +151 -0
- package/zova/src/suite/a-training/modules/training-student/src/apiSchema/trainingStudent.ts +43 -0
- package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionDeleteForce.tsx +51 -0
- package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.actionSummary.tsx +56 -0
- package/zova/src/suite/a-training/modules/training-student/src/bean/tableCell.level.tsx +63 -0
- package/zova/src/suite/a-training/modules/training-student/src/component/formFieldLevel/controller.tsx +117 -0
- package/zova/src/suite/a-training/modules/training-student/src/config/locale/en-us.ts +9 -0
- package/zova/src/suite/a-training/modules/training-student/src/config/locale/zh-cn.ts +9 -0
- package/zova/src/suite/a-training/modules/training-student/src/index.ts +2 -0
- package/zova/src/suite/a-training/modules/training-student/src/model/student.ts +42 -0
- package/zova/src/suite/a-training/modules/training-student/tsconfig.build.json +13 -0
- package/zova/src/suite/a-training/modules/training-student/tsconfig.json +5 -0
- package/zova/src/suite/a-training/package.json +12 -0
- package/zova/src/suite/a-training/tsconfig.base.json +4 -0
- package/zova/src/suite/a-training/tsconfig.json +4 -0
- package/zova/src/suite/cabloy-basic/modules/basic-select/src/component/formFieldSelect/controller.tsx +29 -7
- package/zova/src/suite/cabloy-basic/modules/basic-select/src/component/select/controller.tsx +34 -11
- package/zova/src/suite-vendor/a-zova/modules/a-table/package.json +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-table/src/component/table/controller.tsx +3 -3
- package/zova/src/suite-vendor/a-zova/modules/a-table/src/lib/tableCell.ts +1 -1
- package/zova/src/suite-vendor/a-zova/package.json +2 -2
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
# Zova App Guide
|
|
2
|
+
|
|
3
|
+
This guide explains the root app-shell module in Zova through the current public Cabloy Basic source:
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
zova/src/suite-vendor/a-zova/modules/a-app
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Use this page when you want to understand:
|
|
10
|
+
|
|
11
|
+
- what `a-app` is responsible for
|
|
12
|
+
- what `a-app` is **not** responsible for
|
|
13
|
+
- how the root app wrapper reaches the routed tree
|
|
14
|
+
- where app-wide behavior wrapping enters the runtime
|
|
15
|
+
- which files to read first when tracing the source
|
|
16
|
+
|
|
17
|
+
## Why this page exists
|
|
18
|
+
|
|
19
|
+
Several other frontend guides already explain routing, startup, behavior, and SSR.
|
|
20
|
+
|
|
21
|
+
What they do not explain directly is the thin root module that connects those concerns at the app host level.
|
|
22
|
+
|
|
23
|
+
That root module is `a-app`.
|
|
24
|
+
|
|
25
|
+
In the current Basic source, `a-app` is not a feature module full of pages or business services. It is a small app-shell module whose main job is to host the root app controller, apply app-level metadata, initialize app-wide behaviors, and render the routed tree.
|
|
26
|
+
|
|
27
|
+
## The shortest accurate mental model
|
|
28
|
+
|
|
29
|
+
A practical mental model is:
|
|
30
|
+
|
|
31
|
+
1. `a-app` exposes the root app component surface
|
|
32
|
+
2. `ZApp` mounts the root controller
|
|
33
|
+
3. `ControllerApp` initializes app meta and root behaviors
|
|
34
|
+
4. `ControllerApp.render()` returns the routed tree through `RouterView`
|
|
35
|
+
5. that routed tree is wrapped by `BeanBehaviorsHolder` so app-wide behaviors can participate around it
|
|
36
|
+
|
|
37
|
+
That means `a-app` is the root app host, not the owner of every frontend concern.
|
|
38
|
+
|
|
39
|
+
## What `a-app` is
|
|
40
|
+
|
|
41
|
+
In the current Basic source, `a-app` is mainly these five things:
|
|
42
|
+
|
|
43
|
+
- a **module integration surface** through generated metadata
|
|
44
|
+
- a **root component wrapper** through `ZApp`
|
|
45
|
+
- an **app controller** through `ControllerApp`
|
|
46
|
+
- a **root behavior host** through `BeanBehaviorsHolder`
|
|
47
|
+
- a **routed-content host** through `RouterView`
|
|
48
|
+
|
|
49
|
+
Those roles are enough to make it a real architectural boundary even though the module is small.
|
|
50
|
+
|
|
51
|
+
## What `a-app` is not
|
|
52
|
+
|
|
53
|
+
It is equally important to avoid over-assigning responsibilities to `a-app`.
|
|
54
|
+
|
|
55
|
+
`a-app` does **not** itself define:
|
|
56
|
+
|
|
57
|
+
- page route records
|
|
58
|
+
- page controllers
|
|
59
|
+
- model beans
|
|
60
|
+
- standalone business services
|
|
61
|
+
- the actual layout implementations
|
|
62
|
+
- the full SSR orchestration flow
|
|
63
|
+
|
|
64
|
+
Those responsibilities belong to other routing, layout, model, service, and SSR layers.
|
|
65
|
+
|
|
66
|
+
So when you read `a-app`, read it as the root host that connects those systems, not as the place where all of them are authored.
|
|
67
|
+
|
|
68
|
+
## The core source-reading path
|
|
69
|
+
|
|
70
|
+
When reading `a-app`, use this order:
|
|
71
|
+
|
|
72
|
+
1. `zova/src/suite-vendor/a-zova/modules/a-app/src/.metadata/this.ts`
|
|
73
|
+
2. `zova/src/suite-vendor/a-zova/modules/a-app/src/.metadata/index.ts`
|
|
74
|
+
3. `zova/src/suite-vendor/a-zova/modules/a-app/src/.metadata/component/app.ts`
|
|
75
|
+
4. `zova/src/suite-vendor/a-zova/modules/a-app/src/component/app/controller.tsx`
|
|
76
|
+
5. `zova/src/suite-vendor/a-zova/modules/a-app/src/config/config.ts`
|
|
77
|
+
|
|
78
|
+
That order moves from module identity, to generated integration surface, to component wrapper, to runtime controller logic, to configuration hook points.
|
|
79
|
+
|
|
80
|
+
## What each source file clarifies
|
|
81
|
+
|
|
82
|
+
### `src/.metadata/this.ts`
|
|
83
|
+
|
|
84
|
+
This file gives the module identity quickly:
|
|
85
|
+
|
|
86
|
+
- module name is `a-app`
|
|
87
|
+
- module scope is exported as `ScopeModule`
|
|
88
|
+
|
|
89
|
+
Read this file first when you want to anchor the rest of the source path.
|
|
90
|
+
|
|
91
|
+
### `src/.metadata/index.ts`
|
|
92
|
+
|
|
93
|
+
This is the generated integration map for the module.
|
|
94
|
+
|
|
95
|
+
It shows that `a-app` contributes:
|
|
96
|
+
|
|
97
|
+
- the app controller registration
|
|
98
|
+
- the `ZApp` component export
|
|
99
|
+
- the module config typing
|
|
100
|
+
- the module scope typing
|
|
101
|
+
|
|
102
|
+
This file is the best single map of how the module enters the larger Zova container and component records.
|
|
103
|
+
|
|
104
|
+
### `src/.metadata/component/app.ts`
|
|
105
|
+
|
|
106
|
+
This file shows the public wrapper component:
|
|
107
|
+
|
|
108
|
+
- `ZApp` is defined with `defineComponent(...)`
|
|
109
|
+
- it calls `useController(ControllerApp, ...)`
|
|
110
|
+
- it exposes `controllerRef` as a controller-facing hook
|
|
111
|
+
|
|
112
|
+
The important idea is that `ZApp` is a thin wrapper whose main job is to mount the controller-oriented runtime path.
|
|
113
|
+
|
|
114
|
+
## `src/component/app/controller.tsx`
|
|
115
|
+
|
|
116
|
+
This is the real runtime center of the module.
|
|
117
|
+
|
|
118
|
+
Its main jobs are:
|
|
119
|
+
|
|
120
|
+
- call `$useMeta(...)` to set app-level document metadata
|
|
121
|
+
- initialize `BeanBehaviorsHolder`
|
|
122
|
+
- read root behaviors from `scope.config.behaviors`
|
|
123
|
+
- render the routed tree through `RouterView`
|
|
124
|
+
|
|
125
|
+
This is the file that shows the actual app-host responsibilities most clearly.
|
|
126
|
+
|
|
127
|
+
## `src/config/config.ts`
|
|
128
|
+
|
|
129
|
+
This file is small but important.
|
|
130
|
+
|
|
131
|
+
It exposes the module config surface for:
|
|
132
|
+
|
|
133
|
+
- `behaviors`
|
|
134
|
+
|
|
135
|
+
That matters because it shows that `a-app` is intentionally designed to receive app-wide behavior configuration from outside the module instead of hard-coding every root behavior locally.
|
|
136
|
+
|
|
137
|
+
## Runtime flow from `ZApp` to routed content
|
|
138
|
+
|
|
139
|
+
The shortest practical runtime flow is:
|
|
140
|
+
|
|
141
|
+
1. `ZApp` calls `useController(ControllerApp, ...)`
|
|
142
|
+
2. the framework creates and loads `ControllerApp`
|
|
143
|
+
3. `ControllerApp.__init__()` sets app-level meta through `$useMeta(...)`
|
|
144
|
+
4. `ControllerApp.__init__()` initializes `BeanBehaviorsHolder`
|
|
145
|
+
5. the holder reads app-wide behavior declarations from `scope.config.behaviors`
|
|
146
|
+
6. `ControllerApp.render()` returns behavior-wrapped `<RouterView />`
|
|
147
|
+
7. the routed page tree continues from the router and layout layers
|
|
148
|
+
|
|
149
|
+
This page stops at the root app-host boundary. For the deeper behavior-composition path behind `BeanBehaviorsHolder`, continue with [Root Behaviors Guide](/frontend/root-behaviors-guide).
|
|
150
|
+
|
|
151
|
+
## Relationship to routing
|
|
152
|
+
|
|
153
|
+
`a-app` does not define the page route records themselves.
|
|
154
|
+
|
|
155
|
+
Instead, it hosts the routed tree by rendering `RouterView`.
|
|
156
|
+
|
|
157
|
+
That means routing questions usually split into two layers:
|
|
158
|
+
|
|
159
|
+
- `a-app` as the root host that renders the routed content entry
|
|
160
|
+
- router and layout layers as the owners of route records, layout choice, guards, and routed-host behavior
|
|
161
|
+
|
|
162
|
+
Read together with:
|
|
163
|
+
|
|
164
|
+
- [Page Route Guide](/frontend/page-route-guide)
|
|
165
|
+
- [A-Router Guide](/frontend/a-router-guide)
|
|
166
|
+
- [Zova Router Under the Hood](/frontend/zova-router-under-the-hood)
|
|
167
|
+
- [Router View Hosts Guide](/frontend/router-view-hosts-guide)
|
|
168
|
+
|
|
169
|
+
## Relationship to behaviors
|
|
170
|
+
|
|
171
|
+
`a-app` is also the root behavior host in the current Basic source.
|
|
172
|
+
|
|
173
|
+
Because `ControllerApp` initializes `BeanBehaviorsHolder` from `scope.config.behaviors`, project or module-level code can extend the root app host by contributing behavior configuration.
|
|
174
|
+
|
|
175
|
+
A practical way to think about this is:
|
|
176
|
+
|
|
177
|
+
- `a-app` owns the root behavior hosting point
|
|
178
|
+
- other modules can contribute app-wide behavior declarations to that hosting point
|
|
179
|
+
|
|
180
|
+
Read together with:
|
|
181
|
+
|
|
182
|
+
- [Behavior Guide](/frontend/behavior-guide)
|
|
183
|
+
- [Root Behaviors Guide](/frontend/root-behaviors-guide)
|
|
184
|
+
|
|
185
|
+
## Relationship to startup
|
|
186
|
+
|
|
187
|
+
App startup and `a-app` are related, but they are not the same concept.
|
|
188
|
+
|
|
189
|
+
- **app startup** decides when the application lifecycle becomes operational
|
|
190
|
+
- **`a-app`** is the root app host component/controller path inside that operational application
|
|
191
|
+
|
|
192
|
+
That distinction helps avoid placing startup logic into the root app controller just because it feels globally visible.
|
|
193
|
+
|
|
194
|
+
Read together with:
|
|
195
|
+
|
|
196
|
+
- [App Startup Guide](/frontend/app-startup-guide)
|
|
197
|
+
- [System Startup Guide](/frontend/system-startup-guide)
|
|
198
|
+
|
|
199
|
+
## Relationship to SSR
|
|
200
|
+
|
|
201
|
+
`a-app` participates in the frontend runtime side of SSR because it is part of the application render tree.
|
|
202
|
+
|
|
203
|
+
But it is not the complete SSR orchestration layer.
|
|
204
|
+
|
|
205
|
+
In the broader SSR model:
|
|
206
|
+
|
|
207
|
+
- Vona owns request-level SSR orchestration
|
|
208
|
+
- the built frontend bundle provides the SSR entry
|
|
209
|
+
- Zova SSR runtime resolves and renders the frontend route tree
|
|
210
|
+
- `a-app` participates as part of that root render tree
|
|
211
|
+
|
|
212
|
+
Read together with:
|
|
213
|
+
|
|
214
|
+
- [SSR Architecture Overview](/frontend/ssr-architecture-overview)
|
|
215
|
+
|
|
216
|
+
## A compact interpretation of app-wide extension
|
|
217
|
+
|
|
218
|
+
When you need app-wide overlays or wrappers, the root behavior host is often a better fit than forcing that concern into unrelated page code.
|
|
219
|
+
|
|
220
|
+
A practical extension model is:
|
|
221
|
+
|
|
222
|
+
- keep `a-app` as the thin root host
|
|
223
|
+
- let other modules contribute root behavior configuration
|
|
224
|
+
- let those behaviors wrap the routed tree in a reusable way
|
|
225
|
+
|
|
226
|
+
That keeps the root host small while still making it extensible.
|
|
227
|
+
|
|
228
|
+
## Where to read next
|
|
229
|
+
|
|
230
|
+
After this page, the most useful next paths are usually:
|
|
231
|
+
|
|
232
|
+
- [Root Behaviors Guide](/frontend/root-behaviors-guide)
|
|
233
|
+
- [App Startup Guide](/frontend/app-startup-guide)
|
|
234
|
+
- [Page Route Guide](/frontend/page-route-guide)
|
|
235
|
+
- [Behavior Guide](/frontend/behavior-guide)
|
|
236
|
+
- [Zova Reactivity Under the Hood](/frontend/zova-reactivity-under-the-hood)
|
|
237
|
+
- [Zova Source Reading Map](/frontend/zova-source-reading-map)
|
|
238
|
+
- [SSR Architecture Overview](/frontend/ssr-architecture-overview)
|
|
239
|
+
|
|
240
|
+
## Final takeaway
|
|
241
|
+
|
|
242
|
+
The most accurate way to read `a-app` is not as a generic Vue root component and not as the owner of the whole frontend system.
|
|
243
|
+
|
|
244
|
+
Read it as the thin Zova app-shell host that:
|
|
245
|
+
|
|
246
|
+
- mounts the root app controller
|
|
247
|
+
- applies app-level meta
|
|
248
|
+
- hosts root behaviors
|
|
249
|
+
- renders the routed tree
|
|
250
|
+
|
|
251
|
+
That is the source-confirmed role of `a-app` in the current Basic frontend architecture.
|
|
@@ -12,6 +12,8 @@ Use this page together with:
|
|
|
12
12
|
|
|
13
13
|
- [Form Guide](/frontend/form-guide)
|
|
14
14
|
- [Zova Form Under the Hood](/frontend/zova-form-under-the-hood)
|
|
15
|
+
- [Rest Resource Under the Hood](/frontend/rest-resource-under-the-hood)
|
|
16
|
+
- [Rest Resource Source Reading Map](/frontend/rest-resource-source-reading-map)
|
|
15
17
|
- [Zova Source Reading Map](/frontend/zova-source-reading-map)
|
|
16
18
|
- [Behavior Guide](/frontend/behavior-guide)
|
|
17
19
|
- [API Schema Guide](/frontend/api-schema-guide)
|
|
@@ -19,6 +21,7 @@ Use this page together with:
|
|
|
19
21
|
|
|
20
22
|
> [!TIP]
|
|
21
23
|
> **Zova Form docs path**
|
|
24
|
+
>
|
|
22
25
|
> 1. **[Form Guide](/frontend/form-guide)** — learn the public authoring surface
|
|
23
26
|
> 2. **[Zova Form Under the Hood](/frontend/zova-form-under-the-hood)** — learn how the runtime pieces cooperate
|
|
24
27
|
> 3. **[Zova Form Source Reading Map](/frontend/zova-form-source-reading-map)** — learn which files to read next
|
|
@@ -36,18 +39,11 @@ The `a-form` module sits at the intersection of several Zova concerns at once:
|
|
|
36
39
|
- behavior-based field wrapping
|
|
37
40
|
- resource-driven CRUD page integration
|
|
38
41
|
|
|
39
|
-
|
|
42
|
+
This page exists for one narrow job:
|
|
40
43
|
|
|
41
44
|
- [Form Guide](/frontend/form-guide) explains how to author forms
|
|
42
45
|
- [Zova Form Under the Hood](/frontend/zova-form-under-the-hood) explains how the runtime pieces cooperate
|
|
43
|
-
- this page
|
|
44
|
-
|
|
45
|
-
Because of that, source reading can become slow for one predictable reason:
|
|
46
|
-
|
|
47
|
-
- you can find one relevant file such as the form controller
|
|
48
|
-
- but you do not yet know the shortest accurate path to the next runtime layer
|
|
49
|
-
|
|
50
|
-
This page gives a compact reading order so you can move from public surface to runtime detail without drifting.
|
|
46
|
+
- this page gives the shortest file-order paths for specific form questions
|
|
51
47
|
|
|
52
48
|
## How to use this page
|
|
53
49
|
|
|
@@ -251,6 +247,8 @@ Use this path when you are asking questions like:
|
|
|
251
247
|
- `lib/utils.ts` shows the canonical scene-to-form-meta translation helpers
|
|
252
248
|
- `blockFilter/controller.tsx` shows the lighter-weight filter-form branch using the same form module
|
|
253
249
|
|
|
250
|
+
If your next question becomes how `formScene` becomes `formMeta`, then `pageMeta`, and finally visible shell/tab state, continue with [Form Scene to Page Meta Guide](/frontend/form-scene-to-page-meta-guide).
|
|
251
|
+
|
|
254
252
|
## 8. Representative specimens to read before editing the framework
|
|
255
253
|
|
|
256
254
|
Use this section when you want one small example before reading the framework internals.
|
|
@@ -5,6 +5,8 @@ This guide explains the source-level runtime path behind Zova Form.
|
|
|
5
5
|
Use this page together with:
|
|
6
6
|
|
|
7
7
|
- [Form Guide](/frontend/form-guide)
|
|
8
|
+
- [Rest Resource Under the Hood](/frontend/rest-resource-under-the-hood)
|
|
9
|
+
- [Rest Resource Source Reading Map](/frontend/rest-resource-source-reading-map)
|
|
8
10
|
- [Zova Form Source Reading Map](/frontend/zova-form-source-reading-map)
|
|
9
11
|
- [Zova Reactivity Under the Hood](/frontend/zova-reactivity-under-the-hood)
|
|
10
12
|
- [Behavior Guide](/frontend/behavior-guide)
|
|
@@ -14,8 +16,11 @@ Use this page after [Form Guide](/frontend/form-guide) when you want to move fro
|
|
|
14
16
|
|
|
15
17
|
If your next question is not “how does this runtime work?” but “which files should I read next?”, continue with [Zova Form Source Reading Map](/frontend/zova-form-source-reading-map).
|
|
16
18
|
|
|
19
|
+
If your next question is specifically how `formScene` flows into `formMeta`, then `pageMeta`, and finally shell/tab state, continue with [Form Scene to Page Meta Guide](/frontend/form-scene-to-page-meta-guide).
|
|
20
|
+
|
|
17
21
|
> [!TIP]
|
|
18
22
|
> **Zova Form docs path**
|
|
23
|
+
>
|
|
19
24
|
> 1. **[Form Guide](/frontend/form-guide)** — learn the public authoring surface
|
|
20
25
|
> 2. **[Zova Form Under the Hood](/frontend/zova-form-under-the-hood)** — learn how the runtime pieces cooperate
|
|
21
26
|
> 3. **[Zova Form Source Reading Map](/frontend/zova-form-source-reading-map)** — learn which files to read next
|