自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

什么是微前端?

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

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

模塊聯(lián)合

模塊聯(lián)合是一項關(guān)鍵技術(shù),使JavaScript應用程序能夠在共享依賴項的同時從另一個應用程序動態(tài)加載代碼。

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

為什么選擇Vite?

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

使用Vite + React創(chuàng)建微前端

創(chuàng)建微前端通常涉及兩個主要部分:

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

在了解了我們將要使用的技術(shù)之后,讓我們實際實現(xiàn)試試。

設(shè)置主機應用

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

# 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

設(shè)置遠程應用

對遠程應用程序,執(zhí)行以下命令:

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

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

npm install

在遠程應用中創(chuàng)建組件

在todo-components應用中,創(chuàng)建以下組件:

// 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

此時輸出如下:

添加模塊聯(lián)合到遠程應用

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

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

接著,在vite.config.js文件中配置模塊聯(lián)合:

// 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:設(shè)置模塊聯(lián)合生成文件的名稱。
  • exposes:列出要從遠程應用公開的組件。
  • shared:聲明共享依賴項,例如React,以優(yōu)化捆綁包大小。

現(xiàn)在,構(gòu)建遠程應用:

npm run build

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

為遠程應用提供服務

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

npm run preview

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

添加模塊聯(lián)合到主機應用

要在主機應用中使用遠程應用組件,需要在主機應用的vite.config.js文件中設(shè)置模塊聯(lián)合:

// 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,以優(yōu)化捆綁包大小。

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

現(xiàn)在,我們可以在主機應用的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

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

結(jié)論

在本文中,我們探討了微前端的概念,演示了如何使用Vite和React創(chuàng)建微前端架構(gòu),以及如何通過模塊聯(lián)合進行增強。

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

責任編輯:武曉燕 來源: 前端新世界
相關(guān)推薦

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

2023-02-02 08:41:14

React團隊Vite

2022-01-24 12:38:58

Vite插件開發(fā)

2022-07-26 08:14:16

注冊中心ProviderConsumer

2011-03-04 12:18:24

FileZilla

2023-11-20 08:12:15

2022-01-17 11:41:50

前端Vite組件

2020-10-19 06:47:05

爬蟲數(shù)據(jù)Jsoup

2023-07-11 06:32:03

2023-07-12 07:06:23

2015-11-12 09:57:57

前端零基礎(chǔ)學習

2021-10-12 23:01:42

項目語法React

2016-10-31 11:26:13

ReactRedux前端應用

2022-05-08 13:05:22

職位產(chǎn)品經(jīng)理開源

2024-09-13 09:03:28

2021-07-29 08:57:23

ViteReact模塊
點贊
收藏

51CTO技術(shù)棧公眾號