Heim Web-Frontend js-Tutorial Aufbau zusammensetzbarer Plattformen mit Harmony

Aufbau zusammensetzbarer Plattformen mit Harmony

Dec 22, 2024 pm 10:17 PM

In der heutigen schnelllebigen digitalen Landschaft ist der Bedarf an adaptiven, skalierbaren und wartbaren Softwaresystemen größer denn je.

Herkömmliche monolithische Architekturen können diesen Anforderungen aufgrund ihrer Starrheit und Komplexität oft nicht gerecht werden. Betreten Sie Harmony, ein Framework, das zusammensetzbare Plattformen mit hoher Effizienz und Flexibilität ermöglicht.

In diesem Artikel untersuchen wir, wie Harmony, powered by Bit, die Art und Weise verändert, wie wir moderne Anwendungen erstellen und warten.

Was ist Harmonie?

Harmony ist ein minimalistisches und dennoch leistungsstarkes Abhängigkeitsinjektions-Framework, das auf die Erstellung zusammensetzbarer Architekturen zugeschnitten ist. Indem es Entwicklern ermöglicht, unabhängig entwickelte Bit-Komponenten zusammenzufügen, ermöglicht Harmony Teams die Entwicklung von Anwendungen, die nicht nur modular, sondern auch an sich ändernde Geschäftsanforderungen anpassbar sind. Harmony unterstützt die Zusammensetzbarkeit des gesamten Stapels und eignet sich daher ideal für die Integration von Frontend- und Backend-Funktionalitäten in zusammenhängende Plattformen.

Hauptmerkmale von Harmony

  • Pluggable Aspects: Modulare Geschäftsfunktionen, sogenannte Aspekte, können einfach in Plattformen integriert werden.

  • Laufzeitflexibilität: Offizielle Unterstützung für Node.js und Browserumgebungen gewährleistet Kompatibilität in verschiedenen Anwendungsfällen.

Warum Zusammensetzbarkeit wichtig ist

Composability ermöglicht Organisationen Folgendes:

  • Schnell anpassen: Neue Funktionen können unabhängig hinzugefügt oder aktualisiert werden, ohne das bestehende System zu stören.

  • Förderung der Wiederverwendbarkeit: Gemeinsam genutzte Komponenten können über mehrere Projekte hinweg genutzt werden, wodurch Duplikate reduziert und die Konsistenz erhöht werden.

  • Zusammenarbeit fördern: Teams können an isolierten Aspekten oder Komponenten arbeiten, ohne sich gegenseitig auf die Füße zu treten.

Aufbau eines zusammensetzbaren Systems mit Harmonie

Wie bereits erwähnt, sind die Bausteine ​​eines Harmony-Systems Bit-Komponenten. Da es sich bei Bit-Komponenten jedoch um Container für beliebige Softwareeinheiten handelt, ist nicht jede Bit-Komponente geeignet.

Harmony verwendet Komponenten mit einem bestimmten Design, um ihnen die Nutzung und Bereitstellung von „Diensten“ für andere Aspekte zu ermöglichen. Dabei kann es sich um reine Frontend-, reine Backend- oder Full-Stack-Funktionen handeln.

Ein Aspekt stellt eine einzelne Geschäftsfähigkeit dar, die in ein größeres System eingebunden werden kann, um eine vollständige Lösung, eine neue Anwendung, zu bilden.

Building Composable Platforms with Harmony

Aspekte erweitern andere Aspekte durch die Registrierung bei ihrer „Slot“-API. Diese Umkehrung der Kontrolle ermöglicht es Teams, Funktionen oder Geschäftsfunktionen mit minimalem Overhead zu erstellen, da der Aspekt für die Integration verantwortlich ist und nicht das System, das sie erstellt.

Bei der folgenden Harmony-App handelt es sich beispielsweise um einen Onlineshop für Surferbekleidung.

Das für diesen Online-Shop verantwortliche Team hat beschlossen, seiner Website einen Blog hinzuzufügen. Nachdem sie auf der Bit-Plattform nach geeigneten Aspekten gesucht hatten, stießen sie auf diesen Blog-Aspekt. Sie beschlossen, es zu verwenden und fügten es ihrer Hamrony-Anwendung hinzu:

