利用qiankun框架在自己项目中集成拖拽式低代码数据可视化开发平台

这篇具有很好参考价值的文章主要介绍了利用qiankun框架在自己项目中集成拖拽式低代码数据可视化开发平台。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目前微前端已经是很成熟的技术了,各大公司都推出了自己的微前端框架,比如蚂蚁的qiankun,京东的micro-app,如果你的子应用不使用vite构建的话,我会更加推荐后者,micro-app使用更加简单,micro-app并没有沿袭single-spa的思路,而是借鉴了WebComponent的思想,是目前市面上接入微前端成本最低的方案。

这次集成的是开源框架GoView,GoView 是一个高效的拖拽式低代码数据可视化开发平台,将图表或页面元素封装为基础组件,无需编写代码即可制作数据大屏,减少心智负担 

 正式开始构建项目:

1,主应用

        主应用使用的是vue-element-template开源后台管理框架,思路都一样,首先在路由中添加一个页面,在目录结构也记得添加

  {
    path: '/chat',
    component: Layout,
    children: [
      {
        path: 'index',
        name: 'chat',
        component: () => import('@/views/chat/index'),
        meta: { title: 'chat', icon: 'chat' }
      }
    ]
  },

        然后再路由出口页面,这里是AppMain,添加要挂载的元素

<template>
  <section class="app-main">
    <transition name="fade-transform" mode="out-in">
      <router-view :key="key" />
    </transition>
    //子应用要挂载的dom
    <div id="container"></div>
  </section>
</template>

        接下来安装qiankun

npm i qiankun

        然后在main.js中注册

import { registerMicroApps, start } from 'qiankun';
//注册子应用,可以注册多个
registerMicroApps([
  {
    name: 'vue-app',//子应用名称
    entry: '//localhost:3000',//子应用端口
    container: '#container',//挂在节点
    activeRule: '/chat',//匹配路径
  },
]);

start();

2,子应用

        下载goView源码:https://gitee.com/dromara/go-view,安装依赖,运行

        它是vite构建的应用,所以需要用到对应的支持插件

npm install vite-plugin-qiankun

        安装完成后,打开vite.config.js,做如下修改,已经备注

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { resolve } from 'path'
import { OUTPUT_DIR, brotliSize, chunkSizeWarningLimit, terserOptions, rollupOptions } from './build/constant'
import viteCompression from 'vite-plugin-compression'
import { viteMockServe } from 'vite-plugin-mock'
import monacoEditorPlugin from 'vite-plugin-monaco-editor'
import qiankun from 'vite-plugin-qiankun'//导入依赖

function pathResolve(dir: string) {
  return resolve(process.cwd(), '.', dir)
}

export default defineConfig({
  base: '/',
  // 路径重定向
  resolve: {
    alias: [
      {
        find: /\/#\//,
        replacement: pathResolve('types')
      },
      {
        find: '@',
        replacement: pathResolve('src')
      },
      {
        find: 'vue-i18n',
        replacement: 'vue-i18n/dist/vue-i18n.cjs.js', //解决i8n警告
      }
    ],
    dedupe: ['vue']
  },
  // 全局 css 注册
  css: {
    preprocessorOptions: {
      scss: {
        javascriptEnabled: true,
        additionalData: `@import "src/styles/common/style.scss";`
      }
    }
  },
  plugins: [
    vue(),
    monacoEditorPlugin({
      languageWorkers: ['editorWorkerService', 'typescript', 'json', 'html']
    }),
    viteMockServe({
      mockPath: '/src/api/mock',
      // 开发打包开关
      localEnabled: true,
      // 生产打包开关
      prodEnabled: true,
      // 打开后,可以读取 ts 文件模块。 请注意,打开后将无法监视.js 文件
      supportTs: true,
      // 监视文件更改
      watchFiles: true
    }),
    // 压缩
    viteCompression({
      verbose: true,
      disable: false,
      threshold: 10240,
      algorithm: 'gzip',
      ext: '.gz'
    }),
    //添加
    qiankun("vue-app", {
      // 微应用名字,与主应用注册的微应用名字保持一致
      useDevMode: true,
    }),
  ],
  build: {
    target: 'es2015',
    outDir: OUTPUT_DIR,
    // minify: 'terser', // 如果需要用terser混淆,可打开这两行
    // terserOptions: terserOptions,
    rollupOptions: rollupOptions,
    brotliSize: brotliSize,
    chunkSizeWarningLimit: chunkSizeWarningLimit
  },
  //添加
  server: {
    origin: 'http://localhost:3000', //项目baseUrl,解决主应用中出现静态地址404问题
  },
})

        然后打开main.ts

import { createApp } from 'vue'
import App from './App.vue'
import router, { setupRouter } from '@/router'
import i18n from '@/i18n/index'
import { setupStore } from '@/store'
import { setupNaive, setupDirectives, setupCustomComponents, initFunction } from '@/plugins'
import { GoAppProvider } from '@/components/GoAppProvider/index'
import { setHtmlTheme } from '@/utils'

// 引入全局样式
import '@/styles/pages/index.scss'
// 引入动画
import 'animate.css/animate.min.css'
// 引入标尺
import 'vue3-sketch-ruler/lib/style.css'

