广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue + qiankun 项目搭建过程
  • 326
分享到

vue + qiankun 项目搭建过程

vue  qiankun 项目搭建vue  qiankun 搭建 2023-03-03 11:03:04 326人浏览 泡泡鱼
摘要

目录一、cli3构建Vue2项目二、qiankun改造主应用三、qiankun改造子应用一、cli3构建vue2项目 1、前期工作:查看cli安装情况与安装 npm install

一、cli3构建vue2项目

1、前期工作:查看cli安装情况与安装

npm install -g @vue/cli

已安装情况查看:vue -V(大写的V)

2、新建项目

vue create main-project

3、选择自定义配置

配置选择

选择vue版本、babel、router、vuex、CSS预处理器、lint格式校验

选择vue 2.x

qiankun 子应用建议使用 history路由模式 

 选择自己喜欢的css预处理器

选择eslint标准配置

提交保存eslint都需要验证 

单独的配置文件

不保存这个配置 

项目创建成功

自己喜欢的eslint配置eslintrc.js 

module.exports = {
    root: true,
    env: {
            node: true
    },
    extends: [
        'plugin:vue/essential',
        '@vue/standard'
    ],
    parserOptions: {
        parser: 'babel-eslint'
    },
    rules: {
        'semi': 'off',
        'quotes': 'off',
        'indent': ["error", 4],
        "space-before-function-paren": "off",
        'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
        'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
    }
}

4、进入项目文件夹内 cd frame安装插件

安装依赖的插件 element ui、 axiOS

安装element ui:

npm i element-ui -S

安装完成后修改main.js

import Vue from 'vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import App from './App.vue'
import router from './router'
import store from './store'
 
Vue.use(ElementUI)
 
Vue.config.productionTip = false
 
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

安装axios:

npm install axios

新建了个文件夹api index.js 引用axios,统一处理api与使用qiankun与此无关

import Axios from 'axios'

到此只是建项目,两个项目一个main-project 和sub-project

主应用 main-project:

子应用 sub-project:

二、qiankun改造主应用

1、 主应用安装qiankun

npm install qiankun --save

2、给菜单增加一个router-link,to值为"/subProject",并且在router-view的下面增加一个id为VueContainer的盒子,用于承载子应用。

3、 新增一个qiankun文件夹里面加个index.js。导入qiankun中的reGISterMicroApps和star两个方法,注册子应用并启动qiankun

import { registerMicroApps, start } from "qiankun";
 
export const useQiankun = () => {
    const apps = [
        {
            name: "sub-project",
            entry: "Http://localhost:8091", // 主应用端口用8090,子应用8091
            container: "#VueContainer",
            activeRule: "/subProject", // 与route-link to的相同
            props: {
                msg: "这是父应用传过来的值,传递给子应用sub-project"
            }
        }
    ]
 
    registerMicroApps(apps, {
        beforeLoad: [
            (app) => {
                console.log(`${app.name}的beforeLoad`);
            }
        ],
        beforeMount: [
            (app) => {
                console.log(`${app.name}的beforeMount`);
            }
        ],
        afterMount: [
            (app) => {
                console.log(`${app.name}的afterMount`);
            }
        ],
        beforeUnmount: [
            (app) => {
                console.log(`${app.name}的beforeUnmount`);
            }
        ],
        afterUnmount: [
            (app) => {
                console.log(`${app.name}的afterUnmount`);
            }
        ]
    });
 
    start({ experimentalStyleIsolation: true, prefetch: "all" });
};

4、在main.js里 导入 qiankun/index, 注册子应用并启动

import { useQiankun } from './qiankun/index'    
 
vueApp.$nextTick(() => {
    useQiankun()
})

三、qiankun改造子应用

1、 主应用安装qiankun

npm install qiankun --save

2、先修改一下vue实例挂载的id,#app改为subApp便于区分

3、在src中增加一个文件夹qiankun,public-path.js,判断window.__ POWERED_BY_QIANKUN __,如果是从qiankun启动则将window. __ INJECTED_PUBLIC_PATH_BY_QIANKUN __ 的值赋值给 __ webpack_public_path __ 

if (window.__POWERED_BY_QIANKUN__) {
  // eslint-disable-next-line camelcase, no-undef
  __WEBpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__
}

 4、router/index.js改造,创造vue实例移入main.js

5、main.js 导入VueRouter、routes、 public-path移除原来的router

import "./public-path";
import VueRouter from "vue-router";
import routes from "./router";

6、main.js中创建vue实例的代码提到render函数里,并接收一个参数,

