Rumah > hujung hadapan web > tutorial js > Bina Micro Frontends dengan spa tunggal: Panduan

Bina Micro Frontends dengan spa tunggal: Panduan

Mary-Kate Olsen
Lepaskan: 2024-12-14 05:59:10
asal
965 orang telah melayarinya

TL;DR: Menggunakan spa tunggal untuk membina bahagian hadapan mikro memudahkan untuk membahagikan apl besar kepada bahagian kecil dan bebas supaya pasukan yang berbeza boleh bekerja pada bahagian tanpa menjejaskan orang lain. Blog ini menunjukkan cara membuat bahagian hadapan mikro Angular dan React, menyambungkannya ke konfigurasi akar dan menggunakannya.

Micro Frontends telah menjadi gaya seni bina yang popular untuk menskalakan apl frontend, terutamanya apabila berbilang pasukan bekerja pada bahagian berbeza antara muka pengguna. Dengan memecahkan bahagian hadapan monolitik kepada modul bebas yang lebih kecil, pasukan boleh menggunakan, mengemas kini dan menskalakan bahagian apl secara berasingan. Artikel ini akan membincangkan cara mencipta dan menyambung bahagian hadapan mikro rangka kerja yang berbeza menggunakan spa tunggal.

Pengenalan kepada single-spa

Build Micro Frontends with single-spa: A Guide

Spa tunggal ialah rangka kerja berasaskan JavaScript yang direka untuk seni bina bahagian hadapan mikro. Ia membolehkan anda membina bahagian hadapan mikro menggunakan rangka kerja seperti Angular, React dan Vue serta menyediakannya sebagai satu apl. Ia mengekalkan daftar apl yang disambungkan dan menggunakan laluan untuk mengubah hala pengguna ke apl berbeza.

Build Micro Frontends with single-spa: A Guide

Menggunakan rangka kerja SPA tunggal mempunyai banyak faedah, seperti memilih bahasa yang berbeza untuk bahagian apl yang berbeza, pembangunan bebas dan penggunaan bahagian hadapan mikro serta kebolehskalaan. Jadi, mari mulakan dengan mencipta spa tunggal.

Mewujudkan spa tunggal

Prasyarat

Untuk melaksanakan satu-spa, adalah penting untuk memasang Node.js dan npm. Untuk memasangnya, pergi ke tapak web Node.js dan muat turun versi terkini untuk sistem pengendalian anda. Jalankan pemasang untuk menyelesaikan pemasangan.

Kemudian, sahkan pemasangan node.js dan npm dengan melaksanakan arahan berikut dalam command prompt.

npm - version
node - version
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Langkah 1: Menyediakan projek

Dalam contoh ini, dua bahagian hadapan mikro ringkas akan dibuat menggunakan Angular dan React. Konfigurasi akar akan menyediakan dua bahagian hadapan mikro.

Buat apl

Kami boleh mencipta apl bahagian hadapan mikro sudut mudah dengan melaksanakan arahan berikut.

ng new angular-spa-frontend
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Setelah projek telah dibuat, laksanakan arahan seterusnya untuk memasang perpustakaan spa tunggal.

ng add single-spa-angular
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Setelah pustaka dipasang dengan betul, fail bernama main.single-spa.ts akan dibuat dalam projek Angular, yang mengandungi semua konfigurasi yang berkaitan dengan single-spa.

Rujuk kod konfigurasi.

if (environment.production) {
 enableProdMode();
}

const lifecycles = singleSpaAngular({
 bootstrapFunction: (singleSpaProps) => {
  singleSpaPropsSubject.next(singleSpaProps);

  const extraProviders = [
   ...getSingleSpaExtraProviders(),
   { provide: APP_BASE_HREF, useValue: '/' }
  ];

  return platformBrowserDynamic(extraProviders).bootstrapModule(AppModule);
 },
 template: '<app-root />',
 Router,
 NavigationStart,
 NgZone,
});

export const bootstrap = lifecycles.bootstrap;
export const mount = lifecycles.mount;
export const unmount = lifecycles.unmount;
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Ia dikehendaki menyediakan nilai APP_BASE_HREF untuk berfungsi sebagai spa tunggal.

Selain itu, selepas menambah perpustakaan spa tunggal, package.json akan mengandungi dua skrip tambahan.

