我正在尝试构建vue.js,typescript,vite应用程序。我还使用vite-module-federation-plugin通过不同的应用程序共享代码。我想知道是否有一种方法可以与模块联邦共享实际数据或只是代码?例如,如果我有一个商店,(Pinia商店)我有东西在里面,有没有一种方法可以通过应用程序共享它,使他们能够修改和添加数据到商店中,并在所有应用?
通过模块联合,我可以共享存储的代码,并使其可用于所有应用程序,但不能用于存储本身的示例。一旦存储被初始化,存储上的任何更新都将仅在对其进行变化的应用程序上可见。
代码共享示例:在主机应用程序中:
import { defineConfig } from 'vite';
import Vue from '@vitejs/plugin-vue';
import { ModuleFederationPlugin } from '@module-federation/next/vite';
export default defineConfig({
plugins: [
Vue(),
ModuleFederationPlugin({
name: 'app1',
filename: 'remoteEntry.js',
exposes: {
'./CounterStore': './src/store/counterStore.ts',
},
}),
],
});
字符串
在消费应用程序中:
import { defineConfig } from 'vite';
import Vue from '@vitejs/plugin-vue';
import { ModuleFederationPlugin } from '@module-federation/next/vite';
export default defineConfig({
plugins: [
Vue(),
ModuleFederationPlugin({
name: 'app2',
filename: 'remoteEntry.js',
remotes: {
app1: 'app1@http://localhost:3001/remoteEntry.js',
},
}),
],
});
型
在动态加载组件后,我得到了上面解释的结果。
1条答案
按热度按时间j9per5c41#
从Module Federation Documentation开始:
模块联合是一个概念,它允许开发人员在多个JavaScript应用程序或微前端之间共享代码和资源。
不行,你只能分享代码和资产,不能分享州