qiankun微前端

qiankun微前端踩坑指南:

上图原因子项目未启动

上图使用$tqiankun微前端中未引用i18n插件解决方案如下:

子项目main.js中加上i18n:

一些坑忘记截图复现会继续更新.......

配置正文开始------>

主项目

子项目

1.名字需要与子项目跳转后缀一致

2.vue.config.js

'use strict'
const path = require('path')
const packageName = require('./package.json').name
const defaultSettings = require('./src/framework/utils/settings.js')
// 开启gzip压缩, 按需引用
const CompressionPlugin = require('compression-webpack-plugin')function resolve(dir) {return path.join(__dirname, dir)
}const name = defaultSettings.title || 'vue Admin' // page title// If your port is set to 80,
// use administrator privileges to execute the command line.
// For example, Mac: sudo npm run
// You can change the port by the following methods:
// port = 9528 npm run dev OR npm run dev --port = 9528
const port = process.env.port || process.env.npm_config_port || 9528 // dev port
const publicPath = process.env.VUE_APP_BUILD_APP === 'true' ? './' : (process.env.VUE_APP_PUBLIC_PATH || '/')
// const publicPath = './'
const dev = process.env.NODE_ENV === 'development'
// All configuration item explanations can be find in https://cli.vuejs.org/config/
module.exports = {/*** You will need to set publicPath if you plan to deploy your site under a sub path,* for example GitHub Pages. If you plan to deploy your site to https://foo.github.io/bar/,* then publicPath should be set to "/bar/".* In most cases please use '/' !!!* Detail: https://cli.vuejs.org/config/#publicpath*/// publicPath: '/research-vue/', // 这个要与主应用的micro-app.js中activeRule一致publicPath: '/research-vue/',    // 这里的routerPathName按子应用路由地址的需要去配置// publicPath, // 引入静态资源(js、css)时的基础路径// outputDir: 'dist',assetsDir: 'static',// lintOnSave: process.env.NODE_ENV === 'development',lintOnSave: false,productionSourceMap: false,devServer: {port:9529,headers: {'Access-Control-Allow-Origin': '*'},open: true,overlay: {warnings: false,errors: true},// proxy: {//   [process.env.VUE_APP_BASE_API]: {//     target: process.env.VUE_APP_TARGET,//     changeOrigin: true,//     pathRewrite: {//       ['^' + process.env.VUE_APP_BASE_API]: '/dtap-cloud-app'//     }//   }// }proxy: {[process.env.VUE_APP_BASE_API + process.env.VUE_APP_MOCK_BASE_API]: {https: true,target: 'http://18.10.255.4:3000/',ws: true,changeOrigin: true,pathRewrite: {[`^${process.env.VUE_APP_BASE_API}`]: '/'}},[process.env.VUE_APP_BASE_API]: {target: process.env.VUE_APP_TARGET,changeOrigin: true,pathRewrite: {[`^${process.env.VUE_APP_BASE_API}`]: '/'}}}// before: require('./mock/mock-server.js')},css: {loaderOptions: {sass: {sassOptions: { outputStyle: 'expanded' }}}},configureWebpack: {// provide the app's title in webpack's name field, so that// it can be accessed in index.html to inject the correct title.name,resolve: {alias: {vue$: 'vue/dist/vue.esm.js','@': resolve('src')}},output: {// 把子应用打包成 umd 库格式library: `${packageName}`,libraryTarget: 'umd', // 把微应用打包成 umd 库格式jsonpFunction: `webpackJsonp_${packageName}`,filename: `[name].[hash].js`,chunkFilename: `[name].[hash].js`},// externals: { //  打包时排除echarts  减少打包后体积//   'echarts': 'echarts'// },plugins: [new CompressionPlugin({cache: false,algorithm: 'gzip', // 使用gzip压缩test: /\.js$|\.html$|\.css$/, // 匹配文件名filename: '[path][base].gz[query]', // 压缩后的文件名(保持原文件名,后缀加.gz)minRatio: 1, // 压缩率小于1才会压缩threshold: 10240, // 对超过10k的数据压缩deleteOriginalAssets: false // 是否删除未压缩的源文件,谨慎设置,如果希望提供非gzip的资源,可不设置或者设置为false(比如删除打包后的gz后还可以加载到原始资源文件)})]},chainWebpack(config) {// it can improve the speed of the first screen, it is recommended to turn on preloadconfig.plugin('preload').tap(() => [{rel: 'preload',// to ignore runtime.js// https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/cli-service/lib/config/app.js#L171fileBlacklist: [/\.map$/, /hot-update\.js$/, /runtime\..*\.js$/],include: 'initial'}])// when there are many pages, it will cause too many meaningless requestsconfig.plugins.delete('prefetch')// config.plugin('webpack-bundle-analyzer')//   .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)// 处理svg  loader framework目录以及外层目录// set svg-sprite-loaderconfig.module.rule('svg').exclude.add(resolve('src/framework/assets/icons')).add(resolve('src/assets/icons')).end()config.module.rule('icons').test(/\.svg$/).include.add(resolve('src/framework/assets/icons')).add(resolve('src/assets/icons')).end().use('svg-sprite-loader').loader('svg-sprite-loader').options({symbolId: 'icon-[name]'}).end()config.when(process.env.NODE_ENV !== 'development',(config) => {config.plugin('ScriptExtHtmlWebpackPlugin').after('html').use('script-ext-html-webpack-plugin', [{// `runtime` must same as runtimeChunk name. default is `runtime`inline: /runtime\..*\.js$/}]).end()config.optimization.splitChunks({chunks: 'all',minSize: 0, // 体积为0时也进行拆分minChunks: 1, // 任何被引用过的模块都进行拆分maxAsyncRequests: 20, // 最大异步请求数maxInitialRequests: 20, // 最大初始请求数cacheGroups: {libs: {name: 'chunk-libs',test: /[\\/]node_modules[\\/]/,priority: 10,chunks: 'initial' // only package third parties that are initially dependent},elementUI: {name: 'chunk-elementUI', // split elementUI into a single packagepriority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or apptest: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm},echartsLib: {name: 'echarts-lib',test: (module) => {return /(echarts|zrender)/.test(module.context)},chunks: 'all',priority: 20},'chunk-dev': {name: 'chunk-dev',test: resolve('src/framework/views/developer-center'), // can customize your rules// minChunks: 3, //  minimum common numberpriority: 5// reuseExistingChunk: true},'chunk-system': {name: 'chunk-system',test: resolve('src/framework/views/system'), // can customize your rules// minChunks: 3, //  minimum common numberpriority: 5// reuseExistingChunk: true},'chunk-assets': {name: 'chunk-assets',test: resolve('src/framework/assets'), // can customize your rules// minChunks: 3, //  minimum common numberpriority: 5// reuseExistingChunk: true},tinymce: {name: 'chunk-tinymce',chunks: 'all',test: (module) => {return /(tinymce)/.test(module.context)},priority: 20// reuseExistingChunk: true}}})// https:// webpack.js.org/configuration/optimization/#optimizationruntimechunkconfig.optimization.runtimeChunk('single')})}
}

