javascript / intermediate
Snippet
Kapselung von Domänenmodellen mit ES6-Klassen und Vue-Reaktivität
ES6-Klassen ermöglichen die Kapselung von Geschäftslogik und privaten Feldern in Domänenmodellen. Das Einbetten von Klasseninstanzen in Vues reactive() synchronisiert den internen Zustand mit dem Reaktivitätssystem, während die objektorientierte Kapselung und Methoden erhalten bleiben.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import { reactive } from 'vue';class UserAccount {#balance = 0;constructor(name, initialBalance = 0) {this.name = name;this.#balance = initialBalance;}get balance() {return this.#balance;}deposit(amount) {if (amount <= 0) throw new Error('Amount must be positive');this.#balance += amount;}}export function useAccount(name, initialDeposit) {const account = reactive(new UserAccount(name, initialDeposit));return { account };}
vue
Erklärung
1
class UserAccount {
Definiert eine ES6-Klasse zur Strukturierung von Kontozustand und Operationen.
2
#balance = 0;
Deklariert ein privates Klassenfeld, um unbefugte direkte Mutationen zu verhindern.
3
deposit(amount) {
Kapselt Mutationslogik und Eingabevalidierung.
4
const account = reactive(new UserAccount(name, initialDeposit));
Instantiiert die Klasse und macht sie innerhalb der Composition API reaktiv.