发布时间:2023-04-25 文章分类:WEB开发, 电脑百科 投稿人:赵颖 字号: 默认 | | 超大 打印

下载运行

deom下载

官方demo在GitHub(访问有问题,需要设置,本人未设置)

链接:https://github.com/Tencent/wujie (别处给的,也能用)

pnpm下载

其中的包需要通过pnpm下载,使用npm下载存在问题!!!

npm install pnpm -g

注:默认下载最新版pnpm,支持的node为14.6以上,以下版本请到pnpm官网找历史版本

运行

npm run start

出现一下界面,即为成功:

微前端--无界方案之官网demo操作说明

加入个人项目

创建项目

在examples中创建一个自己的项目(本人用的vue2,所以创建一个vue2的项目,其他类推)

微前端--无界方案之官网demo操作说明

注:主页面项目就是我们所有项目最终运行的地方,相当于main

微前端--无界方案之官网demo操作说明

个人项目--配置路由

初始项目(做实验的)

配置路由,方便一会展示使用,如果个人项目中有vue的脚手架,推荐使用一个简单方法生成一个路由

vue add router

会自动生成一个router.js文件和两个路径模板

完整项目

需要在路由主文件中设置如下

微前端--无界方案之官网demo操作说明
export default new Router({
mode: 'history',
base: process.env.NODE_ENV === 'production' ? '/{项目名称}/' : '',
routes: [{
path: '/',
name: 'home',
component: Home
},
{
path: '/about',
name: 'about',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import( /* webpackChunkName: "about" */ './views/About.vue')
}
]
})

开始关联

在main-vue中,开始个人项目和无界关联起来,在其router.js文件中做如下操作

微前端--无界方案之官网demo操作说明

首先,导入一个页面

import VueTest from "../views/Vuetest.vue";

然后配置路由路径,注意name属性值与之前一致

{
path: "/vuetest",
name: "vue_test",
component: VueTest,
},

如下图

微前端--无界方案之官网demo操作说明

然后在views文件中加入我们导入的页面

微前端--无界方案之官网demo操作说明

如下图

微前端--无界方案之官网demo操作说明

代码:

<template>
<div>
<h2>ADASDADAD!!</h2>
<WujieVue width="100%" height="100%" name="vue_dtest" :url="viteUrl" :sync="true"></WujieVue>
</div>
</template>
<script>
import hostMap from '../hostMap.js';
export default {
data() {
return {
viteUrl: hostMap('//localhost:8080/')
};
}
};
</script>
<style></style>

然后在main-vue的hostMap.js文件中添加个人项目的配置,项目地址值是不一样的,不要跟我写的一样,会运行不了

微前端--无界方案之官网demo操作说明

代码:

const map = {
"//localhost:7100/": "//wujie-micro.github.io/demo-react17/",
"//localhost:7200/": "//wujie-micro.github.io/demo-vue2/",
"//localhost:7300/": "//wujie-micro.github.io/demo-vue3/",
"//localhost:7400/": "//wujie-micro.github.io/demo-angular12/",
"//localhost:7500/": "//wujie-micro.github.io/demo-vite/",
"//localhost:8080/": "//localhost:8080/",
"//localhost:7600/": "//wujie-micro.github.io/demo-react16/",
"//localhost:7700/": "//wujie-micro.github.io/demo-main-react/",
"//localhost:8000/": "//wujie-micro.github.io/demo-main-vue/",
};
export default function hostMap(host) {
if (process.env.NODE_ENV === "production") return map[host];
return host;
}

最后,在main-vue中的app.vue上加入router-link语句

微前端--无界方案之官网demo操作说明

项目就会展示出对应的目录

微前端--无界方案之官网demo操作说明

问题:

如果出现跟下图一样的问题,我们的页面并没有加载出来,首先我们个人的项目要运行起来,才可以展示出页面

微前端--无界方案之官网demo操作说明

如果打开控制台,发现一下报错

Access to fetch at *** from origin *** has been blocked by CORS policy: No 'Access-Control-Allow-Origin'

则说明我们没有解决跨域问题

解决办法

给我们的个人项目设置代理,例如vue.config.js文件

/ vue.config.js
/**
* @type {import('@vue/cli-service').ProjectOptions}
*/
module.exports = {
publicPath: "./",
devServer: {
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "*",
"Access-Control-Allow-Methods": "*",
},
port: "8080",
},
};

然后重新运行下我们个人的项目,再次刷新页面,就会出现结果,路由跳转也没有问题

微前端--无界方案之官网demo操作说明