3.main.js

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/53406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

景联文科技:提供高质量多模态数据标注,推动智能化转型

随着人工智能技术的快速发展,多模态数据标注成为推动智能系统更深层次理解和应用的关键技术之一。 作为行业领先的多模态数据标注服务商,景联文科技凭借其在技术、流程和人才方面的综合优势,推出了全面的多模态标注解决方案,助力…

Python | Leetcode Python题解之第392题判断子序列

题目: 题解: class Solution:def isSubsequence(self, s: str, t: str) -> bool:n, m len(s), len(t)f [[0] * 26 for _ in range(m)]f.append([m] * 26)for i in range(m - 1, -1, -1):for j in range(26):f[i][j] i if ord(t[i]) j ord(a) el…

【5G PHY】5G循环前缀(CP)设计思路简述

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G技术研究。 博客内容主要围绕…

将语义分割的标签转换为实例分割(yolo)的标签

语义分割的标签(目标处为255,其余处为0) 实例分割的标签(yolo.txt),描述边界的多边形顶点的归一化位置 绘制在原图类似蓝色的边框所示。 废话不多说,直接贴代码; import os import cv2 imp…

监控平台总结之面试常问答案

思路 延伸的面试题总结及答案: 1.说说前端监控平台/监控SDK架构设计和难点亮点? 架构设计 数据采集层: SDK: 在前端集成的 SDK 负责采集数据,包括性能指标、用户行为、错误日志等。 数据收集: 实现高效的数据采集机制,支持实时…

分类任务实现模型集成代码模版

分类任务实现模型(投票式)集成代码模版 简介 本实验使用上一博客的深度学习分类模型训练代码模板-CSDN博客,自定义投票式集成,手动实现模型集成(投票法)的代码。最后通过tensorboard进行可视化&#xff0…

傅里叶变换家族

禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》 禹晶、肖创柏、廖庆敏《数字图像处理》资源二维码

java设计模式(行为型模式:状态模式、观察者模式、中介者模式、迭代器模式、访问者模式、备忘录模式、解释器模式)

