umi-integrate-plugin v0.0.6
umi-integrate-plugin 插件的使用
umi 工程集成进主工程需要 umi-integrate-plugin 插件的配合。
在需要集成进主工程的
umi工程中安装umi-integrate-plugin$ yarn add umi-integrate-plugin修改 umi 工程的 .umirc 配置文件
开启缓存路由功能
export default { history: 'memory', }开启缓存路由的目的是为了防止子工程集成进主工程之后,子工程路由的切换会影响主工程的路由。
配置插件
```js export default { plugins: [ ['umi-integrate-plugin', { integrateName: 'gcc', fileList: [ '/umi.js', '/umi.css', ] }] ], } ```插件需要传入两个参数,
integrateName和fileList:integrateName:用来指定挂载到
window对象上的对象,这个对象上面会提供一个render方法,传入指定的id选择器,就可以调用该方法在指定的id容器内渲染出umi的内容。uportal打开新标签的时候正是通过window[integrateNmae].render(selector)的方式来渲染umi工程的。注意:这里指定的
integrateName需要和uportal配置的菜单url后面跟着的参数名保持一致。fileList:需要加载的
umi编译后的js和css资源文件路径。umi执行完$ npm run build之后会生成编译后的js和css资源,集成的时候这些资源是必须要加载到uportal中的,因为这里还涉及到一些第三方的js和css资源,所以这里提供了一个列表,传入你需要加载资源文件地址,可以根据dist目录下的index.html文件中引入的资源来确定该列表中的参数。需要注意的是,js资源的加载是有顺序的,所以根据需要来设置列表的顺序,umi.js文件需要最后加载。配置好
fileList之后,每次编译之后会在dist目录中生成一个asset-manifest.js文件,其中会包含fileList指定的资源地址,提供给主工程加载时使用。
集成多个umi工程
如果想要同时集成多个
umi工程进主工程,需要注意以下几点:
编译的时候注意每个
umi子工程的插件配置中的integrateName一定不要重复了,否则集成之后会出问题。编译的时候注意每个
umi子工程的package.json文件的name字段最好不要重复多个子工程集成进主工程会共享同一个
dav的store, 因此一定要确保umi子工程中module的namespace不一致,否则会出现多个umi子工程数据互相影响的问题,可以使用your project name + namespace进行区分。
如何进行测试
以上配置配置完毕后,大家可以进入 dist 目录下通过 http-server 启动一个静态服务,然后打开浏览器,在地址栏输入静态服务地址,在控制台中输入 window.[integrateName插件中定义].render('root'),就可以看到你的umi工程被渲染到 id 为 root 的节点中了。