前提概述
模組聯邦可以將多個獨立執行的專案產生依賴關係,以下建立兩個專案,讓a專案依賴b專案的乙個元件。(前三步兩個專案配置相同)
(1)、安裝webpack環境
npm init -y
npm i webpack webpack-cli webpack-dev-server html-webpack-plugin -d
(2)、建立入口檔案
在根目錄下建立 /src/index.js
(3)、配置webpack
在根目錄下建立webpack.config.js
// webpack.config.js
const htmlwebpackplugin = require('html-webpack-plugin')
module.exports =
(4)、準備b專案資源
在package.json中配置啟動指令碼:
"scripts": ,
在src下建立乙個檔案匯出資源 命名為createheader.js
export default () =>
修改webpack.config.js檔案
const htmlwebpackplugin = require('html-webpack-plugin')
const = require('webpack').container
module.exports = , // 該專案需要遠端依賴的配置
exposes: ,
shared: {} // 改專案分享的公共模組
})]}
啟動b專案
npm run dev
(5)、配置a專案
在package.json中配置啟動指令碼:
"scripts": ,
修改webpack.config.js檔案
const htmlwebpackplugin = require('html-webpack-plugin')
const = require('webpack').container
module.exports = ,
exposes: {},
shared: {}
})]}
在index.js中使用
;(async () => = await import('header/createheader')
})()
啟動a專案 訪問http://localhost:3000 即可看到header被引入了
npm run dev
前提概述
以下建立兩個react專案,讓a專案依賴b專案的乙個元件。(第一步兩個專案配置相同)
(1)、使用react腳手架搭建兩個react專案
以a專案為例
cd a
// 拉取配置檔案
npm run eject
(2)、準備b專案資源
在scr/components下建立乙個元件button.jsx
const button = () =>
)}export default button
修改專案啟動的埠 script/start.js 修改啟動埠為3001
// const default_port = parseint(process.env.port, 10) || 3000;
const default_port = parseint(process.env.port, 10) || 3001;
修改config/webpack.config.js檔案 加入模組聯邦外掛程式,並將定義好的button元件暴露出去
...
const = require('webpack').container;
...plugins: [
...output:
...new modulefederationplugin(,
exposes: ,
}),....
]
啟動專案
npm start
(3)、配置a專案
修改config/webpack.config.js檔案 加入模組聯邦外掛程式,配置好依賴
...
const = require('webpack').container;
...plugins: [
...new modulefederationplugin(,
exposes: {},
shared: {}
}),....
]
在需要使用的地方直接呼叫,由於是遠端載入所以需要用非同步方式
import react, from 'react'
const button = react.lazy(() => import('component/button'))
return (
);}
啟動專案
npm run start
模組聯邦可以實現微前端,獨立打包部署每乙個應用,其原理是將公共檔案單獨打包成乙個js,在引用的地方直接用js標籤請求即可,但無法支援seo。 聯邦學習 聯邦學習
文章內容主要來自文末網盤內部分資料 最近微眾舉辦了乙個面向高校大學生的ai比賽,題目如下 基於微眾提出的聯邦學習模型,設計一款有應用場景的產品。資料來源之間存在著難以打破的壁壘,一般情況下人工智慧的所需要的資料會涉及多 個領域,例如在基於人工智慧的產品推薦服務中,產品銷售方擁有產品的資料 使用者購買...
git管理 webpack模組打包
git管理 webpack模組打包 git管理 git和svn區別 1.svn 集中式版本控制系統,版本庫是集中存放在 伺服器的,而幹活的時候,用的都是自己的電腦,所以要先從 伺服器取得最新的版本,然後開始幹活,幹完活了,再把自己的活推送給 伺服器。2.git 分布式版本控制系統根本沒有 伺服器 每...
webpack 概念9 模組熱替換
讓我們從不同角度出發 1 在應用程式中 除了普通資環,編譯器 compiler 需要發出update,允許更新之前的版本到新的版本,update由2部分構成 1 更新後的manifest json 2 乙個或者多個更新後的chunk js manifest包括新的編譯hash和所有的待更新chunk...