6,行为型模式 6.5 状态模式 6.5.1 概述 【例】通过按钮来控制一个电梯的状态,一个电梯有开门状态,关门状态,停止状态,运行状态。每一种状态改变,都有可能要根据其他状态来更新处理。例如,如果…

太细了有手就行,SpringCloud Alibaba+Nacos+Dubbo整合

SpringCloud AlibabaNacosDubbo,文末有完整项目代码链接 前言一、这几者之间关系二、准备工作1.Nacos2.SpringCloud Alibaba4.SpringCloud5.Dubbo项目中层级关系 三、代码调用逻辑1.dubbo-api模块2.account-api模块3.api-service模块4.逻辑梳理 四、Maven和配置1.pa…

尽快更新!Zyxel 路由器曝出 OS 命令注入漏洞,影响多个版本

近日,Zyxel 发布安全更新,以解决影响其多款商用路由器的关键漏洞,该漏洞可能允许未经认证的攻击者执行操作系统命令注入。 该漏洞被追踪为 CVE-2024-7261,CVSS v3 得分为 9.8,是一个输入验证故障,由用户提…

了解PD快充协议和QC快充协议

PD快充协议的实现依赖充电器与设备之间的通信协议,这种通信协议确保了充电器能够提供设备所需要的特定电压和电流。在快充技术中快充协议起到关键角色。 现在市面上最常见的快充协议有PD、QC、华为FCP/SCP、三星AFC协议 、VOOC闪充。PD和QC 协议属于公用协议 。华…

CSS 高级区块效果——WEB开发系列25

CSS提供了多种工具和属性,使我们能够创建视觉上引人注目的效果。今天我们继续将深入了解几种高级CSS效果:盒子阴影、滤镜、混合模式和文本背景裁剪,提升网页设计的质感和深度。 一、盒子阴影(Box Shadow) 对于盒子元素…

学会这2招,让你轻松提取长视频中的文案!

在当今数字化时代,短视频已成为备受欢迎的内容形式,众多品牌和营销人员借助短视频推广宣传产品。 短视频文案作为短视频内容的关键部分,能够在极短时间内向受众传达品牌信息和产品特点。 不过,短视频文案的提取和创作确实极具挑…

ceph中pg与pool关系

在Ceph中,PG(Placement Group)和Pool是非常重要的概念,它们在Ceph的存储架构中扮演着关键角色。理解这些概念有助于更好地管理和优化Ceph集群。下面详细介绍这两个概念及其相互关系。 Pool(存储池) 定义&am…

【重学 MySQL】十二、SQL 语言的规则与规范

【重学 MySQL】十二、SQL 语言的规则与规范 基本规则注释语法规则命名规则基本命名规则具体命名规范其他注意事项 数据导入指令 SQL(Structured Query Language,结构化查询语言)的规则与规范是确保SQL语句能够正确执行、提高代码可读性和可维…

【2024数模国赛赛题思路公开】国赛C题第三套思路丨无偿自提

C题参考思路 C题是一道优化问题,目的是根据题目所给的种植限制条件以及附件数据建立目标条件优化模型,优化种植策略,有利于方便田间管理,提高生产效益,减少各种不确定因素可能造成的种植风险。整个题目最重要的问题在…

Java框架第四课(对Spring的补充Spring web)

目录 一.Spring web的认识 (1)Spring Web概念 (2)Spring web的特点 (3)Springweb运行的流程 (4)Springweb运行的流程图 二.搭建Spring web 三.自定义处理器类搭建 (1)处理器类配置 (2)处理器类接受请求 (3)获得请求数据 四.拦截器 (1)关于拦截器: (2)拦截器的…

Axure中继器动态数据图表制作

在Axure RP中,中继器(Repeater)是一个非常强大的工具,它允许设计者动态地展示和交互数据,进而创建各种复杂的数据可视化图表,如柱状图、条形图、堆叠图、散点图和对比图。以下将详细介绍如何使用中继器来设…

持续集成与持续部署(CI/CD)的深入探讨

在现代软件开发中,持续集成(CI)和持续部署(CD)已成为不可或缺的实践。这些方法旨在加快软件交付的速度,同时提高软件的质量和稳定性。通过CI/CD,开发团队可以频繁地将代码更改集成到主分支&…

算法练习题14——leetcode84柱形图中最大的矩形(单调栈)

题目描述: 解题思路: 要解决这个问题,我们需要找到每个柱子可以扩展的最大左右边界,然后计算以每个柱子为高度的最大矩形面积。 具体步骤如下: 计算每个柱子左侧最近的比当前柱子矮的位置: 使用一个单调…