成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我來教你如何使用 Vite 的 React 微前端

開發 前端
通過利用Vite的快速構建和模塊聯合的動態代碼加載功能,我們可以以模塊化和可維護的方式高效地開發和擴展web應用程序。這種方法使多個團隊能夠獨立處理應用程序的不同部分,從而提高前端開發的靈活性和敏捷性。

什么是微前端?

微前端是web應用程序的一種架構方法,程序的前端代碼被劃分為更小的、獨立開發的和可部署的單元,稱為微前端。

這種方法允許不同的團隊在前端的不同部分工作,同時通過隔離層保持集成,提高了開發速度、可擴展性和靈活性。這是一種管理復雜性和促進前端開發自主性的方法。

模塊聯合

模塊聯合是一項關鍵技術,使JavaScript應用程序能夠在共享依賴項的同時從另一個應用程序動態加載代碼。

當使用聯合模塊的應用程序缺少所需的依賴項時,Webpack(底層技術)會自動從聯合構建源獲取缺少的依賴項。從而允許跨多個微前端高效共享和使用公共庫。

為什么選擇Vite?

雖然模塊聯合最初是在Webpack中引入的,但JavaScript開發的格局也由此發生了改變。Vite通過提供閃電般的構建時間而成為游戲規則的改變者。Vite和模塊聯合的結合使用可以快速有效地開發微前端,發揮巨大作用。

使用Vite + React創建微前端

創建微前端通常涉及兩個主要部分:

  1. 主機應用程序:用戶與之交互的主要應用程序。充當微前端的容器。
  2. 遠程應用程序:即微前端本身,充當主機應用程序的構建塊。

在了解了我們將要使用的技術之后,讓我們實際實現試試。

設置主機應用

要使用Vite和React創建主機應用程序,先運行以下命令:

# Using npm 6.x
npm create vite@latest host-app --template react

# Using npm 7+, add an extra double-dash:
npm create vite@latest host-app -- --template react

設置遠程應用

對遠程應用程序,執行以下命令:

npm create vite@latest todo-components -- --template react

這將創建兩個文件夾,host-app和todo-components。接下來安裝依賴項:

npm install

在遠程應用中創建組件

在todo-components應用中,創建以下組件:

// components/List.jsx
import React from "react";

const List = (props) => {
  const { items } = props;
  return (
    <ul>
      {items.map((item, index) => (
        <li key={index}>{item}</li>
      ))}
    </ul>
  );
};

export default List;
// components/Input.jsx
import React from "react";

const Input = (props) => {
  const { value, onChange, onSubmit } = props;
  return (
    <form
      onSubmit={(e) => {
        e.preventDefault();
        onSubmit(e);
      }}
    >
      <div className="flex-row">
        <input
          type="text"
          value={value}
          onChange={(e) => onChange(e.target.value)}
        />
        <button type="submit">Add</button>
      </div>
    </form>
  );
};

export default Input;

組件準備就緒后,對App.jsx文件進行以下更改:

// App.jsx
import { useState } from "react";
import reactLogo from "./assets/react.svg";
import viteLogo from "/vite.svg";
import "./App.css";
import Input from "./components/Input";
import List from "./components/List";

function App() {
  const [count, setCount] = useState(0);

  return (
    <>
      <Input value={count} onChange={setCount} onSubmit={console.log} />
      <List items={["Learn React", "Learn Vite", "Make an awesome app"]} />
    </>
  );
}

export default App;

預覽遠程應用

要預覽組件,請在todo-components應用中運行以下命令:

npm run dev

此時輸出如下:

添加模塊聯合到遠程應用

現在,讓我們將模塊聯合添加到todo-components應用。首先,安裝必要的依賴項:

npm install @originjs/vite-plugin-federation --save-dev

接著,在vite.config.js文件中配置模塊聯合:

// vite.config.js in todo-components
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import federation from "@originjs/vite-plugin-federation";

export default defineConfig({
  plugins: [
    react(),
    federation({
      name: "todo-components",
      filename: "remoteEntry.js",
      exposes: {
        "./List": "./src/components/List.jsx",
        "./Input": "./src/components/Input.jsx",
      },
      shared: ["react"],
    }),
  ],
  build: {
    modulePreload: false,
    target: "esnext",
    minify: false,
    cssCodeSplit: false,
  },
});

在此配置中:

  • name:指定遠程應用的名稱。
  • filename:設置模塊聯合生成文件的名稱。
  • exposes:列出要從遠程應用公開的組件。
  • shared:聲明共享依賴項,例如React,以優化捆綁包大小。

現在,構建遠程應用:

npm run build

這會在todo-components應用程序中生成dist文件夾,其中包含remoteEntry.js文件。

