# 性能优化
# 背景
通常情况下为了减小应用体积,我们希望抽离出一些公共的三方库,只在宿主中做加载。
# 子应用外置依赖
首先你需要在构建的时候剔除掉你依赖的三方库;
// 你的子应用的库
config.externals = {
react: {
root: 'React',
commonjs2: 'react',
commonjs: 'react',
amd: 'react',
},
'react-dom': {
root: 'ReactDOM',
commonjs2: 'react-dom',
commonjs: 'react-dom',
amd: 'react-dom',
}
# 宿主中植入依赖
然后你需要在宿主应用加载的时候指定你要共享的三方依赖
import React from 'react';
import ReactDom from 'react-dom';
start({
deps: {
'react': React
'react-dom': ReactDom
}
})
# 共享自己项目中的业务库
你也可以注入你自己的业务依赖,假设你的子应用中使用如下的一个组件, 你现在希望所有的子应用都共享宿主中的一份代码,可以参照如下做法
# 子应用
你需要配置一下你的webpack alias 配置
-import A from './components/A';
+import A from 'A';
return () => <A/>
然后添加 external.
// 你的子应用的库
config.externals = {
A: {
root: 'A',
commonjs2: 'A',
commonjs: 'A',
amd: 'A',
}
这样 A 在打包的时候就不会被打包进到子应用的代码中。
# 宿主:
你可以把刚才的 ./component/A 移到宿主代码中, 然后在宿主代码中注入,
import A from './component/A';
start({
deps: {
A: A,
}
})