refactor: examples to split modules #290
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Background
The current template provides
example.ts, which mainly uses a class + static methods structure to organize example logic.While this approach looks straightforward in the demo stage, it reveals several issues during real development or user customization.
User habits
Redundant code is hard to clean up
classare all statically attached. Even if unused, they are difficult for tree-shaking to remove.Poor modular maintainability
Classes provide no real benefit here
static, so no state can be stored via instantiation. In essence, they behave the same as exported functions.Plan
example.tsinto a functions + module-scope variables model.register/unregistermethods inhooks.ts.unregisteronly for the few modules that need state (e.g., notifier, stylesheet). Other modules will expose onlyregister.Expected outcomes:
@exampledecorator can no longer be used).Others
I'm not sure if this modification is reasonable; it needs to be discussed.