npm - version
node - version
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Fail angular.json akan diubah suai menggunakan konfigurasi berikut.

ng new angular-spa-frontend
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

“utama”: “src/main.ts” akan digantikan dengan “utama”: “src/main.single-spa.ts”. Konfigurasi binaan baharu akan ditambahkan sebagai modul JavaScript.

Setelah konfigurasi selesai dan disahkan, kami boleh menyampaikan apl Angular menggunakan arahan berikut.

ng add single-spa-angular
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Sekarang kita telah berjaya mencipta apl bahagian hadapan mikro, mari lihat cara melaksanakan root-config.

Root-config

Jalankan arahan berikut untuk mencipta konfigurasi akar.

if (environment.production) {
 enableProdMode();
}

const lifecycles = singleSpaAngular({
 bootstrapFunction: (singleSpaProps) => {
  singleSpaPropsSubject.next(singleSpaProps);

  const extraProviders = [
   ...getSingleSpaExtraProviders(),
   { provide: APP_BASE_HREF, useValue: '/' }
  ];

  return platformBrowserDynamic(extraProviders).bootstrapModule(AppModule);
 },
 template: '<app-root />',
 Router,
 NavigationStart,
 NgZone,
});

export const bootstrap = lifecycles.bootstrap;
export const mount = lifecycles.mount;
export const unmount = lifecycles.unmount;
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Setelah memasukkan arahan ini, satu siri konfigurasi akan dibentangkan untuk mencipta root-config. Build Micro Frontends with single-spa: A Guide

Selepas memilih konfigurasi sebelumnya, konfigurasi akar akan dibuat untuk menyediakan berbilang bahagian hadapan.

Untuk menyambung bahagian hadapan mikro yang dibuat ke konfigurasi akar, kita perlu mengubah suai fail root-config.ts dan index.ejs.

"scripts": {
  "ng": "ng",
  "start": "ng serve",
  "build": "ng build",
  "watch": "ng build --watch --configuration development",
  "test": "ng test",
  "build:single-spa:angular-spa-frontend": "ng build angular-spa-frontend --prod",
  "serve:single-spa:angular-spa-frontend": "ng s --project angular-spa-frontend --disable-host-check --port 4200 --live-reload false"
 }
Salin selepas log masuk
Salin selepas log masuk

Seperti yang dinyatakan dalam blok kod sebelumnya, bahagian hadapan mikro yang dibuat hendaklah diimport dalam fail root-config.ts.

"build": {
   "builder": "@angular-builders/custom-webpack:browser",
   "options": {
      "outputPath": "dist/angular-spa-frontend",
      "index": "src/index.html",
      "main": "src/main.single-spa.ts",
      "polyfills": "src/polyfills.ts",
      "tsConfig": "tsconfig.app.json",
      "inlineStyleLanguage": "scss",
      "assets": [
       "src/favicon.ico",
       "src/assets"
      ],
      "styles": [
       "src/styles.scss"
      ],
      "scripts": [],
      "customWebpackConfig": {
       "path": "extra-webpack.config.js",
       "libraryName": "angular-spa-frontend",
       "libraryTarget": "umd"
      },
      "deployUrl": "http://localhost:4200/"
     },

}
Salin selepas log masuk
Salin selepas log masuk

Skrip berikut harus ditambahkan pada fail index.ejs.

npm run serve:single-spa:angular-spa-frontend
Salin selepas log masuk

