vue项目落地(qiankun.js)微前端服务

qiankunJS简介 --基于spa的微服务框架 本文参考qiankunJS官方文档:介绍 - qiankun qiankunJS简介 --基于spa的微服务框架 qiankun是一个基于single-spa的微前端实现库,旨在帮助大家能更简单、无痛的构建一个生产可用微前端架构系统,孵化自蚂蚁金融科技基于微前端架构的云产品统一接入平台 qiankunJS优势 spa框架国内外都有很多,但是就国内而言,大部分开发团队都会选择qiankun,我认为有以下几个原因: 1.首先是稳定,作为阿里巴巴内部的一个B端系统解决方案,同时服务着阿里.. 阅读详情

什么是微前端?

网上抄的:

微前端是一种类似于微服务的架构,它将微服务的理念应用于浏览器端,即将单页面前端应用由单一的单体应用转变为多个小型前端应用聚合为一的应用。各个前端应用还可以独立开发、独立部署。同时,它们也可以在共享组件的同时进行并行开发.

我的理解:

微服务就像是一个操作系统:在其中可以运行多个app。但每个app呢,又可以脱离操作系统独立运行。

为什么选择qiankun.js | qiankun.js优点

大白话:

就目前市面上没有比qiankun.js更好用的了。虽基于 single-spa, 但比它更好用更简单。

qiankun.js官方优点:

  • 简单

    任意 js 框架均可使用。微应用接入像使用接入一个 iframe 系统一样简单,但实际不是 iframe。

  • 完备

    几乎包含所有构建微前端系统时所需要的基本能力,如 样式隔离、js 沙箱、预加载等。

  • 生产可用

    已在蚂蚁内外经受过足够大量的线上系统的考验及打磨,健壮性值得信赖

在vue2项目中落地qiankun.js

在现今项目中落地微前端服务架构,我已经构思和尝试了许久了。

起初因为现有项目使用的是nuxt.js,后为迎合qiankun.js后续项目改用了vue-cli。

最开始接触qiankun.js的时候,看官方文档:一脸懵逼 不知何去何从;偶然间蹭了个公开课后,大概学习了single-spa的原理和搭建qiankun.js项目后,一切变得豁然开朗。所以:任何新的概念、技术,甭管如何高大上和新,使劲啃啃都不难。

实践

主应用(基座)
创建应用
vue create vue-base
// 装vue-router哦
下载qiankun

qiankun.js只在主应用下载,子应用不必下载qiankun.js

npm i qiankun -S
配置main.js
import Vue from 'vue'
import App from './App.vue'
import router from './router'

// 导入qiankun.js
import {registerMicroApps,setDefaultMountApp,start} from "qiankun";
Vue.config.productionTip = false

new Vue({
    router,
    render: h => h(	App),
}).$mount('#app');

// 注册子应用
registerMicroApps([
  {
    name: 'vue app',			// 子应用名称
    entry: '//localhost:7101',	// 子应用入口
    container: '#container',	// 子应用所在容器
    activeRule: '/vue',			// 子应用触发规则(路径)
  },
]);

// 启动默认应用
setDefaultMountApp('/vue')

// 开启服务,配置项见官方文档
start()

App.vue
<template>
  <div id="app">
    <a href="/">base</a>
      <!-- 子应用 vue app -->
    <a href="/vue">vue</a>
      <!-- 主应用容器 -->
    <router-view></router-view>
      <!-- 子应用容器 -->
    <div id="container"></div>
  </div>
</template>
子应用
创建应用
vue create vue-children
// 装vue-router哦
配置main.js
import Vue from 'vue';
import VueRouter from 'vue-router';
import App from './App.vue';
import routes from './router';

Vue.config.productionTip = false;

let router = null;
let instance = null;

function render(props = {}) {
  const { container } = props;
  router = new VueRouter({
    base: '/vue',
    mode: 'history',
    routes,
  });

  instance = new Vue({
    router,
    render: h => h(App),
  }).$mount(container ? container.querySelector('#app') : '#app');
}

// webpack打包公共文件路径
if (window.__POWERED_BY_QIANKUN__) {
  __webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__;
}else{
	// 独立运行
  render();
}

// 生命周期
export async function bootstrap() {
  console.log('[vue] vue app bootstraped');
}
export async function mount(props) {
  console.log('[vue] props from main framework', props);
  // storeTest(props);
  render(props);
}
export async function unmount() {
  instance.$destroy();
  instance.$el.innerHTML = '';
  instance = null;
  router = null;
}
router.js
import Vue from 'vue';
import VueRouter from 'vue-router';
import Home from './components/Home'
import HelloWorld from "./components/HelloWorld";

Vue.use(VueRouter);