//导入依赖
import { renderWithQiankun, qiankunWindow } from 'vite-plugin-qiankun/dist/helper'
//添加初始化方法
const initQianKun = () => {
    renderWithQiankun({
        // 当前应用在主应用中的生命周期
        mount(props:any) {
            appInit(props.container)
            //  可以通过props读取主应用的参数:msg
        },
        bootstrap() { },
        unmount() { },
    })
}
//修改appInit,传递参数主应用要挂在的节点名称
async function appInit(container?:any) {
  const goAppProvider = createApp(GoAppProvider)

  const app = createApp(App)

  // 注册全局常用的 naive-ui 组件
  setupNaive(app)

  // 注册全局自定义指令
  setupDirectives(app)

  // 注册全局自定义组件
  setupCustomComponents(app)

  // 挂载状态管理
  setupStore(app)

  // 解决路由守卫,Axios中可使用,Dialog,Message 等全局组件
  goAppProvider.mount('#appProvider', true)

  // 挂载路由
  setupRouter(app)

  // 路由准备就绪后挂载APP实例
  await router.isReady()

  // Store 准备就绪后处理主题色
  setHtmlTheme()

  // 语言注册
  app.use(i18n)
   //此处 判断有没有传,没有就挂载子应用的#app上
  const appDom = container ? container : "#app"
  // 挂载到页面
  app.mount(appDom, true)

  // 挂载到 window
  window['$vue'] = app
}

// 判断当前应用是否在主应用中
qiankunWindow.__POWERED_BY_QIANKUN__ ? initQianKun() : appInit().then(() => {
  initFunction()
})

这就已经完成了,剩下的就是样式上的问题,改改就可以了文章来源地址https://www.toymoban.com/news/detail-615000.html

到了这里,关于利用qiankun框架在自己项目中集成拖拽式低代码数据可视化开发平台的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 拖拽式万能DIY小程序源码系统 5分钟创建一个小程序,操作简单 带完整的部署搭建教程

    随着移动互联网的发展,越来越多的企业开始使用可视化拖拽式小程序系统来开发和管理自己的应用程序。可视化拖拽式小程序系统为企业提供了一种更快捷、更简便的方式来开发和管理应用程序,这种方式能够大大提高企业的工作效率,使企业更加高效地完成任务。 可视化

    2024年02月05日
    浏览(44)
  • 微前端框架qiankun剖析

    要了解qiankun的实现机制,那我们不得不从其底层依赖的single-spa说起。随着微前端的发展,我们看到在这个领域之中出现了各式各样的工具包和框架来帮助我们方便快捷的实现自己的微前端应用。在发展早期,single-spa可以说是独树一帜,为我们提供了一种简便的微前端路由工

    2024年02月05日
    浏览(47)
  • 微前端框架篇一,了解qiankun

    微前端是一种将复杂单体应用拆分为多个小型独立前端应用,然后将这些小应用按需加载并集成到主应用的技术方案。 每个子应用都有自己的 JavaScript 和 CSS 代码。 单页Web应用(single page web application,SPA),就是只有一张Web页面的应用。所有页面都来回在这张页面上切换。

    2024年01月22日
    浏览(44)
  • 在Spring Boot框架中集成 Spring Security

    技术介绍 SpringSecurity的核心功能: SpringSecurity特点: 具体实现 1、集成依赖 2、修改spring security 实现service.impl.UserDetailsServiceImpl类 代码1具体解释 代码2具体解释 实现config.SecurityConfig类 代码具体解释 总结 Spring Security是一个基于Spring框架的安全性框架,它提供了一系列的安全性

    2024年02月14日
    浏览(51)
  • 框架(Git基础详解及Git在idea中集成步骤)

    目录 基础:  idea集成Git并添加项目到git仓库 1.idea集成git,集成.git.exe文件  2.初始化本地Git仓库项目 3. 将工作区代码添加到暂存区  4.将暂存区代码添加到本地仓库  5.Git本地库操作 Idea集成Gitee并提交代码到第三方库 1.setting里搜索gitee 2.添加Gitee账号​编辑  3.将本地仓库代

    2024年02月10日
    浏览(41)
  • 【前端打怪升级日志之微前端框架篇】微前端qiankun框架子应用间跳转方法

    参考链接 qiankun官网:微应用之间如何跳转? 1.主应用、子应用路由都是hash模式    主应用根据 hash 来判断微应用,无需考虑该问题 2.主应用根据path判断子应用 方法 实现 适用条件 参数传递 存在问题 a标签跳转 a href=\\\"/toA\\\"/a 页面重新刷新,原来的状态丢失,用户体验不好 h

    2024年02月07日
    浏览(44)
  • vue项目集成乾坤(qiankun)微前端

    npm i qiankun -S qiankun文档官方地址:https://qiankun.umijs.org/zh/guide 新建一个.vue文件 配置路由地址

    2024年02月05日
    浏览(50)
  • 用go设计开发一个自己的轻量级登录库/框架吧(项目维护篇)

    本篇将开始讲讲开发库/框架的最开始阶段,也就是搭建一个项目 源码:weloe/token-go: a light login library (github.com) 项目结构,不是上一篇所说的代码架构,而是分包,明确的分包更有助于我们的开发。本框架分包如下 我们选择使用GitHub进行代码托管,同时也使用GitHub Actions进行

    2024年02月03日
    浏览(51)
  • C#系列-EF框架的创新应用+利用EF框架技术的知名开源应用项目(42)

    EF 框架的创新应用   EF 框架,即 Entity Framework ,是微软开发的一个开源的对象关系映射( ORM )框架,用于 .NET 应用程序中。它允许开发者以面向对象的方式处理数据库,而无需关心底层的 SQL 语句和数据库结构。 EF 框架的创新应用主要体现在以下几个方面: 代码优先迁移(

    2024年02月20日
    浏览(39)
  • 【qiankun】微前端在项目中的具体使用

    在主应用的入口文件main.ts中,引入qiankun的注册方法: 创建一个数组,用于配置子应用的相关信息。每个子应用都需要提供一个名称、入口URL、挂载点和一些可选配置项。例如: 调用 registerMicroApps 方法,注册子应用: 调用 start 方法,启动qiankun微前端应用: 在主应用的根文

    2024年02月12日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包