Dicipta bahagian hadapan mikro ( @org/angular-spa-frontend ), bersama-sama dengan URL ( http://localhost:4200/main.js ) di mana mikro frontend telah dihoskan, perlu ditambah dalam peta import.

Kemudian, laksanakan arahan berikut untuk menjalankan apl.

npx create-single-spa
Salin selepas log masuk

Dengan mengandaikan langkah ini dilakukan dengan betul, kita sepatutnya dapat melihat spa tunggal terakhir dalam paparan, serupa dengan imej berikut.

Build Micro Frontends with single-spa: A Guide

Langkah 2: Penggunaan dalam pengeluaran

Apabila menggunakan bahagian hadapan mikro ini dalam pengeluaran, adalah disyorkan agar setiap apl bahagian hadapan mikro digunakan sebagai apl kendiri yang bebas. Konfigurasi akar mungkin akan memuatkan setiap apl secara dinamik, bergantung pada laluan apl yang ditetapkan dalam registerApplication.

Langkah 3: Menambah lebih banyak bahagian hadapan mikro

Untuk menambah lebih banyak bahagian hadapan mikro, ulangi langkah yang dinyatakan sebelum ini. Mari lihat cara menyepadukan bahagian hadapan mikro React ke dalam konfigurasi akar yang sama.

Buat bahagian hadapan mikro React baharu menggunakan arahan berikut.

npm - version
node - version
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kemudian, navigasi ke dalam projek yang dibuat dan pasang single-spa-react.

ng new angular-spa-frontend
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Ubah suai fail masukan untuk mengeksport kaedah kitaran hayat untuk menjadikan apl serasi dengan spa tunggal.

ng add single-spa-angular
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Setelah konfigurasi selesai, kami boleh menyampaikan bahagian hadapan mikro React menggunakan arahan berikut.

if (environment.production) {
 enableProdMode();
}

const lifecycles = singleSpaAngular({
 bootstrapFunction: (singleSpaProps) => {
  singleSpaPropsSubject.next(singleSpaProps);

  const extraProviders = [
   ...getSingleSpaExtraProviders(),
   { provide: APP_BASE_HREF, useValue: '/' }
  ];

  return platformBrowserDynamic(extraProviders).bootstrapModule(AppModule);
 },
 template: '<app-root />',
 Router,
 NavigationStart,
 NgZone,
});

export const bootstrap = lifecycles.bootstrap;
export const mount = lifecycles.mount;
export const unmount = lifecycles.unmount;
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Untuk menyepadukan bahagian hadapan mikro yang dibuat dengan root-config yang sedia ada, laksanakan pengubahsuaian berikut pada fail dalam root-config.

"scripts": {
  "ng": "ng",
  "start": "ng serve",
  "build": "ng build",
  "watch": "ng build --watch --configuration development",
  "test": "ng test",
  "build:single-spa:angular-spa-frontend": "ng build angular-spa-frontend --prod",
  "serve:single-spa:angular-spa-frontend": "ng s --project angular-spa-frontend --disable-host-check --port 4200 --live-reload false"
 }
Salin selepas log masuk
Salin selepas log masuk

Anda juga perlu mengemas kini fail index.ejs dengan laluan berkas utama apl React.

"build": {
   "builder": "@angular-builders/custom-webpack:browser",
   "options": {
      "outputPath": "dist/angular-spa-frontend",
      "index": "src/index.html",
      "main": "src/main.single-spa.ts",
      "polyfills": "src/polyfills.ts",
      "tsConfig": "tsconfig.app.json",
      "inlineStyleLanguage": "scss",
      "assets": [
       "src/favicon.ico",
       "src/assets"
      ],
      "styles": [
       "src/styles.scss"
      ],
      "scripts": [],
      "customWebpackConfig": {
       "path": "extra-webpack.config.js",
       "libraryName": "angular-spa-frontend",
       "libraryTarget": "umd"
      },
      "deployUrl": "http://localhost:4200/"
     },

}
Salin selepas log masuk
Salin selepas log masuk

Rujukan GitHub

Lihat contoh kod lengkap aplikasi spa tunggal ini dalam tunjuk cara GitHub ini.

Kesimpulan

Menggunakan spa tunggal untuk membina bahagian hadapan mikro memudahkan anda membahagikan apl besar kepada bahagian kecil dan bebas. Dengan cara ini, pasukan yang berbeza boleh bekerja pada bahagian mereka tanpa menjejaskan orang lain dan menggunakan rangka kerja yang mereka suka, seperti Angular atau React. Mengikuti langkah dalam panduan ini, anda boleh menyediakan projek spa tunggal, menyambungkan berbilang bahagian hadapan mikro dan memberikan pengguna pengalaman yang lancar. Single-spa memudahkan untuk mengembangkan apl anda dari semasa ke semasa dan menambah ciri baharu mengikut keperluan.

Blog Berkaitan

  • Kuasai JavaScript Asynchronous dengan RxJS
  • Axios and Fetch API? Memilih Pelanggan HTTP yang Tepat
  • Jenis Utiliti TypeScript: Panduan Lengkap
  • Storan JWT Selamat: Amalan Terbaik

Atas ialah kandungan terperinci Bina Micro Frontends dengan spa tunggal: Panduan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan