使用React、Vue和Single SPA创建微型前端
本篇文章给大家介绍一下使用React、Vue和Single SPA创建微型前端的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
Single SPA
Single SPA 是一个用于前端微服务的 javascript 框架。
它使你可以在单页应用中使用多个框架,这样就可以按功能拆分代码,并 能使 Angular、React、Vue.js 程序一起运行。
你可能已经习惯了 React 和 Vue 的 CLI,通过这些工具可以快速创建项目,并准备好 webpack 的配置、依赖项和样板代码等。
如果你已经习惯了这种操作,那么你可能会觉得本文的前半部分有些繁琐。因为我们要从头创建所有内容,包括安装所需的所有依赖项以及从零创建 webpack 和 babel 配置。
环境与配置
首先在终端下创建一个新目录并进入其中:
mkdir single-spa-app cd single-spa-app
接下来初始化 package.json 文件:
npm init -y
然后安装项目所需的所有依赖项。为了让大家清楚的知道都安装了些什么,在这里我把它们分解成单独的步骤。
安装依赖项
安装常规依赖项
npm install react react-dom single-spa single-spa-react single-spa-vue vue
安装 babel 依赖项
npm install @babel/core @babel/plugin-proposal-object-rest-spread @babel/plugin-syntax-dynamic-import @babel/preset-env @babel/preset-react babel-loader --save-dev
安装 Webpack 依赖项
npm install webpack webpack-cli webpack-dev-server clean-webpack-plugin css-loader html-loader style-loader vue-loader vue-template-compiler --save-dev
在所有依赖项安装完毕后,创建目录结构。
我们把项目代码到 src 目录中。在目录中包含每个程序的子文件夹。继续在 src 目录中创建 react 和 vue 程序的目录:
mkdir src src/vue src/react
下面配置 webpack 和 babel。
环境配置
配置 Webpack
在主程序的根目录中,创建 webpack.config.js
文件并添加一下内容:
const path = require('path'); const webpack = require('webpack'); const { CleanWebpackPlugin } = require('clean-webpack-plugin'); const VueLoaderPlugin = require('vue-loader/lib/plugin') module.exports = { mode: 'development', entry: { 'single-spa.config': './single-spa.config.js', }, output: { publicPath: '/dist/', filename: '[name].js', path: path.resolve(__dirname, 'dist'), }, module: { rules: [ { test: /\.css$/, use: ['style-loader', 'css-loader'] }, { test: /\.js$/, exclude: [path.resolve(__dirname, 'node_modules')], loader: 'babel-loader', }, { test: /\.vue$/, loader: 'vue-loader' } ], }, node: { fs: 'empty' }, resolve: { alias: { vue: 'vue/dist/vue.js' }, modules: [path.resolve(__dirname, 'node_modules')], }, plugins: [ new CleanWebpackPlugin(), new VueLoaderPlugin() ], devtool: 'source-map', externals: [], devServer: { historyApiFallback: true } };
配置 babel
在根目录中创建 .babelrc
文件并添加以下内容:
{ "presets": [ ["@babel/preset-env", { "targets": { "browsers": ["last 2 versions"] } }], ["@babel/preset-react"] ], "plugins": [ "@babel/plugin-syntax-dynamic-import", "@babel/plugin-proposal-object-rest-spread" ] }
初始化 Single-spa
这一步骤是对你的应用进行注册,用来告诉 single-spa 找到、装载和卸载程序的时机和方法。
在 webpack.config.js
文件中,把入口设置为 single-spa.config.js
。
在项目的根目录中创建这个文件并进行配置。
single-spa.config.js
import { registerApplication, start } from 'single-spa' registerApplication( 'vue', () => import('./src/vue/vue.app.js'), () => location.pathname === "/react" ? false : true ); registerApplication( 'react', () => import('./src/react/main.app.js'), () => location.pathname === "/vue" ? false : true ); start();
这个文件用来注册用不同框架为主单页应用开发的每个部分。每调用一次 registerApplication
都会注册一个新的应用,它接受三个参数:
- 应用的名称
- 要加载的函数(要加载的入口点)
- 用来激活的函数(用于告知是否加载应用的逻辑)
接下来需要为每个应用创建代码。
React 应用
在 src/react 目录中创建以下两个文件:
touch main.app.js root.component.js
src/react/main.app.js
import React from 'react'; import ReactDOM from 'react-dom'; import singleSpaReact from 'single-spa-react'; import Home from './root.component.js'; function domElementGetter() { return document.getElementById("react") } const reactLifecycles = singleSpaReact({ React, ReactDOM, rootComponent: Home, domElementGetter, }) export const bootstrap = [ reactLifecycles.bootstrap, ]; export const mount = [ reactLifecycles.mount, ]; export const unmount = [ reactLifecycles.unmount, ];
src/react/root.component.js
import React from "react" const App = () => <h1>Hello from React</h1> export default App
Vue 应用
在 src/vue 目录中创建以下两个文件:
touch vue.app.js main.vue
src/vue/vue.app.js
import Vue from 'vue'; import singleSpaVue from 'single-spa-vue'; import Hello from './main.vue' const vueLifecycles = singleSpaVue({ Vue, appOptions: { el: '#vue', render: r => r(Hello) } }); export const bootstrap = [ vueLifecycles.bootstrap, ]; export const mount = [ vueLifecycles.mount, ]; export const unmount = [ vueLifecycles.unmount, ];
src/vue/main.vue
<template> <p> <h1>Hello from Vue</h1> </p> </template>
接下来,在程序的根目录中创建 index.html 文件:
touch index.html
index.html
<html> <body> <p id="react"></p> <p id="vue"></p> <script src="/dist/single-spa.config.js"></script> </body> </html>
用脚本更新 Package.json
在 package.json 中添加启动脚本和构建脚本:
"scripts": { "start": "webpack-dev-server --open", "build": "webpack --config webpack.config.js -p" }
运行程序
通过运行 start
执行程序:
npm start
现在可以通过以下URL访问了:
# 渲染基于所有框架的程序 http://localhost:8080/ # 只渲染 react http://localhost:8080/react # 之渲染 vue http://localhost:8080/vue
总结
除了开始时的配置外,其他工作都很轻松。如果以后 Single-spa 能够添加处理样板文件和初始项目设置的 CLI 会更好。
如果你需要微前端这种类型的体系结构,那么 Single-spa 无疑是现在最成熟的方法。
原文:https://dev.to/dabit3/building-micro-frontends-with-react-vue-and-single-spa-52op
作者:Nader Dabit
相关推荐:
更多编程相关知识,请访问:编程入门!!
Atas ialah kandungan terperinci 使用React、Vue和Single SPA创建微型前端. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