/**
 * @coponentId: learnbit.apparel-waves/apparel-waves
 * @filename: apparel-waves.bit-app.ts
 */ 

// imports...
import { SymphonyPlatformAspect } from '@bitdev/symphony.symphony-platform';
import { ApparelWavesPlatformAspect } from '@learnbit/apparel-waves.apparel-waves-platform';
import { BlogAspect } from '@learnbit/blog-pbc.blog';

export const ApparelWaves = HarmonyPlatform.from({
  name: 'apparel-waves',
  platform: [
   /**
    * ascpects register themsevles to the 'platform' aspect which
    * is the entry point for this application
    */
    SymphonyPlatformAspect,
    {
      name: 'Apparel Waves',
      slogan: 'Making waves in fashion',
      domain: 'apparel-waves.com',
    },
  ],
  /**
    * aspects can run in multiple runtime environments. here, aspects 
    * provide functionalitis to the NodeJS services and to the web frontend apps
   */
  runtimes: [new BrowserRuntime(), new NodeJSRuntime()],

  aspects: [
    /* 'apperal waves' aspect extends the system with its 
     * own unique functionalities. this aspect is maintained by 
     * a team that composes the apsects for their own solution.
     */
    ApparelWavesPlatformAspect,
    /**
     * the blog aspect extends the system with content 
     * management capabilities. it is maintained by the blog PBC team.
     */
    [
      BlogAspect,
      {
       /**
         * the blog aspect also provide a config api for this app to use
         * in this case, since the the blog uses the Contenful platform,
         * the fusion team need to provide it with their own Contentful space ID
         */        
        spaceId: 'contentful-spaceId',
      },
    ],
  ],
});

export default ApparelWaves;
Nach dem Login kopieren

Building Composable Platforms with Harmony

Der Blog-Aspekt registriert sich auf verschiedene Arten auf der Plattform:

  1. Es erweitert das GraphQL-Schema des Systems um einen Knoten zum Abrufen von Inhalten. Dies erfolgt in der NodeJS Runtime.

  2. Es erweitert das Routing des Systems um die /blog-Route. Dies geschieht in der Browser Runtime.

  3. Es erweitert die Kopfzeile um ein zusätzliches Element, einen „Blog“-Link zu /blog. Dies geschieht in der Browser Runtime.

NodeJS-Laufzeit

/**
 * @coponentId: learnbit.blog-pbc/blog
 * @filename: blog.node.runtime.ts
 */

export class BlogNode {
  constructor(private config: BlogConfig) {}

  async getBlogPosts() {
    const blogData = new BlogData(this.config);
    return blogData.getBlogPosts();
  }

  static dependencies = [SymphonyPlatformAspect];

  static async provider(
    [symphonyPlatform]: [SymphonyPlatformNode],
    config: BlogConfig
  ) {
    const blog = new BlogNode(config);
    const gqlSchema = blogGqlSchema(blog);

    symphonyPlatform.registerBackendServer([
      {
        gql: gqlSchema,
      },
    ]);

    return blog;
  }
}

export default BlogNode;
Nach dem Login kopieren

Browser-Laufzeit

**
 * @coponentId: learnbit.blog-pbc/blog
 * @filename: blog.browser.runtime.ts
 */


export class BlogBrowser {
  constructor(private config: BlogConfig) {}

  static dependencies = [SymphonyPlatformAspect, HeaderAspect];

  static async provider(
    [symphonyPlatform, header]: [SymphonyPlatformBrowser, HeaderBrowser],
    config: BlogConfig
  ) {
    const blog = new BlogBrowser(config);

    symphonyPlatform.registerRoute([
      {
        path: '/blog',
        component: () => {
          return (
            <apolloblogprovider spaceid="{config.spaceId}">
              <bloglobby></bloglobby>
            </apolloblogprovider>
          );
        },
      },
    ]);

    header.registerLink([{ label: 'Blog', href: '/blog' }]);

    return blog;
  }
}

export default BlogBrowser;
Nach dem Login kopieren

Der Blog-Aspekt in diesem Beispiel verwendet das Contentful-Content-Management-System. Es bietet eine kohärente „Sprache“ für gekaufte Dienste innerhalb des Aspektökosystems des Unternehmens und stellt sicher, dass sie effektiv kommunizieren und nahtlos zusammenarbeiten können.