為遠程應用提供服務

在本地為遠程應用提供服務:

npm run preview

這意味著在端口4173上為遠程應用提供服務。

添加模塊聯合到主機應用

要在主機應用中使用遠程應用組件,需要在主機應用的vite.config.js文件中設置模塊聯合:

// vite.config.js in host-app
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import federation from "@originjs/vite-plugin-federation";

export default defineConfig({
  plugins: [
    react(),
    federation({
      name: "host-app",
      remotes: {
        todo_components: "http://localhost:4173/assets/remoteEntry.js",
      },
      shared: ["react"],
    }),
  ],
  build: {
    modulePreload: false,
    target: "esnext",

    minify: false,
    cssCodeSplit: false,
  },
});

在此配置中:

  • name:指定主機應用的名稱。
  • remotes:列出主機應用要使用的遠程應用。在本例中,我們有遠程應用、todo_components、以及提供remoteEntry.js文件的URL。
  • shared:聲明共享的依賴項,例如React,以優化捆綁包大小。

在主機應用中使用遠程組件

現在,我們可以在主機應用的App.jsx中導入和使用遠程應用組件了:

// App.jsx in host-app
import { useState } from "react";
import List from "todo_components/List";
import Input from "todo_components/Input";

function App() {
  const [newTodo, setNewTodo] = useState("");
  const [todos, setTodos] = useState([]);
  const onSubmit = () => {
    setTodos((prev) => [...prev, newTodo]);
    setNewTodo("");
  };

  return (
    <>
      <Input value={newTodo} onChange={setNewTodo} onSubmit={onSubmit} />
      <List items={todos} />
    </>
  );
}

export default App;

這里我們使用指定的遠程名稱todo_components從遠程應用導入組件。

為主機應用提供服務

若要在本地為主機應用提供服務,運行:

npm run dev

現在,遠程應用程序中的組件就可以在主機應用程序中無縫使用了,贊。

結論

在本文中,我們探討了微前端的概念,演示了如何使用Vite和React創建微前端架構,以及如何通過模塊聯合進行增強。

通過利用Vite的快速構建和模塊聯合的動態代碼加載功能,我們可以以模塊化和可維護的方式高效地開發和擴展web應用程序。這種方法使多個團隊能夠獨立處理應用程序的不同部分,從而提高前端開發的靈活性和敏捷性。

責任編輯:武曉燕 來源: 前端新世界
相關推薦

2024-09-23 00:00:10

2023-12-26 08:00:00

微前端React

2024-05-16 10:59:16

Vue項目前端

2022-08-26 01:46:33

注冊中心NacosDNS

2021-05-31 17:37:26

ViteReactesbuild

2022-01-24 12:38:58

Vite插件開發

2023-02-02 08:41:14

React團隊Vite

2022-07-26 08:14:16

注冊中心ProviderConsumer

2011-03-04 12:18:24

FileZilla

2023-11-20 08:12:15

2023-07-12 07:06:23

2023-07-11 06:32:03

2020-10-19 06:47:05

爬蟲數據Jsoup

2022-01-17 11:41:50

前端Vite組件

2015-11-12 09:57:57

前端零基礎學習

2021-12-06 10:21:50

LinuxDNS 查詢

2016-10-31 11:26:13

ReactRedux前端應用

2019-01-23 10:11:43

Python爬蟲IP

2023-06-16 09:08:39

ReactContextRFC

2011-02-21 17:32:37

Vsftpd
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 狠狠色综合久久婷婷 | 日韩av最新网址 | 亚洲一二三区免费 | 色综合久久久 | 黄免费观看视频 | av中文字幕在线 | 免费在线看黄视频 | 欧洲一级黄 | 国产精品久久久久久久久久久免费看 | 成人性视频在线播放 | 日本二区| 福利国产 | 超碰在线97国产 | 中文在线a在线 | 91精品一区二区 | 天天干天天爱天天爽 | 欧美性猛交一区二区三区精品 | 日韩欧美在线一区 | 色av一区二区三区 | 精品一区二区三区在线视频 | 中文字幕av网址 | 成人黄色在线视频 | 日韩精品在线观看视频 | 国产一级电影网 | 天天操天天射综合网 | 精品欧美一区二区在线观看视频 | 亚洲色图综合网 | 可以在线观看av的网站 | 精品麻豆剧传媒av国产九九九 | av手机在线看 | 免费黄色a视频 | 精品视频在线免费观看 | 狠狠艹 | 久国产| 亚洲福利在线观看 | 国产成人99久久亚洲综合精品 | 午夜理伦三级理论三级在线观看 | 无码日韩精品一区二区免费 | 国产精品一区二区久久 | 久久国产精品网站 | 日本精品在线观看 |