const routes = [
    {
        path: '/',
        name: 'home',
        component: Home,
    },
    {
        path: '/helloword',
        name: 'HelloWorld',
        component: HelloWorld,
    },
    {
        path: '/about',
        name: 'about',
        component: () => import(/* webpackChunkName: "about" */ './components/About.vue'),
    },
];
export default routes;
vue.config.js
const path = require('path');
const { name } = require('./package');

function resolve(dir) {
    return path.join(__dirname, dir);
}

const port = 7101; // dev port

module.exports = {
    outputDir: 'dist',
    assetsDir: 'static',
    filenameHashing: true,
    devServer: {
        // host: '0.0.0.0',
        hot: true,
        disableHostCheck: true,
        port,
        overlay: {
            warnings: false,
            errors: true,
        },
        // 跨域
        headers: {
            'Access-Control-Allow-Origin': '*',
        },
    },
    // 自定义webpack配置
    configureWebpack: {
        resolve: {
            alias: {
                '@': resolve('src'),
            },
        },
        output: {
            // 把子应用打包成 umd 库格式(必须)
            library: `${name}-[name]`,
            libraryTarget: 'umd',
            jsonpFunction: `webpackJsonp_${name}`,
        },
    },
};

至此, 完成qiankun.js微服务应用。


本文初发于:https://blog.zhanghaoran.ren/article/html/vueXiangMuLuoDi(qiankun.js)WeiQianDuanFuWu.html

本文代码:https://github.com/Slowhalfframe/vue_qiankun

联系邮箱:1441576268@qq.com

vue 用iframe嵌套其它项目页面针对跨域与传值页面跳转失败处理 需求:A项目中有个菜单点击的时候中心内容页面与B项目的一模一样,所以产品想把B项目的页面直接嵌入过来显示,但其中有几个问题要处理就是嵌入B项目时B项目的左侧菜单和头部导航要隐藏,并而在跳时隐式登录,不需要用户重新在B项目又登录一次。B项目在全局路由router.beforeEach中接收并在里面处理自动登录与跳转的问题。加载Iframe成功前先获取A项目用户ID这里是写的模拟的; 阅读详情

相关推荐

vue微前端qiankun框架学习到项目实战,基座登录动态菜单及权限控制

技术无关,独立开发,独立部署,增量升级,独立运行,微前端的核心目标是将巨石应用拆解成若干可以自治的松耦合微应用。

前端开发工程师 9747

qiankun.js应用

qiankun.js配置方法

tdjqqq的博客 5326

微前端入门与qiankun实战:核心原理、数据通信与避坑指南

微前端借鉴微服务理念,将复杂前端应用拆分为可独立开发、部署的子应用,成为中大型工程治理的主流架构。作为微前端核心框架,qiankun 基于 single-spa 封装,通过 import-html-entry 加载子应用,并以 Proxy 沙箱隔离全局变量,解决样式与 JS 污染难题。理解主应用与子应用生命周期、路由匹配及数据通信机制,是落地微前端的关键。在后台系统、技术栈迁移等场景中,qiankun 提供从注册、挂载到状态同步的完整方案。从概念入手,结合 Vue 项目实例,详细拆解主应用注册、子应用改造、

weixin_32050773的博客 249

基于qiankun.js的微前端应用实战

qiankun.js介绍: qiankun 是一个基于 single-spa 的微前端实现库,旨在帮助大家能更简单、无痛的构建一个生产可用微前端架构系统。参考:: 介绍-qiankun优势 技术栈无关;独立开发、部署;增量升级;独立运行状态隔离 Why Not Iframe使用: 主应用:主应用里调用app注册微应用,并通过star启动 安装qiankun 在src目录新建qiankun文件夹,并在里面新建一个index.js用于编写注册微应用代码 initQiankun方法 接口解释: register

weixin_42254016的博客 2865

Android T GPS 定位流程

Gps 定位

好记性不如烂笔头 1355

【实战指南】WinPE环境下360系统急救箱的病毒查杀全流程解析

本文详细解析了在WinPE环境下使用360系统急救箱进行病毒查杀的全流程。从制作WinPE启动盘到进入PE环境,再到360急救箱的深度使用和系统修复,提供了实用技巧和常见问题解决方案,帮助用户高效清除顽固病毒。

weixin_28568819的博客 535

registermodule 微前端_vue项目落地(qiankun.js)微前端服务'

什么是微前端?网上抄的:微前端是一种类似于微服务的架构,它将微服务的理念应用于浏览器端,即将单页面前端应用由单一的单体应用转变为多个小型前端应用聚合为一的应用。各个前端应用还可以独立开发、独立部署。同时,它们也可以在共享组件的同时进行并行开发.我的理解:微服务就像是一个操作系统:在其中可以运行多个app。但每个app呢,又可以脱离操作系统独立运行。为什么选择qiankun.js | qiankun...