/**
 * @coponentId: learnbit.blog-pbc/blog
 * @filename: blog-data.ts
 */

import { ApolloClient, InMemoryCache, HttpLink, gql } from '@apollo/client';
import type { BlogConfig } from './blog-config.js';

export class BlogData {
  constructor(private readonly config: BlogConfig) {}

  private contentfulClient = new ApolloClient({
    link: new HttpLink({
      uri: `https://graphql.contentful.com/content/v1/spaces/${this.config.spaceId}`,
      headers: {
        Authorization: `Bearer ${process.env.CONTENTFUL_ACCESS_TOKEN}`,
      },
      fetch,
    }),
    cache: new InMemoryCache(),
  });

  getBlogPosts = async () => {
    const { data } = await this.contentfulClient.query({
      query: gql`
        query GetBlogs {
          pageBlogPostCollection {
            items {
              title
              slug
              author {
                name
              }
            }
          }
        }
      `,
    });
    return data.pageBlogPostCollection.items.map((item) => ({
      title: item.title,
      slug: item.slug,
      author: {
        name: item.author ? item.author.name : null,
      },
    }));
  };
}
Nach dem Login kopieren

Nächste Schritte

Entdecken Sie den Bereich „Blog“ (mit dem Blog-Aspekt)

Besuchen Sie diese Bit-Bereiche, um Demo-Aspekte zu erkunden, und verzweigen (kopieren) Sie sie in Ihren Bit-Arbeitsbereich, um schnell loszulegen.

Besuchen Sie den Blog-Bereich


Building Composable Platforms with Harmony

Entdecken Sie den Bereich „Apparel Waves“ (mit einer Harmony-Plattform)

Besuchen Sie den Bereich Apparel Waves


Building Composable Platforms with Harmony

Besuchen Sie die offizielle Dokumentation von Bit

Building Composable Platforms with Harmony

Bisschen. Zusammensetzbare Software.

Bit ist ein Build-System für die Entwicklung zusammensetzbarer Software.

Aufbau zusammensetzbarer Plattformen mit Harmony bit.dev

Das obige ist der detaillierte Inhalt vonAufbau zusammensetzbarer Plattformen mit Harmony. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1672
14
PHP-Tutorial
1276
29
C#-Tutorial
1256
24
Python vs. JavaScript: Die Lernkurve und Benutzerfreundlichkeit Python vs. JavaScript: Die Lernkurve und Benutzerfreundlichkeit Apr 16, 2025 am 12:12 AM

Python eignet sich besser für Anfänger mit einer reibungslosen Lernkurve und einer kurzen Syntax. JavaScript ist für die Front-End-Entwicklung mit einer steilen Lernkurve und einer flexiblen Syntax geeignet. 1. Python-Syntax ist intuitiv und für die Entwicklung von Datenwissenschaften und Back-End-Entwicklung geeignet. 2. JavaScript ist flexibel und in Front-End- und serverseitiger Programmierung weit verbreitet.

JavaScript und das Web: Kernfunktionalität und Anwendungsfälle JavaScript und das Web: Kernfunktionalität und Anwendungsfälle Apr 18, 2025 am 12:19 AM

Zu den Hauptanwendungen von JavaScript in der Webentwicklung gehören die Interaktion der Clients, die Formüberprüfung und die asynchrone Kommunikation. 1) Dynamisches Inhaltsaktualisierung und Benutzerinteraktion durch DOM -Operationen; 2) Die Kundenüberprüfung erfolgt vor dem Einreichung von Daten, um die Benutzererfahrung zu verbessern. 3) Die Aktualisierung der Kommunikation mit dem Server wird durch AJAX -Technologie erreicht.

JavaScript in Aktion: Beispiele und Projekte in realer Welt JavaScript in Aktion: Beispiele und Projekte in realer Welt Apr 19, 2025 am 12:13 AM

Die Anwendung von JavaScript in der realen Welt umfasst Front-End- und Back-End-Entwicklung. 1) Zeigen Sie Front-End-Anwendungen an, indem Sie eine TODO-Listanwendung erstellen, die DOM-Operationen und Ereignisverarbeitung umfasst. 2) Erstellen Sie RESTFUFFUPI über Node.js und express, um Back-End-Anwendungen zu demonstrieren.