router实例也放入render函数,修改router/index.js,process.env.BASE_URL,指定base值为:“/subProject”

判断public-path的window.__POWERED_BY_QIANKUN__如果不是从qiankun启动,直接调用render表示独立运行

let instance
let router
function render(props = {}) {
    const { container } = props;
    router = new VueRouter({
        mode: "history",
        base: "/subProject",
        routes
    });
    instance = new Vue({
        router,
        store,
        render: (h) => h(App)
    }).$mount(container ? container.querySelector("#subApp") : "#subApp");
}
// 如果不是从qiankun启动,直接调用render表示独立运行
if (!window.__POWERED_BY_QIANKUN__) {
    render();
}

5、main.js 导出3个必需的方法bootstrap,mount和unmount;mount函数中调用render方法进行子应用渲染。unmount函数中将render方法中创建的vue实例销毁。

export async function bootstrap() {
    console.log("[vue] vue bapp bootstraped");
}
export async function mount(props) {
    console.log("[vue] props from main framework", props);
    render(props);
}
export async function unmount() {
    instance.$destroy();
    instance.$el.innerhtml = "";
    instance = null;
    router = null;
}

整体的main.js

import "./qiankun/public-path";
import Vue from "vue";
import VueRouter from "vue-router";
import ElementUI from "element-ui";
import "element-ui/lib/theme-chalk/index.css";
import "./assets/main.css";
import App from "./App.vue";
import routes from "./router";
import store from "./store";
 
Vue.use(ElementUI);
 
Vue.config.productionTip = false;
 
let instance
let router
function render(props = {}) {
    const { container } = props;
    router = new VueRouter({
        mode: "history",
        base: "/subProject",
        routes
    });
    instance = new Vue({
        router,
        store,
        render: (h) => h(App)
    }).$mount(container ? container.querySelector("#subApp") : "#subApp");
}
// 如果不是从qiankun启动,直接调用render表示独立运行
if (!window.__POWERED_BY_QIANKUN__) {
    render();
}
 
export async function bootstrap() {
    console.log("[vue] vue bapp bootstraped");
}
export async function mount(props) {
    console.log("[vue] props from main framework", props);
    render(props);
}
export async function unmount() {
    instance.$destroy();
    instance.$el.innerHTML = "";
    instance = null;
    router = null;
}

5、增加vue.config.js,

配置允许跨域:“ Access-Control-Allow-Origin:’*’ ”,并配置webpack的output.library和output.libraryTarget

const { name } = require('./package');
module.exports = {
    productionSourceMap: false,
    lintOnSave: process.env.NODE_ENV === 'development',
    devServer: {
        proxy: {
            "/cmp": {
                target: "https://11.11.9.206:8080",
                ws: true,
                changeOrigin: true,
                secure: false
                // pathRewrite: { "^/cmp/api": "" }
            }
        },
        headers: {
            'Access-Control-Allow-Origin': '*'
        }
    },
    configureWebpack: {
        name: name,
        output: {
            library: `${name}-[name]`,
            libraryTarget: 'umd', // 把微应用打包成 umd 库格式
            JSONpFunction: `webpackJsonp_${name}`
        }
    }
};

 6、最终样子       

到此这篇关于vue + qiankun 项目搭建的文章就介绍到这了,更多相关vue  qiankun 项目搭建内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: vue + qiankun 项目搭建过程

