0Pricing
Micro Frontends Architecture with Module Federation · Ders

Tekil Modüller ve Sürümleme

Bir modülün yalnızca tek bir örneğinin yüklenmesini nasıl sağlayacağınızı ve sürüm çakışmalarını nasıl yöneteceğinizi anlayın.

Tekil Modüller ve Sürümleme, CoddyKit'te ücretsiz bir Micro Frontends Architecture with Module Federation dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Micro Frontends Architecture with Module Federation öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Micro Frontends Architecture with Module Federation kursu toplamda 4 dersten oluşur.

Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.

What are Singleton Modules?

In Micro Frontend architectures, a singleton module is a piece of code or a library that should only ever exist as a single instance across your entire application, even if multiple Micro Frontends try to load it.

Think of it as a unique resource that all parts of your system need to share consistently.

  • Ensures a single source of truth.
  • Prevents conflicting states or behaviors.

Why Singletons Matter for MFEs

Imagine multiple Micro Frontends (MFEs) all loading their own copy of a UI library like React, or a state management library like Redux.

Without singletons, you could end up with:

  • Multiple instances of React Context, breaking component communication.
  • Separate Redux stores, leading to inconsistent application state.
  • Increased bundle size due to duplicate code.

Singletons solve these issues by guaranteeing a unified dependency.

Implementing Singletons with MF

Module Federation makes it easy to declare shared modules as singletons using the singleton: true option in your Webpack configuration.

When this is set, Webpack ensures that only one version of the specified module is loaded and used by all federated applications (hosts and remotes) at runtime.

Code: Configuring a Singleton

Here's how you'd configure a shared module, like react, to be a singleton in your webpack.config.js:

const { ModuleFederationPlugin } = require('webpack').container;

module.exports = {
  // ... other Webpack config
  plugins: [
    new ModuleFederationPlugin({
      name: 'host_app',
      remotes: {},
      shared: {
        react: {
          singleton: true, // Only one React instance allowed
          requiredVersion: '^18.0.0',
        },
        'react-dom': {
          singleton: true, // Only one ReactDOM instance allowed
          requiredVersion: '^18.0.0',
        },
      },
    }),
  ],
};

Understanding Shared Module Versioning

Beyond ensuring a single *instance* (singleton), you also need to manage which *version* of a shared module gets loaded.

What if one MFE needs React v17 and another needs React v18? Module Federation has mechanisms to handle these version conflicts and ensure compatibility or gracefully fail.

`requiredVersion` for Specificity

The requiredVersion option in the shared configuration allows you to specify the semantic version (semver) range that your application expects for a shared module.

Webpack will try to find a compatible version among the host and remote applications. If a compatible version is found, it's used. If not, it might load a fallback or throw an error, depending on other settings.

Code: Specifying Required Versions

Here's how you might define a requiredVersion for a shared library:

const { ModuleFederationPlugin } = require('webpack').container;

module.exports = {
  // ...
  plugins: [
    new ModuleFederationPlugin({
      // ...
      shared: {
        lodash: {
          singleton: false,
          requiredVersion: '^4.17.21', // Any version compatible with 4.17.21
        },
        moment: {
          singleton: true,
          requiredVersion: '2.29.1', // Exactly version 2.29.1
        },
      },
    }),
  ],
};

`strictVersion: true` for Strictness

While requiredVersion guides version selection, strictVersion: true enforces it rigorously.

If strictVersion: true is enabled and a remote module requests a version that is incompatible with the host's requiredVersion (or the version already loaded), Module Federation will throw an error and prevent the application from loading. This prevents unexpected behavior from version mismatches.

Code: Enforcing Strict Versioning

Combining singleton, requiredVersion, and strictVersion for critical dependencies:

const { ModuleFederationPlugin } = require('webpack').container;

module.exports = {
  // ...
  plugins: [
    new ModuleFederationPlugin({
      // ...
      shared: {
        react: {
          singleton: true,
          requiredVersion: '^18.0.0',
          strictVersion: true, // Fail if versions are incompatible
        },
        // ... other shared modules
      },
    }),
  ],
};

Best Practices for Shared Dependencies

To effectively manage singleton modules and versioning:

  • Use Semantic Versioning (SemVer): Adhere to major.minor.patch for all shared modules.
  • Communicate: Ensure teams are aware of shared module updates and version requirements.
  • Test Compatibility: Regularly test your federated applications to ensure shared modules work across all remotes and hosts.
  • Be Strategic: Not all shared modules need to be singletons or have strict versioning. Apply these settings thoughtfully based on the module's criticality.

Quick Check: Singleton & Versioning

When configuring shared modules in Module Federation, what are the primary benefits of using singleton: true and strictVersion: true?

Recap & Next Steps

You've now learned about singleton modules and versioning in Module Federation!

  • Singleton modules ensure only one instance of a shared dependency exists across your federated application, crucial for stateful libraries.
  • The requiredVersion and strictVersion options help manage compatibility and prevent issues arising from conflicting module versions.

These techniques are vital for building robust and predictable Micro Frontend applications.

Sıkça Sorulan Sorular

“Tekil Modüller ve Sürümleme” dersi ücretsiz mi?

Evet — “Tekil Modüller ve Sürümleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Micro Frontends Architecture with Module Federation kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Micro Frontends Architecture with Module Federation kursu toplamda 4 dersten oluşur.

“Tekil Modüller ve Sürümleme” dersinde ne öğreneceğim?

Bir modülün yalnızca tek bir örneğinin yüklenmesini nasıl sağlayacağınızı ve sürüm çakışmalarını nasıl yöneteceğinizi anlayın. Micro Frontends Architecture with Module Federation ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Micro Frontends Architecture with Module Federation öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Micro Frontends Architecture with Module Federation, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Tekil Modüller ve Sürümleme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Micro Frontends Architecture with Module Federation dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Micro Frontends Architecture with Module Federation dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Paylaşılan Bağımlılıkları Kullanma
  2. Tekil Modüller ve Sürümleme
  3. Dinamik Modül Yükleme
  4. Uzak Uygulamalar Arasında Durum ve Yardımcıları Paylaşma
← Micro Frontends Architecture with Module Federation Sayfasına Dön