Verständnis der JavaScript -Engine: Implementierungsdetails Verständnis der JavaScript -Engine: Implementierungsdetails Apr 17, 2025 am 12:05 AM

Es ist für Entwickler wichtig, zu verstehen, wie die JavaScript -Engine intern funktioniert, da sie effizientere Code schreibt und Leistungs Engpässe und Optimierungsstrategien verstehen kann. 1) Der Workflow der Engine umfasst drei Phasen: Parsen, Kompilieren und Ausführung; 2) Während des Ausführungsprozesses führt die Engine dynamische Optimierung durch, wie z. B. Inline -Cache und versteckte Klassen. 3) Zu Best Practices gehören die Vermeidung globaler Variablen, die Optimierung von Schleifen, die Verwendung von const und lass und die Vermeidung übermäßiger Verwendung von Schließungen.

Python gegen JavaScript: Community, Bibliotheken und Ressourcen Python gegen JavaScript: Community, Bibliotheken und Ressourcen Apr 15, 2025 am 12:16 AM

Python und JavaScript haben ihre eigenen Vor- und Nachteile in Bezug auf Gemeinschaft, Bibliotheken und Ressourcen. 1) Die Python-Community ist freundlich und für Anfänger geeignet, aber die Front-End-Entwicklungsressourcen sind nicht so reich wie JavaScript. 2) Python ist leistungsstark in Bibliotheken für Datenwissenschaft und maschinelles Lernen, während JavaScript in Bibliotheken und Front-End-Entwicklungsbibliotheken und Frameworks besser ist. 3) Beide haben reichhaltige Lernressourcen, aber Python eignet sich zum Beginn der offiziellen Dokumente, während JavaScript mit Mdnwebdocs besser ist. Die Wahl sollte auf Projektbedürfnissen und persönlichen Interessen beruhen.

Python vs. JavaScript: Entwicklungsumgebungen und Tools Python vs. JavaScript: Entwicklungsumgebungen und Tools Apr 26, 2025 am 12:09 AM

Sowohl Python als auch JavaScripts Entscheidungen in Entwicklungsumgebungen sind wichtig. 1) Die Entwicklungsumgebung von Python umfasst Pycharm, Jupyternotebook und Anaconda, die für Datenwissenschaft und schnelles Prototyping geeignet sind. 2) Die Entwicklungsumgebung von JavaScript umfasst Node.JS, VSCODE und WebPack, die für die Entwicklung von Front-End- und Back-End-Entwicklung geeignet sind. Durch die Auswahl der richtigen Tools nach den Projektbedürfnissen kann die Entwicklung der Entwicklung und die Erfolgsquote der Projekte verbessert werden.

Die Rolle von C/C bei JavaScript -Dolmetschern und Compilern Die Rolle von C/C bei JavaScript -Dolmetschern und Compilern Apr 20, 2025 am 12:01 AM

C und C spielen eine wichtige Rolle in der JavaScript -Engine, die hauptsächlich zur Implementierung von Dolmetschern und JIT -Compilern verwendet wird. 1) C wird verwendet, um JavaScript -Quellcode zu analysieren und einen abstrakten Syntaxbaum zu generieren. 2) C ist für die Generierung und Ausführung von Bytecode verantwortlich. 3) C implementiert den JIT-Compiler, optimiert und kompiliert Hot-Spot-Code zur Laufzeit und verbessert die Ausführungseffizienz von JavaScript erheblich.

Von Websites zu Apps: Die verschiedenen Anwendungen von JavaScript Von Websites zu Apps: Die verschiedenen Anwendungen von JavaScript Apr 22, 2025 am 12:02 AM

JavaScript wird in Websites, mobilen Anwendungen, Desktop-Anwendungen und serverseitigen Programmierungen häufig verwendet. 1) In der Website -Entwicklung betreibt JavaScript DOM zusammen mit HTML und CSS, um dynamische Effekte zu erzielen und Frameworks wie JQuery und React zu unterstützen. 2) Durch reaktnatives und ionisches JavaScript wird ein plattformübergreifendes mobile Anwendungen entwickelt. 3) Mit dem Elektronenframework können JavaScript Desktop -Anwendungen erstellen. 4) Node.js ermöglicht es JavaScript, auf der Serverseite auszuführen und unterstützt hohe gleichzeitige Anforderungen.

See all articles