本文链接: https://www.lsjlt.com/news/198385.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue + qiankun 项目搭建过程
    目录一、cli3构建vue2项目二、qiankun改造主应用三、qiankun改造子应用一、cli3构建vue2项目 1、前期工作:查看cli安装情况与安装 npm install ...
    99+
    2023-03-03
    vue  qiankun 项目搭建 vue  qiankun 搭建
  • vue+qiankun项目如何搭建
    这篇文章主要介绍了vue+qiankun项目如何搭建的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue+qiankun项目如何搭建文章都会有所收获,下面我们一起来看看吧。一、cli3构建vue2项目前期工作:...
    99+
    2023-07-05
  • Node.js+Express+Vue+MySQL+axios的项目搭建全过程
    目录1 基本搭建1.1 vue脚手架安装1.2 在创建好的项目中创建server文件夹1.3 编写前端界面1.4 启动服务测试2 axios的使用axios安装和使用配置proxy进...
    99+
    2022-12-08
    Node.js项目搭建 Vue项目搭建 Express项目搭建
  • 使用vue-cli搭建SPA项目的详细过程
    目录一、vue-cli构建SPA项目及SPA项目结构介绍1.1利用vue-cli构建SPA1.2spa的访问过程:1.3如何安装vue-cli命令二、SPA完成路由的开发步骤三、嵌套...
    99+
    2022-11-13
  • django项目环境的搭建过程
    本篇内容介绍了“django项目环境的搭建过程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!安装环境:centos7.41 安装nginx&...
    99+
    2023-06-02
  • vue项目环境搭建
    一、node.js下载和安装 官网下载安装nodejs,会自动捆绑安装npm,具体步骤省略。 二、express 安装 npm install express -g npm inst...
    99+
    2022-11-13
  • 怎么搭建vue+springboot项目
    这篇文章主要讲解了“怎么搭建vue+springboot项目”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么搭建vue+springboot项目”吧!开发使用的软件idea: 编写后端sp...
    99+
    2023-06-30
  • webstorm怎么搭建vue项目
    这篇文章给大家分享的是有关webstorm怎么搭建vue项目的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。首先我们来介绍几个名词。Node.js:Node.js 是一个基于 Chrome V8 引擎的 JavaS...
    99+
    2023-06-06
  • linux 下jenkins项目搭建过程(centos7为例 )
    以部署https://gitee.com/tengge1/ShadowEditor 这个项目为例 一.安装jdk 1.下载jdk 以jdk-8u261-linux-x64.tar.gz 安装为例 2.创建 java文件夹...
    99+
    2022-06-04
    linux搭建jenkins centos 搭建jenkins
  • Vue3项目搭建的详细过程记录
    目录一、前言二、搭建准备三、搭建项目四、启动项目总结一、前言 在2020年的9月19日,万众期待的Vue3终于发布了正式版,命名为“One Piece”。 它...
    99+
    2022-11-13
    vue3项目搭建流程 vue3项目 Vue项目搭建
  • SpringBoot+MyBatisPlus+Vue 前后端分离项目快速搭建过程(后端)
    目录数据库准备后端搭建1、快速创建个SpringBoot项目2、引入依赖3、编写代码快速生成代码4、运行代码生成器生成代码5、编写application.properties6、在启...
    99+
    2022-11-12
  • vue-cli4.5.x快速搭建项目
    一、安装vue-cli npm i @vue/cli -g 二、创建项目 vue-cli会创建一个完整的项目文件夹,内部包含src等,我们仅需要cd进打算放置这个项目文件的文件...
    99+
    2022-11-12
  • vue-cli4.5.x怎么搭建项目
    这篇文章主要介绍了vue-cli4.5.x怎么搭建项目,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、安装vue-clinpm i @vue/cli&n...
    99+
    2023-06-15
  • vue项目环境如何搭建
    这篇文章主要介绍了vue项目环境如何搭建的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue项目环境如何搭建文章都会有所收获,下面我们一起来看看吧。一、node.js下载和安装官网下载安装nodejs,会自动捆...
    99+
    2023-06-30
  • 怎么搭建一个vue项目
    这篇“怎么搭建一个vue项目”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么搭建一个vue项目”文章吧。一、环境准备1、安...
    99+
    2023-07-02
  • python mysql项目实战及框架搭建过程
    前言 python+mysql.connector,demo实战 框架搭建 说实话,其实没有使用到框架,只是用了, python+mysql.connector模块 首先在开始虚拟环境: (vega-j-vI5S...
    99+
    2022-06-02
    python mysql项目实战 mysql项目实战 python 项目实战
  • Python之Web框架Django项目搭建全过程
    Python之Web框架Django项目搭建全过程 IDE说明: Win7系统 Python:3.5 Django:1.10 Pymysql:0.7.10 Mysql:5.5 注:...
    99+
    2022-06-04
    全过程 框架 项目
  • vite+element-plus项目基础搭建的全过程
    目录1.引言2.为什么是Vite3.为什么是Element-plus4.项目搭建5.参考文献总结1.引言 其实本来不应该写这种CSDN比较多的博文的,主要是因为比较多,然后想解决问题...
    99+
    2022-11-13
  • SpringBoot+MyBatisPlus+Vue 前后端分离项目快速搭建过程(前端篇)
    目录后端篇前端篇 创建vue项目安装所需工具开始编码启动前端测试后端篇 SpringBoot+MyBatisPlus+Vue 前后端分离项目快速搭建【后端篇】【快速生成后端...
    99+
    2022-11-12
  • Vue脚手架搭建及创建Vue项目流程的详细教程
    目录VUE脚手架搭建流程安装国内淘宝镜像安装 Vue 脚手架Vue项目创建项目结构解读项目修改测试总结VUE脚手架搭建流程 1.安装 Node.js(推荐一个网站:http://no...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作