PHP dan Vue: gandingan sempurna alat pembangunan bahagian hadapan Dalam era perkembangan pesat Internet hari ini, pembangunan bahagian hadapan telah menjadi semakin penting. Memandangkan pengguna mempunyai keperluan yang lebih tinggi dan lebih tinggi untuk pengalaman tapak web dan aplikasi, pembangun bahagian hadapan perlu menggunakan alat yang lebih cekap dan fleksibel untuk mencipta antara muka yang responsif dan interaktif. Sebagai dua teknologi penting dalam bidang pembangunan bahagian hadapan, PHP dan Vue.js boleh dianggap sebagai alat yang sempurna apabila digandingkan bersama. Artikel ini akan meneroka gabungan PHP dan Vue, serta contoh kod terperinci untuk membantu pembaca memahami dan menggunakan kedua-dua ini dengan lebih baik.

Dalam temu bual pembangunan bahagian hadapan, soalan lazim merangkumi pelbagai topik, termasuk asas HTML/CSS, asas JavaScript, rangka kerja dan perpustakaan, pengalaman projek, algoritma dan struktur data, pengoptimuman prestasi, permintaan merentas domain, kejuruteraan bahagian hadapan, corak reka bentuk, dan teknologi dan trend baharu. Soalan penemuduga direka bentuk untuk menilai kemahiran teknikal calon, pengalaman projek dan pemahaman tentang trend industri. Oleh itu, calon harus bersedia sepenuhnya dalam bidang ini untuk menunjukkan kebolehan dan kepakaran mereka.

Tutorial JavaScript: Bagaimana untuk mendapatkan kod status HTTP, contoh kod khusus diperlukan: Dalam pembangunan web, interaksi data dengan pelayan sering terlibat. Apabila berkomunikasi dengan pelayan, kami selalunya perlu mendapatkan kod status HTTP yang dikembalikan untuk menentukan sama ada operasi itu berjaya dan melaksanakan pemprosesan yang sepadan berdasarkan kod status yang berbeza. Artikel ini akan mengajar anda cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan menyediakan beberapa contoh kod praktikal. Menggunakan XMLHttpRequest

Django ialah rangka kerja aplikasi web yang ditulis dalam Python yang menekankan pembangunan pesat dan kaedah bersih. Walaupun Django ialah rangka kerja web, untuk menjawab soalan sama ada Django ialah front-end atau back-end, anda perlu mempunyai pemahaman yang mendalam tentang konsep front-end dan back-end. Bahagian hadapan merujuk kepada antara muka yang pengguna berinteraksi secara langsung, dan bahagian belakang merujuk kepada program bahagian pelayan Mereka berinteraksi dengan data melalui protokol HTTP. Apabila bahagian hadapan dan bahagian belakang dipisahkan, program bahagian hadapan dan bahagian belakang boleh dibangunkan secara bebas untuk melaksanakan logik perniagaan dan kesan interaktif masing-masing, dan pertukaran data.

Apakah itu ESM bahagian hadapan? Contoh kod khusus diperlukan Dalam pembangunan bahagian hadapan, ESM merujuk kepada ECMAScriptModules, kaedah pembangunan modular berdasarkan spesifikasi ECMAScript. ESM membawa banyak faedah, seperti organisasi kod yang lebih baik, pengasingan antara modul dan kebolehgunaan semula. Artikel ini akan memperkenalkan konsep asas dan penggunaan ESM dan menyediakan beberapa contoh kod khusus. Konsep asas ESM Dalam ESM, kita boleh membahagikan kod kepada berbilang modul, dan setiap modul mendedahkan beberapa antara muka untuk modul lain kepada

Pengenalan kepada kaedah mendapatkan kod status HTTP dalam JavaScript: Dalam pembangunan bahagian hadapan, kita selalunya perlu berurusan dengan interaksi dengan antara muka bahagian belakang, dan kod status HTTP adalah bahagian yang sangat penting daripadanya. Memahami dan mendapatkan kod status HTTP membantu kami mengendalikan data yang dikembalikan oleh antara muka dengan lebih baik. Artikel ini akan memperkenalkan cara menggunakan JavaScript untuk mendapatkan kod status HTTP dan memberikan contoh kod khusus. 1. Apakah kod status HTTP bermakna kod status HTTP apabila penyemak imbas memulakan permintaan kepada pelayan, perkhidmatan tersebut

Sebagai bahasa pengaturcaraan yang pantas dan cekap, bahasa Go popular secara meluas dalam bidang pembangunan bahagian belakang. Walau bagaimanapun, beberapa orang mengaitkan bahasa Go dengan pembangunan bahagian hadapan. Malah, menggunakan bahasa Go untuk pembangunan bahagian hadapan bukan sahaja boleh meningkatkan kecekapan, tetapi juga membawa ufuk baharu kepada pembangun. Artikel ini akan meneroka kemungkinan menggunakan bahasa Go untuk pembangunan bahagian hadapan dan memberikan contoh kod khusus untuk membantu pembaca memahami dengan lebih baik bahagian ini. Dalam pembangunan front-end tradisional, JavaScript, HTML dan CSS sering digunakan untuk membina antara muka pengguna

Django: Rangka kerja ajaib yang boleh mengendalikan pembangunan bahagian hadapan dan belakang! Django ialah rangka kerja aplikasi web yang cekap dan berskala. Ia mampu menyokong berbilang model pembangunan web, termasuk MVC dan MTV, dan boleh membangunkan aplikasi web berkualiti tinggi dengan mudah. Django bukan sahaja menyokong pembangunan bahagian belakang, tetapi juga boleh membina antara muka bahagian hadapan dengan cepat dan mencapai paparan paparan yang fleksibel melalui bahasa templat. Django menggabungkan pembangunan bahagian hadapan dan pembangunan bahagian belakang menjadi penyepaduan yang lancar, supaya pembangun tidak perlu pakar dalam pembelajaran