weixin_32989877的博客 329

Zynq UltraScale+ RFSoC实战:用XCZU49DR开发板实现雷达信号处理全流程

本文详细介绍了如何利用Xilinx Zynq UltraScale+ RFSoC系列中的XCZU49DR开发板,高效实现雷达信号处理全流程。文章深入剖析了该芯片集成的射频直采ADC/DAC、可编程逻辑与Arm多核处理器的异构计算优势,并通过实战案例展示了从环境搭建、硬件链路设计到软件优化的完整开发路径,为相控阵雷达等高性能应用提供了单芯片解决方案。

weixin_29291863的博客 575

vue 打包过后iframe 显示不出来_vue项目落地(qiankun.js)微前端服务'

什么是微前端?网上抄的:微前端是一种类似于微服务的架构,它将微服务的理念应用于浏览器端,即将单页面前端应用由单一的单体应用转变为多个小型前端应用聚合为一的应用。各个前端应用还可以独立开发、独立部署。同时,它们也可以在共享组件的同时进行并行开发.我的理解:微服务就像是一个操作系统:在其中可以运行多个app。但每个app呢,又可以脱离操作系统独立运行。为什么选择qiankun.js | qiankun...

weixin_30063287的博客 1233

Qt UI界面美化教程1:【“飞扬青云” Qt精美控件】使用教程1

相信很多小伙伴在使用Qt Widget的过程中都会遇到一个问题,开发出来的界面,丑!丑!丑!当然Qt做界面美化可以用到QSS,需要对前端知识有一定了解,后续本套教程将会做讲解。本篇文章,我们直接站在巨人(大佬飞扬青云)的肩膀上,使用他开发好的163款自定义控件,请大家一定支持他,去给他小心心,他的个人主页:本篇文章只讲述如何在 QtDesigner 安装这些控件。

2401_87556704的博客 1419

地平线旭日X3派(RDK X3)从开箱到联网:新手避坑指南

本文为地平线旭日X3派(RDK X3)新手提供从开箱到联网的完整避坑指南。详细讲解了硬件识别、系统镜像烧录、串口调试(波特率921600)、有线/无线网络配置以及SSH/VNC远程访问等关键步骤,帮助开发者快速搭建稳定的开发环境,为后续AI应用部署扫清障碍。

weixin_29174385的博客 934

vue项目落地(qiankun.js)微前端服务‘

什么是微前端? 网上抄的: 微前端是一种类似于微服务的架构,它将微服务的理念应用于浏览器端,即将单页面前端应用由单一的单体应用转变为多个小型前端应用聚合为一的应用。各个前端应用还可以独立开发、独立部署。同时,它们也可以在共享组件的同时进行并行开发. 我的理解: 微服务就像是一个操作系统:在其中可以运行多个app。但每个app呢,又可以脱离操作系统独立运行。 为什么选择qiankun.js | qiankun.js优点 大白话: 就目前市面上没有比qiankun.js更好用的了。虽基于sing.

飞翔的熊blabla 1259

PuTTY使用方法

PuTTY是一款开源SSH/Telnet客户端,主要用于Windows系统连接Linux服务器。使用步骤包括:下载安装PuTTY,输入服务器IP和端口(默认22),可选择保存会话配置。支持密码和SSH密钥认证(需转换.pem为.ppk格式)。首次连接需确认主机密钥,成功登录后可执行Linux命令。其他功能包括会话日志记录、X11转发和端口隧道配置。操作完成后输入exit断开连接。

特网云计算 3150

js array formdata_vue项目落地(qiankun.js)微前端服务'

什么是微前端?网上抄的:微前端是一种类似于微服务的架构,它将微服务的理念应用于浏览器端,即将单页面前端应用由单一的单体应用转变为多个小型前端应用聚合为一的应用。各个前端应用还可以独立开发、独立部署。同时,它们也可以在共享组件的同时进行并行开发.我的理解:微服务就像是一个操作系统:在其中可以运行多个app。但每个app呢,又可以脱离操作系统独立运行。为什么选择qiankun.js | qiankun...

weixin_39622332的博客 109

视觉巡线小车(STM32+OpenMV)——技术总结

在现代机器人技术中,视觉巡线是一种常见的导航方式,它允许机器人通过识别和跟踪地面上的线路来自主导航。本文将总结使用STM32微控制器和OpenMV视觉模块来实现视觉巡线小车的关键技术和步骤。

weixin_66608063的博客 3077

SPSS篇—卡方检验

