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.
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.
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.
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
Dalam contoh ini, dua bahagian hadapan mikro ringkas akan dibuat menggunakan Angular dan React. Konfigurasi akar akan menyediakan dua bahagian hadapan mikro.
Kami boleh mencipta apl bahagian hadapan mikro sudut mudah dengan melaksanakan arahan berikut.
ng new angular-spa-frontend
Setelah projek telah dibuat, laksanakan arahan seterusnya untuk memasang perpustakaan spa tunggal.
ng add single-spa-angular
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;
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
Fail angular.json akan diubah suai menggunakan konfigurasi berikut.
ng new angular-spa-frontend
“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
Sekarang kita telah berjaya mencipta apl bahagian hadapan mikro, mari lihat cara melaksanakan 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;
Setelah memasukkan arahan ini, satu siri konfigurasi akan dibentangkan untuk mencipta root-config.
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" }
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/" }, }
Skrip berikut harus ditambahkan pada fail index.ejs.
npm run serve:single-spa:angular-spa-frontend
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
Dengan mengandaikan langkah ini dilakukan dengan betul, kita sepatutnya dapat melihat spa tunggal terakhir dalam paparan, serupa dengan imej berikut.
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.
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
Kemudian, navigasi ke dalam projek yang dibuat dan pasang single-spa-react.
ng new angular-spa-frontend
Ubah suai fail masukan untuk mengeksport kaedah kitaran hayat untuk menjadikan apl serasi dengan spa tunggal.
ng add single-spa-angular
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;
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" }
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/" }, }
Lihat contoh kod lengkap aplikasi spa tunggal ini dalam tunjuk cara GitHub ini.
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.
Atas ialah kandungan terperinci Bina Micro Frontends dengan spa tunggal: Panduan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!