Zwei Entwickler halten ein Meeting mit Laptop und Notizblock
Dennis, Kiya | 30.01.2024

Nutzung von JavaScript-Proxies für intelligentes Caching

Webentwicklung > Nutzung von JavaScript-Proxies für intelligentes Caching

JavaScript Proxies sind ein leistungsfähiger Mechanismus zum Abfangen und Anpassen von Operationen, die auf Objekten ausgeführt werden.

Viele Bibliotheken und Frameworks, wie z. B. Solid.js, haben sich die Fähigkeiten von Proxies zunutze gemacht, um ihre Funktionalität zu verbessern.

Vor ein paar Wochen habe ich einen Artikel über eine Utility-Funktion für den Zugriff auf Umgebungsvariablen in Node.js veröffentlicht. Dieses Dienstprogramm speichert Umgebungsvariablen effizient im Zwischenspeicher und gibt einen Fehler aus, wenn eine Umgebungsvariable undefined ist.

Interessanterweise können Sie das gleiche Ziel mit JavaScript Proxys erreichen:

1require("dotenv").config();
2
3const cache = {};
4const cacheHandler = {
5  get: (target, prop) => {
6    if (target[prop]) {
7      const value = Reflect.get(target, prop);
8      console.log(`GET cached ${prop} with value ${JSON.stringify(value)}`);
9      return value;
10    } else {
11      const env = process.env[prop];
12      if (!env) {
13        throw new ReferenceError(`Unknown environment variable: ${prop}`);
14      }
15      cache[prop] = { [prop]: env, time: new Date() };
16      console.log(
17        `GET initial ${prop} with value ${JSON.stringify(cache[prop])}`
18      );
19      return cache[prop];
20    }
21  },
22};
23
24const proxy = new Proxy(cache, cacheHandler);
25
26const accessEnv = (key) => proxy[key];
27
28accessEnv("DB_URL"); // GET initial DB_URL with value {"DB_URL":"mongodb://localhost:27017/db_name","time":"2022-04-06T07:22:04.303Z"}
29console.log("-------");
30accessEnv("DB_URL"); // GET cached DB_URL with value {"DB_URL":"mongodb://localhost:27017/db_name","time":"2022-04-06T07:22:04.303Z"}
31console.log("-------");
32accessEnv("DOES_NOT_EXIST"); // ReferenceError: Unknown environment variable: DOES_NOT_EXIST

Sie können den Code auf stackblitz ausführen, um ihn in Aktion zu sehen.

Außerdem sind JavaScript Proxys in verschiedenen Szenarien nützlich, z. B. bei der Validierung durch setter oder bei der Erstellung von Wrapper für HTTP Aufrufe.


Further Reading

Inhalt
  • Was ist ein JavaScript Proxy?
  • Wie können JavaScript Proxys für eine intelligente Zwischenspeicherung verwendet werden?
  • Welche anderen Dienstprogramme bieten JavaScript Proxys?
Dennis Hundertmark
Dennis (Softwareentwickler)

Als Frontend-Experte und Angular-Enthusiast gestalte ich Webanwendungen, die Technik und Design gekonnt zusammenführen. Meine Stärke liegt in der Entwicklung benutzerzentrierter Lösungen, die sowohl f... mehr anzeigen

Gitlab
Gesicht von Kiya,- unsere KI Mitarbeiterin
Kiya

... ist unsere engagierte und leidenschaftliche Künstliche Intelligenz und Expertin für Softwareentwicklung. Mit einem unermüdlichen Interesse für technologische Innovationen bringt sie Enthusiasmus u... mehr anzeigen

More about this topic

More from Dennis

Unsere Entwicklungsexpertise

Standort Hannover

newcubator GmbH
Bödekerstraße 22
30161 Hannover

Standort Dortmund

newcubator GmbH
Westenhellweg 85-89
44137 Dortmund