今天依旧跟大家分享一个在SPSS中使用率比较高的分析方法:卡方检验。 在开始做分析之前,我们需要明白两件事情:卡方检验是什么?一般用来干什么?我们只有充分了解分析方法以后才能够正确的使用它。 卡方检验在百科中的解释是:卡方检验是用途非常广的一种假设检验方法,它在分类资料统计推断中的应用,包括:两个率或两个构成比比较的卡方检验;多个率或多个构成比比较的卡方检验以及分类资料的相关分析等。它的原理是...

小白数据营的博客 20万+

基于qiankun的微服务落地实践

qiankun 是一个基于single-spa的微前端实现库,旨在帮助大家能更简单、无痛的构建一个生产可用微前端架构系统。qiankun 孵化自蚂蚁金融科技基于微前端架构的云产品统一接入平台,在经过一批线上应用的充分检验及打磨后,我们将其微前端内核抽取出来并开源,希望能同时帮助社区有类似需求的系统更方便的构建自己的微前端系统,同时也希望通过社区的帮助将 qiankun 打磨的更加成熟完善。目前 qiankun 已在蚂蚁内部服务了超过 200+ 线上应用,在易用性及完备性上,绝对是值得信赖的。

高灯GFE 775

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

基于qiankun框架的微前端实战使用

最近公司要整合目前所有的前端项目,希望放到同一个项目里面进行管理,但是项目使用的技术栈大体不相同,有原生js的,有用jq的也有用Vue的,整合的话要么重构,统一技术栈,不过这是不现实的,成本高,时间长,要么使用iframe,但是iframe也有很多缺点,通信不方便,刷新页面会导致路由丢失,这都是很不好的体验,于是我想起了最近很火的微前端概念,打算用微前端的技术来整合已有项目。 什么是微前端?微前端就是将不同的功能按照不同的维度拆分成多个子应用。通过主应用来加载这些子应用。微前端的核心在于拆,拆完后...

qq_37947438的博客 4957

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Vue3微前端项目复盘:qiankun落地过程中的样式隔离与通信问题

样式隔离三件套:CSS Modules(主力)+ PostCSS前缀(兜底)+ experimentalStyleIsolation(安全网)通信三阶段:props(简单场景)→事件总线(通知类)→共享Store(复杂场景)Vite子应用需要特殊处理资源路径——开发环境用localhost,生产环境用绝对URL全局UI组件(弹窗/消息提示)的隔离是最难解决的问题之一混用不同前端框架的子应用时,路由和状态管理需要明确边界当前系统5个子应用稳定运行6个月。

qq_34803115的博客 5046

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

微前端实战看这篇就够了 - Vue项目篇

qiankun + vue + element 的微前端架构项目,主项目与子应用均使用vue。支持三大前端框架可根据自己需求调整。 微前端 qiankun 微前端是什么、为什么要做微前端、qiankun是什么这些笔者将不再叙述,在前端微服务话提出的两年里已经有过了很多次的讨论和“定义”。 qiankun有兴趣的可以搜一下。 暂时还对这方面未有过了解的同学-> 传送门:可能是你见过最完善的微前...

qq_15390381的博客 9346

基于qiankun落地部署微前端爬”坑“记

❝前沿:前半年微前端火得一踏糊涂,刚好业务需求上有这样的应用场景,针对目前的微前端解决方案做了技术选型,qiankun作为蚂蚁金服内部孵化出来的微前端解决方案,经过线上应用充分检验及打磨...

u013655559的博客 1万+

vue2[webpack]中接入vue3[vite]的qiankun微前端服务

在vue2[webpack]老项目中,使用qiankun.js微前端服务,接入vue3[vite]新项目。

zhanghaoran 2308

qiankun 微前端实践指南 —— 从搭建到落地

本文介绍了使用 qiankun 框架实现微前端的实践指南。文章还提供了开发中可能遇到的跨域、样式污染等问题的解决办法。通过该指南可以快速在项目中集成 qiankun 微前端架构。

x15514104477的博客 1109

微前端(Single-spa)框架在Vue项目中落地

关于微前端这里做一个简单的介绍: "微前端构架"是一种使用微服务模式构建前端应用的方式,微前端中的理念是将一组组服务拆分成相互解耦的模块,然后通过一个统一的父模块进行整体的调度。同时在微前端的架构中,我们可以同时使用React, Vue, Angular,甚至是原生的Js,Jquery开发的应用都可以通过微前端进行调度。 关于微前端的框架: 微前端的框架现在比较成熟的是 “Single-spa” 和 “QianKun”, 而"QianKun"是基于Single-spa实现的,所以使用"QianKun"可能会

qq_44746132的博客 4956
上一篇: jenkins自动化构建vue程序并发布至远程服务器
下一篇: NProgress使用笔记
慢半帧
博客等级 码龄8年 14粉丝 40原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值