micro-app前端微服务原理解析
一、核心设计思想
-
基于 WebComponents 的组件化渲染
micro-app 借鉴 WebComponents 的 CustomElement 和 ShadowDom 特性,将子应用封装为类似 WebComponent 的自定义标签(如<micro-app>
)。通过 ShadowDom 的天然隔离机制,实现子应用的样式隔离和元素隔离,避免全局污染。子应用的 JS、CSS 和 HTML 被动态加载到 ShadowDom 中,形成独立渲染区域。 -
无侵入式接入
与 single-spa 和 qiankun 不同,micro-app 不要求子应用修改入口文件(如暴露bootstrap
、mount
、unmount
方法)或调整 webpack 配置,只需添加少量路由和跨域设置即可接入,显著降低改造成本。
二、关键技术实现
-
JS 沙箱与作用域隔离
- 沙箱机制:通过
Proxy
代理全局对象(如window
、document
),为每个子应用创建独立的 JS 执行环境。子应用对全局变量的修改仅作用于沙箱内部,避免多应用间的冲突。 - 依赖共享:支持基座应用向子应用注入公共依赖(如 React、Vue),减少重复加载,提升性能。
- 沙箱机制:通过
-
样式隔离方案
- 动态样式表:子应用的 CSS 通过
<style>
标签动态注入 ShadowDom,实现局部作用域。 - 选择器重写:对于可能冲突的全局样式,micro-app 自动添加子应用前缀(如
data-micro-app
),确保样式仅作用于当前子应用。
- 动态样式表:子应用的 CSS 通过
-
模块加载与资源处理
- 按需加载:基座应用通过路由匹配动态加载子应用的 HTML、JS 和 CSS 资源,支持懒加载和预加载优化。
- 资源地址补全:自动修正子应用的相对路径资源(如图片、字体),确保在基座应用中正确加载。
-
数据通信机制
- 事件驱动:基于
CustomEvent
实现主子应用通信。主应用通过microApp.dispatch
发送数据,子应用通过window.addEventListener
监听事件。 - 全局状态管理:支持通过
localStorage
或自定义全局变量共享状态,例如单点登录的 Token 传递。
- 事件驱动:基于
三、性能优化策略
-
轻量化设计
micro-app 核心代码仅约 10KB (gzip),无第三方依赖,减少加载时间与内存占用。 -
预加载与缓存
- 子应用资源支持预加载(
prefetch
),减少首次渲染延迟。 - 依赖预构建结果通过 HTTP 强缓存存储,仅当子应用版本更新时重新构建。
- 子应用资源支持预加载(
-
生产构建优化
开发模式下基于原生 ESM 实现按需编译,生产环境使用 Rollup 打包,支持 Tree-shaking 和代码压缩,生成高效静态资源。
四、与传统微前端框架的对比优势
特性 | micro-app | qiankun | iframe |
---|---|---|---|
侵入性 | 低(无需修改子应用代码) | 高(需调整入口文件) | 无(但功能受限) |
隔离性 | ShadowDom + JS 沙箱 | JS 沙箱 + 样式隔离 | 原生隔离 |
性能 | 轻量,按需加载 | 依赖全量加载 | 高内存消耗,双滚动条问题 |
通信复杂度 | 事件驱动,简单易用 | 依赖全局状态管理 | 跨域限制,需 postMessage |
适用场景 | 多技术栈融合、快速接入 | 复杂企业级应用 | 简单页面嵌入 |
五、典型应用场景与局限性
-
适用场景
- 多团队协作:不同团队独立开发子应用,基座统一集成(如电商平台中商品、订单、用户模块分离)。
- 遗留系统迁移:将老旧 Vue 应用嵌入新 React 基座,逐步重构。
- 跨端统一管理:整合 Web、小程序、Electron 应用至同一平台。
-
局限性
- 浏览器兼容性:依赖 WebComponents 特性,需 Polyfill 支持 IE11 等旧浏览器。
- 复杂路由冲突:主子应用路由需严格规划,避免路径匹配冲突。
六、实践建议
-
跨域配置
子应用需设置Access-Control-Allow-Origin
允许基座域名访问,开发环境通过 webpack 的devServer.headers
配置,生产环境通过 Nginx 或 CDN 策略实现。 -
单点登录集成
使用localStorage
共享 Token,子应用通过localStorage.getItem('token')
获取鉴权信息,确保主子应用权限一致。 -
路由管理
- 基座应用通过
baseroute
属性分配子应用基础路由(如/main-page/*
)。 - 子应用路由配置需动态读取
window.__MICRO_APP_BASE_ROUTE__
,适配基座路由前缀。
- 基座应用通过
以下是关于 micro-app 微前端框架的 JS 沙箱与作用域隔离机制 的详细解析,结合其核心原理、实现方式及优缺点进行分点阐述:
一、JS 沙箱的实现原理
1. 基于 Proxy 的代理沙箱
micro-app 通过 ES6 Proxy 代理全局对象(如 window
),为每个子应用创建一个独立的 fakeWindow
对象,拦截所有对全局属性的读写操作。具体实现如下:
- 取值拦截:当子应用访问
window
属性时,优先从代理的fakeWindow
中获取,若不存在则从原始window
中获取(如document
、location
等原生属性)。 - 赋值拦截:子应用对
window
属性的修改仅作用于fakeWindow
,不会污染全局环境。例如,子应用执行window.a = 1
,实际写入的是代理对象的a
属性。 - 原生方法代理:对于
addEventListener
等全局方法,micro-app 会记录子应用注册的事件监听器,并在子应用卸载时自动清除,避免内存泄漏。
2. 作用域隔离机制
通过 动态代码包裹 修改子应用代码的作用域,将全局变量绑定到代理对象:
- with 语句包裹:子应用的 JavaScript 代码被包裹在
with(fakeWindow)
中,强制其作用域链指向代理对象,确保所有全局操作均在沙箱内执行。(function(window) { with(window) { // 子应用代码 } }).call(fakeWindow, fakeWindow);
- 函数绑定上下文:通过
bind
方法将函数执行上下文强制绑定到代理对象,避免隐式全局变量污染(如this
指向全局window
)。
二、沙箱的核心优势
1. 低侵入性
- 子应用无需修改代码或调整构建配置,仅需处理跨域问题即可接入基座应用,显著降低改造成本。
- 对比 qiankun 需暴露
bootstrap
、mount
、unmount
生命周期函数,micro-app 的接入更为简单。
2. 多实例支持
- 每个子应用拥有独立的
fakeWindow
代理对象,支持多个子应用同时运行且互不干扰,解决单例沙箱(如 qiankun 的LegacySandbox
)的全局污染问题。
3. 性能优化
- 按需加载:仅在子应用激活时加载资源,结合 HTTP 缓存策略减少重复请求。
- 轻量化设计:核心代码约 10KB,无第三方依赖,减少内存占用。
三、沙箱的局限性及应对策略
1. 隐式全局变量问题
- 问题描述:若子应用代码中存在未通过
window
显式声明的全局变量(如var a = 1
),这些变量可能逃逸到全局作用域,导致污染。 - 解决方案:
- 构建时配置 ESLint 规则强制显式声明全局变量(如
window.a = 1
)。 - 使用框架插件系统(如 MicroApp 的插件机制)自动重写隐式全局变量。
- 构建时配置 ESLint 规则强制显式声明全局变量(如
2. 原生属性代理限制
- 问题描述:部分原生属性(如
document
、location
)无法完全隔离,子应用仍可能直接操作全局 DOM。 - 解决方案:
- 通过
Shadow DOM
隔离子应用的 DOM 结构,限制其操作范围。 - 拦截
document.createElement
等方法,强制子应用元素挂载到指定容器。
- 通过
3. 旧浏览器兼容性
- 问题描述:Proxy 是 ES6 特性,不支持 IE11 等旧浏览器。
- 解决方案:
- 使用
SnapshotSandbox
作为降级方案,通过快照机制实现单例环境隔离(但无法支持多实例)。
- 使用
四、与 qiankun 的对比分析
特性 | micro-app | qiankun |
---|---|---|
沙箱实现 | Proxy 代理多例沙箱 | 支持 SnapshotSandbox、LegacySandbox、ProxySandbox 三种模式 |
侵入性 | 低(无需子应用改造) | 高(需暴露生命周期函数) |
多实例支持 | 原生支持 | 仅 ProxySandbox 支持多实例 |
性能开销 | 轻量(约 10KB) | 较高(依赖更多复杂逻辑) |
适用场景 | 快速接入、多技术栈共存 | 复杂企业级应用、需严格环境控制 |
五、最佳实践建议
- 子应用改造:
- 显式声明全局变量(如
window.xxx
代替var xxx
),避免隐式逃逸。 - 使用 CSS Modules 或 Shadow DOM 实现样式隔离,防止全局样式冲突。
- 显式声明全局变量(如
- 基座配置:
- 启用
strictStyleIsolation
强制样式隔离(基于 Shadow DOM)。 - 通过
prefetch
预加载高频访问的子应用资源,提升用户体验。
- 启用
- 监控与降级:
- 监听沙箱异常事件(如 Proxy 不兼容),自动切换为快照沙箱模式。
- 使用 Sentry 等工具上报运行时错误,及时修复逃逸问题。
相关文章:
micro-app前端微服务原理解析
一、核心设计思想 基于 WebComponents 的组件化渲染 micro-app 借鉴 WebComponents 的 CustomElement 和 ShadowDom 特性,将子应用封装为类似 WebComponent 的自定义标签(如 <micro-app>)。通过 ShadowDom 的天然隔离机制,实…...
大连理工大学选修课——机器学习笔记(7):集成学习及随机森林
集成学习及随机森林 集成学习概述 泛化能力的局限 每种学习模型的能力都有其上限 限制于特定结构受限于训练样本的质量和规模 如何再提高泛化能力? 研究新结构扩大训练规模 提升模型的泛化能力 创造性思路 组合多个学习模型 集成学习 集成学习不是特定的…...
[特殊字符] Spring Cloud 微服务配置统一管理:基于 Nacos 的最佳实践详解
在微服务架构中,配置文件众多、管理复杂是常见问题。本文将手把手演示如何将配置集中托管到 Nacos,并在 Spring Cloud Alibaba 项目中实现统一配置管理 自动刷新机制。 一、为什么要使用 Nacos 统一配置? 传统方式下,每个服务都…...
【mysql】执行过程,背诵版
sql执行再mysql的执行过程 1. 建立连接 sql通过tcp/ip发送到服务器服务器检查用户名,密码,权限创建线程处理连接 如果是sql8.0之前,select会先从缓存中查找,命中则返回,由于表结构变更会导致缓存失效,已废…...
[Survey] Image Segmentation in Foundation Model Era: A Survey
BaseInfo TitleImage Segmentation in Foundation Model Era: A SurveyAdresshttps://arxiv.org/pdf/2408.12957Journal/Time-Author北理工、上交、浙大 CCAI 、瑞士苏黎世联邦理工学院、德国慕尼黑工业大学Codehttps://github.com/stanley-313/ImageSegFM-Survey 1. Introdu…...
关于杰理ac791切换版本, git clone下来仍然是最新版本问题
在git clone 之后,在本地切换分支 常规流程:git clone →git branch →git branch -a → git checkout 分支名...
生成项目.gitignore文件的多种高效方式
在使用 Git 进行版本控制时,.gitignore 文件是不可或缺的配置文件。它可以帮助我们指定哪些文件或目录不需要被 Git 跟踪,从而避免将不必要的文件(如临时文件、编译生成的文件等)提交到仓库中。这篇文章将介绍几种生成 .gitignore…...
2025年“深圳杯”数学建模挑战赛D题-法医物证多人身份鉴定问题
法医物证多人身份鉴定问题 小驴数模 犯罪现场法医物证鉴定是关系到国家安全、公共安全、人民生命财产安全和社会稳定的重大问题。目前法医物证鉴定依赖DNA分析技术不断提升。DNA检验的核心是STR(Short Tandem Repeat,短串联重复序列)分析技术…...
嵌入式开发高频面试题全解析:从基础编程到内存操作核心知识点实战
一、数组操作:3x3 数组的对角和、偶数和、奇数和 题目 求 3x3 数组的对角元素和、偶数元素和、奇数元素和。 知识点 数组遍历:通过双重循环访问数组的每个元素,外层循环控制行,内层循环控制列。对角元素判断: 主对…...
JAVA SE 反射,枚举与lambda表达式
文章目录 📕1. 反射✏️1.1 反射相关的类✏️1.2 Class类中的相关方法✏️1.3 Field类中的相关方法✏️1.4 Method类中的相关方法✏️1.5 Constructor类中的相关方法✏️1.6 获取Class对象的三种方式✏️1.7 反射的使用 📕2. 枚举2.1 枚举的定义✏️2.2 …...
每日算法-250430
每日算法 - 2025年4月30日 记录下今天解决的两道题目。 870. 优势洗牌 (Advantage Shuffle) 题目描述 解题思路与方法 核心思想:贪心策略 (田忌赛马) 这道题的目标是对于 nums1 中的每个元素,找到 nums2 中一个比它小的元素进行配对(如果…...
MacOS 安装 cocoapods
MacOS 安装 cocoapods 下面使用 HomeBrew 安装 cocoapods 一、检测 HomeBrew 是否安装 打开终端执行命令 brew -v #如果安装,输出如 Homebrew 4.5.0如果未安装 Mac HomeBrew安装 二、检测 ruby 是否安装 系统一般自带了 ruby 但是这个升级有些麻烦,我…...
MATLAB绘制饼图(二维/三维)
在数据分析与展示领域,饼图是一种直观且高效的可视化工具,能够在瞬间传递各部分与整体的比例关系。今天,我将分享一段 MATLAB 绘制二维及三维饼图的代码,助你轻松将数据以饼图形式呈现于众人眼前。 无论是二维饼图的简洁明了&…...
python将字符串转成二进制数组
python将字符串转成二进制数组 功能概述: save_binary_to_json() 函数:将字符串转换为二进制数据(字节的整数表示),并保存到JSON文件中。 load_binary_from_json() 函数:从JSON文件中读取二进制数据并还原…...
防止HTTPS页面通过<iframe>标签嵌入HTTP内容
防止HTTPS页面通过<iframe>标签嵌入HTTP内容 出于安全考虑,现代浏览器实施了严格的规则来防止HTTPS页面通过<iframe>标签嵌入HTTP内容。这种行为主要是为了防止所谓的“混合内容”问题,即在一个安全(加密)的页面中…...
windows 使用websocket++ (C++环境)
一、简介 websocket官方网址:http://websocket.org/ websocketpp官方网址:https://www.zaphoyd.com/websocketpp websocketpp使用手册:https://www.zaphoyd.com/websocketpp/manual/ websocketpp 是 C 的 WebSocket 客户端/服务器库. 它是…...
无水印短视频素材下载网站有哪些?十个高清无水印视频素材网站分享
你知道怎么下载无水印视频素材吗?今天小编就给大家推荐十个高清无水印视频素材下载的网站,如果你也是苦于下载高清无水印的短视频素材,赶紧来看看吧~ 1. 稻虎网 首推的是稻虎网。这个网站简直就是短视频创作者的宝库。无论你需要…...
【dify—5】Dify关联Ollama
目录 一、修改.env文件 二、启动dify 三、访问dify 四、设置关联 五、添加模型插件 5.1 添加模型 5.2 配置信息编辑 第一部分 安装difydocker教程:【difydocker安装教程】-CSDN博客 第二部分 dock重装教程: 【dify—2】docker重装-CSDN博客 第三…...
PostgreSQL可串行化快照隔离和冻结处理
1.可串行化快照隔离 可串行化快照隔离SSI已经嵌入到快照隔离SI中,以实现真正的可串行化隔离等级。 SSI实现基本策略 使用SIREDA锁记录事务访问的所有对象(元组,页面,关系)。 当写入任何堆元组/索引元组时ÿ…...
Java 多线程进阶:什么是线程安全?
在多线程编程中,“线程安全”是一个非常重要但又常被误解的概念。尤其对于刚接触多线程的人来说,不理解线程安全的本质,容易写出“偶尔出错”的代码——这类 bug 往往隐蔽且难以复现。 本文将用尽可能通俗的语言,从三个角度解释线…...
Java导出带图片的Excel
使用easypoi导出带图片的Excel, 引入依赖 依赖中着重要剔除可能会造成冲突的依赖,不剔除的话可能会报错 Exception in thread “main” java.lang.NoSuchFieldError: Class org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook does not …...
Keysight万用表使用指南及基于Python采集数据生成Excel文件
文章目录 说明使用的库openpyxlpyvisa 代码说明效果展示参考代码 说明 本文介绍了 Keysight 34465A 的基本使用和 SCPI 指令设置,演示了使用 Python 的 PyVISA 库控制两台 34465A 同时采集数据的完整流程,包括设置采样参数、触发测量、读取数据、使用 O…...
HarmonyOS Next-DevEco Studio(5.0.2)无网络环境配置(详细教程)
开发者如果电脑处于完全无网环境,可以参考下面文档进行相关配置 DevEco Studio(5.0.2)开发环境一览: 工具版本DevEco Studio5.0.2openHarmonySDK14ohpm5.0.11node.js18.20.1hypium1.0.21 一、下载DevEco Studio(5.0.2 Release)…...
数字中国的建设之路:超聚变以“智算数能”四大密钥,共建智能体时代
文 | 智能相对论 作者 | 陈泊丞 即便是数字中国建设这样的宏大叙事,在长期的行业实践与业务聚焦之下,未来的发展路径也将会越来越清晰。日前,第八届数字中国建设峰会在福建拉开序幕,各大论坛、企业、机构、组织等纷纷围绕数字中…...
PageOffice在线打开word文件,并实现切换文件
本示例关键代码的编写位置,请参考“PageOffice 开发者中心-快速起步–开始 - 快速上手”里您所使用的开发语言框架的最简集成代码 注意 本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径ÿ…...
Ubuntu 24.04 终端美化
参考文章:Ubuntu终端美化(tabbyoh-my-zsh)-Ubuntu系列03 有些步骤和 Ubuntu 24.04 不太适配,而且逻辑不太适合小白,故写此文。 1. 安装 Tabby 参考文章的 tabby 版本过老,如果在 Ubuntu 24.04 装会报一些依…...
python合并word中的run
在处理Word文档时,使用python-docx库可以读取文档中的段落,并将每个段落中的多个run合并为一个run。run对象用于表示段落中具有相同格式的文本部分。将多个run合并为一个run可以帮助简化文档结构,尤其是在格式一致的情况下。 以下是一个示例…...
微前端框架选型指南
微前端框架选型指南 一、写在前面 微前端架构为大型前端系统提供了分而治之的能力,不同团队可以独立开发、部署和维护各自的模块。然而,当前市面上存在多种微前端框架(如 Qiankun、Wujie、micro-app、Hel、Emp 等),选…...
Tailwind CSS实战技巧:从核心类到高效开发
使用 Kooboo平台 训练实战技巧,无需配置安装,直接引入CDN就可以在线练习了!具体操作流程:进入Kooboo后,选择创建空白站点 -> 站点开发 -> 控制面板 -> 页面 ->新建普通页面 -> 编写代码 一、核心布局类…...
C# 事件与委托
一、委托基础 1. 委托定义 委托是一种类型安全的函数指针,它允许将方法作为参数传递给其他方法。 // 声明一个委托类型 public delegate void MyDelegate(string message);// 使用委托 public class Program {public static void Main(){// 创建委托实例并指向方…...
django_rq
使用 Loguru 记录 Django-RQ 任务日志 要在 Django-RQ 处理的任务中使用 Loguru 记录日志,你需要做的就是按照标准的 Loguru 使用方法配置和使用日志记录器。下面是一个简单的示例,展示如何在 Django-RQ 的任务中集成 Loguru: 安装必要的包…...
Java List分页工具
PageUtil.java import com.google.common.collect.Lists; import com.jd.platform.hotkey.dashboard.common.domain.Page; import org.springframework.util.CollectionUtils;import java.util.ArrayList; import java.util.List;public class PageUtil {/*** 通用分页工具类*…...
【UE5】“对不起,您的客户端未能传递登录所需的参数”解决办法
想要进入Epic账户,正常登录后就会弹出这个: 官方提供了一个解决办法: 如果以上办法行不通,关闭单点登录: 成功解决...
Web开发-JavaEE应用SpringBoot栈模版注入ThymeleafFreemarkerVelocity
知识点: 1、安全开发-JavaEE-开发框架-SpringBoot&路由&传参 2、安全开发-JavaEE-模版引擎-Thymeleaf&Freemarker&Velocity 一、演示案例-WEB开发-JavaEE-开发框架-SpringBoot&路由&传参 类似于php语言中的thinkphp,不过要更加…...
出现Invalid bound statement (not found)问题的原因可能有哪些
1.全局配置文件没配好? 检查全局配置文件application.properties或application.yml是否配置扫描mapper包的文件路径 #mybatis配置mapper文件路径 #mybatis.mapper-locationsclasspath:/mapper/*.xml #mybatis-plus配置mapper文件路径 mybatis-plus.mapper-locatio…...
多类型文件集中查看系统
软件介绍 Universal Viewer 是一款具备多格式兼容能力的文件查看工具,旨在为用户提供统一化的文档处理方案。 核心功能优势 该工具采用全格式兼容架构,支持包括图片、音视频及办公文档在内的多种通用文件类型,实现单一软件完成多格式处…...
WebSocket与Socket、TCP、HTTP的关系及区别
1.什么是WebSocket及原理 WebSocket是HTML5中新协议、新API。 WebSocket从满足基于Web的日益增长的实时通信需求应运而生,解决了客户端发起多个Http请求到服务器资源浏览器必须要在经过长时间的轮询问题,实现里多路复用,是全双工、双向、单套…...
【25软考网工】第四章(4)无线局域网WLAN安全技术、无线个人网WPAN
目录 一、无线局域网安全技术 1. WLAN安全机制 编辑 1)SSID访问控制 2)物理地址过滤 3)WEP认证和加密 4)WPA(认证、加密、数据完整性) 5)WPA2 6)无线认证技术 2. WEP和W…...
Vue:el-table-tree懒加载数据
目录 一、出现场景二、具体使用三、修改时重新加载树节点四、新增、删除重新加载树节点 一、出现场景 在项目的开发过程中,我们经常会使用到表格树的格式,但是犹豫数据较多,使用分页又不符合项目需求时,就需要对树进行懒加载的操…...
JCRQ1河马算法+消融实验!HO-CNN-LSTM-Attention系列四模型多变量时序预测,作者:机器学习之心
JCRQ1河马算法消融实验!HO-CNN-LSTM-Attention系列四模型多变量时序预测 目录 JCRQ1河马算法消融实验!HO-CNN-LSTM-Attention系列四模型多变量时序预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 基于HO-CNN-LSTM-Attention、CNN-LSTM-Attent…...
vue elementui 去掉默认填充 密码input导致的默认填充
<el-form-item prop"code"><div style"display: flex; width: 100%; align-items: flex-end"><el-inputv-model"loginForm.code"size"small"auto-complete"off"placeholder"请输入验证码"keyup.en…...
Android学习总结之设计场景题
设计图片请求框架的缓存模块 核心目标是通过分层缓存策略(内存缓存 磁盘缓存)提升图片加载效率,同时兼顾内存占用和存储性能。以下是针对 Android 面试官的回答思路,结合代码注释说明关键设计点: 一、缓存架构设计&…...
【数学建模国奖速成系列】优秀论文绘图复现代码(四)
文章目录 引言三维图双轴图三维散点图完整复现代码 引言 数模比赛的绘图是非常重要得,这篇文章给大家分享我自己复现国奖优秀论文的代码,基于Matalab来实现,可以直接运行出图。之前的文章也有分享【折线图、柱状图、箱线图、热图】的绘制&am…...
哪些因素会影响远程视频监控的质量?浅述EasyCVR视频智能诊断技术
在安防领域,无线监控系统凭借其灵活部署、便捷扩展的特性得到广泛应用。然而,实时监控图像清晰度不足、回放调查受限等问题,严重制约了其应用效果。经分析,摄像机性能、线缆质量、无线网桥性能、交换机配置及供电电压等是影响图像…...
Android学习总结之算法篇六(数组和栈)
括号匹配 public static boolean isValid(String s) {// 创建一个栈用于存储左括号Stack<Character> stack new Stack<>();// 遍历字符串中的每个字符for (char c : s.toCharArray()) {if (c ( || c [ || c {) {// 如果是左括号,将其压入栈中stack…...
一套SaaS ERP管理系统源码,支持项目二开商用,SpringBoot+Vue+ElementUI+UniAPP
ERP管理系统源码,一款适用于小微企业的SaaS ERP管理系统源码, 采用最新的技术栈开发(SpringBootVueElementUIUniAPP),让企业简单上云。 专注于小微企业的应用需求,如企业基本的进销存、询价,报价, 采购、销售、MRP生产制造、品质…...
【Agent】MCP协议 | 用高德MCP Server制作旅游攻略
note MCP (Model Context Protocol) 代表了 AI 与外部工具和数据交互的标准建立。MCP 的本质:它是一个统一的协议标准,使 AI 模型能够以一致的方式连接各种数据源和工具,类似于 AI 世界的"USB-C"接口。 它能够在 LLM/AI Agent 与外…...
ISO 26262认证步骤
一、企业需要做? 从 ISO 26262 标准导入到认证大概需要经历7 个主要的阶段, 分别是策划阶段、 流程建立阶段、 流程试运行阶段、 流程认证阶段、 流程推广阶段、 产品认证阶段和持续运行阶段。 策划阶段:精准布局差距分析:对照 I…...
php+mysql活动报名学生选课产品预定旅游报名系统网站源码
本系统是一个基于PHPMySQL的活动报名管理系统,支持多个活动的发布、报名、审核等功能。系统分为用户端和管理端两个部分,实现了活动报名的完整流程管理。 环境要求 ------- - PHP 7.1 - MySQL 5.6 - 支持mysqli扩展 - 支持session - 支持文件上传 默认账…...
Qt QWebEngine应用和网页的交互
一、QWebEngine简介 1、Qt WebEngine模块提供了一个Web浏览器引擎,可以轻松地将万维网上的内容嵌入到没有本机Web引擎的平台上的Qt应用程序中。 2、Qt WebEngine提供了用于渲染HTML,XHTML和SVG文档的C 类和QML类型,它们使用级联样式表&#…...