VUE项目部署IIS服务器手册
IIS部署Vue项目完整手册
📋 目录
- 基础概念
- 准备工作
- Vue项目构建
- web.config详解
- IIS部署步骤
- 不同场景配置
- 常见问题
- 实用配置模板
基础概念
Vue单页应用(SPA)工作原理
重要理解:Vue项目是单页应用,这意味着:
-
物理层面:整个项目只有一个HTML文件(
index.html
) -
逻辑层面:用户看到多个"页面",实际上是JavaScript动态切换内容
-
路由处理:所有路由跳转都由Vue Router在前端处理
当用户直接访问
http://yoursite.com/about
时:-
没有web.config:
用户访问 /about → IIS寻找 about.html 文件 → 找不到 → 404错误
-
有web.config重写规则:
用户访问 /about → IIS找不到about.html → web.config规则生效 → 返回index.html → Vue Router接管,显示about页面
-
用户看到的:
/home -> 首页
/about -> 关于页面
/products -> 产品页面
/contact -> 联系页面实际服务器文件:
dist/
├── index.html ← 只有这一个HTML文件!
├── css/
├── js/
└── assets/
路由模式对比
路由模式 | URL格式 | IIS配置需求 | 说明 |
---|---|---|---|
Hash模式 | /#/home | 无需配置 | 兼容性好,但URL不美观 |
History模式 | /home | 必须配置 | URL美观,需要服务器支持 |
准备工作
环境要求
- Node.js:版本 14+
- Vue CLI:最新版本
- IIS:Windows Server 2016+ 或 Windows 10+
- URL Rewrite模块:必须安装
安装Vue CLI
# 全局安装Vue CLI
npm install -g @vue/cli# 验证安装
vue --version
检查IIS URL Rewrite
- 打开IIS管理器
- 选择服务器节点
- 查看是否有"URL 重写"图标
- 如果没有,请下载安装:URL Rewrite 2.1
Vue项目构建
创建新项目
# 创建项目
vue create my-vue-project# 选择配置
? Please pick a preset: Default ([Vue 3] babel, eslint)
❯ Default ([Vue 2] babel, eslint) Manually select features# 进入项目目录
cd my-vue-project# 开发测试
npm run serve
构建生产版本
# 构建项目
npm run build# 构建完成后会生成dist文件夹
dist/
├── index.html
├── css/
├── js/
├── img/
└── favicon.ico
配置自动生成web.config
方法1:在public文件夹中创建(推荐)
在项目的 public/
文件夹中创建 web.config
文件,构建时会自动复制到 dist/
。
方法2:在vue.config.js中配置
// vue.config.js
const { defineConfig } = require('@vue/cli-service')module.exports = defineConfig({transpileDependencies: true,// 配置基础路径(如果部署在子目录)publicPath: process.env.NODE_ENV === 'production' ? '/myapp/' : '/',// 自定义构建过程configureWebpack: {plugins: [{apply: (compiler) => {compiler.hooks.emit.tapAsync('CopyWebConfig', (compilation, callback) => {const webConfigContent = `<?xml version="1.0" encoding="utf-8"?>
<configuration><system.webServer><rewrite><rules><rule name="Handle History Mode and hash fallback" stopProcessing="true"><match url="(.*)" /><conditions logicalGrouping="MatchAll"><add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /><add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /></conditions><action type="Rewrite" url="/" /></rule></rules></rewrite></system.webServer>
</configuration>`;compilation.assets['web.config'] = {source: () => webConfigContent,size: () => webConfigContent.length};callback();});}}]}
})
web.config详解
核心重写规则解析
<rule name="Handle History Mode and hash fallback" stopProcessing="true"><match url="(.*)" /> <!-- 1. 匹配所有URL路径 --><conditions logicalGrouping="MatchAll"><!-- 2. 检查请求的不是真实存在的文件 --><add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /><!-- 3. 检查请求的不是真实存在的文件夹 --><add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /></conditions><!-- 4. 如果以上条件都满足,重写到根目录 --><action type="Rewrite" url="/" />
</rule>
翻译成人话:如果用户访问的不是真实存在的文件或文件夹,就给他返回首页(index.html),让Vue Router来处理。
执行逻辑:
-
用户访问
/about
-
IIS检查服务器上是否有
about.html
文件 → 没有 -
IIS检查服务器上是否有
about/
文件夹 → 没有 -
触发重写规则,返回
index.html
-
Vue Router接管,显示about页面内容
无论您的Vue项目有多少个界面,这个重写规则都不用变!
因为:
- 10个界面 → 还是只有1个index.html
- 100个界面 → 还是只有1个index.html
- 1000个界面 → 还是只有1个index.html
所有界面的切换都是Vue Router在前端JavaScript中处理的。
重要概念
- stopProcessing=“true”:匹配到此规则后停止处理后续规则
- negate=“true”:条件取反,即"不是文件"的意思
- {REQUEST_FILENAME}:IIS服务器变量,表示请求的文件路径
IIS部署步骤
第一步:复制文件
# 将dist文件夹内容复制到IIS目录
# 例如:C:\inetpub\wwwroot\myvueapp\
第二步:创建IIS网站
- 打开IIS管理器
- 右键"网站" → “添加网站”
- 配置网站信息:
- 网站名称:
Vue-App
- 物理路径:
C:\inetpub\wwwroot\myvueapp
- 端口:
80
或其他可用端口 - 主机名:(可选)
- 网站名称:
第三步:配置应用程序池
- 选择应用程序池
- 高级设置:
- .NET CLR版本:无托管代码
- 托管管道模式:集成
- 启用32位应用程序:False
第四步:设置权限
- 右键网站文件夹
- 属性 → 安全
- 添加
IIS_IUSRS
用户 - 权限:读取和执行、列出文件夹目录、读取
第五步:启动网站
- 在IIS中选择网站
- 右键 → 管理网站 → 启动
- 测试访问:
http://localhost:端口号
不同场景配置
场景1:基础Vue项目(最常用)
适用:简单的展示型网站,前后端分离,后端API已部署
<?xml version="1.0" encoding="utf-8"?>
<configuration><system.webServer><rewrite><rules><rule name="Handle History Mode and hash fallback" stopProcessing="true"><match url="(.*)" /><conditions logicalGrouping="MatchAll"><add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /><add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /></conditions><action type="Rewrite" url="/" /></rule></rules></rewrite></system.webServer>
</configuration>
场景2:前后端同服务器部署
架构示例:
服务器(192.168.1.100)
├── IIS网站1 (端口80) ← Vue前端
│ └── C:\inetpub\wwwroot\vue-app\
└── IIS网站2 (端口5000) ← .NET后端API└── C:\inetpub\wwwroot\api\
Vue项目API调用:
// 在Vue项目中直接调用后端API
axios.get('http://192.168.1.100:5000/api/users')
web.config:使用基础配置即可
场景3:前后端不同服务器 + API代理
架构示例:
前端服务器(192.168.1.100) 后端服务器(192.168.1.200)
├── IIS ├── IIS/Apache/Nginx
│ └── Vue项目 │ └── API服务
优势:前端无需知道后端真实地址,避免跨域问题
<?xml version="1.0" encoding="utf-8"?>
<configuration><system.webServer><rewrite><rules><!-- API代理规则 - 必须放在前面 --><rule name="Proxy to API" stopProcessing="true"><match url="^api/(.*)" /><action type="Rewrite" url="http://192.168.1.200:5000/api/{R:1}" /></rule><!-- Vue路由规则 --><rule name="Handle History Mode and hash fallback" stopProcessing="true"><match url="(.*)" /><conditions logicalGrouping="MatchAll"><add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /><add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /></conditions><action type="Rewrite" url="/" /></rule></rules></rewrite></system.webServer>
</configuration>
Vue项目API调用:
// 简化的API调用,会被自动代理
axios.get('/api/users') // 实际访问:http://192.168.1.200:5000/api/users
场景4:子目录部署
部署路径:http://domain.com/myapp/
vue.config.js配置:
module.exports = {publicPath: '/myapp/'
}
web.config配置:
<rule name="Handle History Mode and hash fallback" stopProcessing="true"><match url="(.*)" /><conditions logicalGrouping="MatchAll"><add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /><add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /></conditions><action type="Rewrite" url="/myapp/" /> <!-- 修改这里 -->
</rule>
场景5:企业级生产环境
特点:高安全性、高性能、多环境支持
<?xml version="1.0" encoding="utf-8"?>
<configuration><system.webServer><!-- URL重写规则 --><rewrite><rules><!-- 强制HTTPS --><rule name="Redirect to HTTPS" stopProcessing="true"><match url="(.*)" /><conditions><add input="{HTTPS}" pattern="off" ignoreCase="true" /></conditions><action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" /></rule><!-- API代理 --><rule name="API Proxy" stopProcessing="true"><match url="^api/(.*)" /><action type="Rewrite" url="https://api.company.com/{R:1}" /></rule><!-- Vue路由 --><rule name="Handle History Mode and hash fallback" stopProcessing="true"><match url="(.*)" /><conditions logicalGrouping="MatchAll"><add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /><add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /></conditions><action type="Rewrite" url="/" /></rule></rules></rewrite><!-- 安全头 --><httpHeaders><add name="X-Frame-Options" value="SAMEORIGIN" /><add name="X-Content-Type-Options" value="nosniff" /><add name="X-XSS-Protection" value="1; mode=block" /><add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains" /><add name="Referrer-Policy" value="strict-origin-when-cross-origin" /><add name="Content-Security-Policy" value="default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline';" /></httpHeaders><!-- 缓存策略 --><staticContent><clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="31536000" /></staticContent><!-- 启用压缩 --><urlCompression doStaticCompression="true" doDynamicCompression="true" /><!-- 自定义错误页面 --><httpErrors errorMode="Custom"><remove statusCode="404" subStatusCode="-1" /><error statusCode="404" path="/" responseMode="ExecuteURL" /><remove statusCode="500" subStatusCode="-1" /><error statusCode="500" path="/error.html" responseMode="ExecuteURL" /></httpErrors></system.webServer>
</configuration>
常见问题
问题1:HTTP 错误 500.19 - MIME类型冲突
错误信息:
在唯一密钥属性"fileExtension"设置为".js"时,无法添加类型为"mimeMap"的重复集合项
解决方案:
<!-- 方法1:移除staticContent配置(推荐) -->
<!-- 直接删除 <staticContent> 部分 --><!-- 方法2:先移除再添加 -->
<staticContent><remove fileExtension=".js" /><mimeMap fileExtension=".js" mimeType="application/javascript" />
</staticContent>
问题2:页面刷新后404错误
原因:缺少URL重写规则
解决方案:确保web.config包含完整的重写规则
问题3:CSS/JS文件加载失败
原因:文件路径或权限问题
解决方案:
- 检查文件是否完整复制
- 确认IIS_IUSRS权限
- 检查publicPath配置
问题4:API调用跨域错误
解决方案:
- 在web.config中配置API代理
- 在后端API中配置CORS
- 使用nginx反向代理
问题5:子目录部署路径错误
解决方案:
- 修改vue.config.js中的publicPath
- 修改web.config中的重写目标
- 确保路由配置正确
实用配置模板
模板1:开发/测试环境
<?xml version="1.0" encoding="utf-8"?>
<configuration><system.webServer><rewrite><rules><!-- 开发API代理 --><rule name="Dev API" stopProcessing="true"><match url="^api/(.*)" /><action type="Rewrite" url="http://localhost:3000/api/{R:1}" /></rule><rule name="Handle History Mode and hash fallback" stopProcessing="true"><match url="(.*)" /><conditions logicalGrouping="MatchAll"><add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /><add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /></conditions><action type="Rewrite" url="/" /></rule></rules></rewrite><!-- 开发环境允许跨域 --><httpHeaders><add name="Access-Control-Allow-Origin" value="*" /><add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /><add name="Access-Control-Allow-Headers" value="Content-Type, Authorization" /></httpHeaders></system.webServer>
</configuration>
模板2:生产环境(安全优化)
<?xml version="1.0" encoding="utf-8"?>
<configuration><system.webServer><rewrite><rules><!-- 强制HTTPS --><rule name="Force HTTPS" stopProcessing="true"><match url="(.*)" /><conditions><add input="{HTTPS}" pattern="off" /></conditions><action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" /></rule><!-- 生产API --><rule name="Production API" stopProcessing="true"><match url="^api/(.*)" /><action type="Rewrite" url="https://api.production.com/{R:1}" /></rule><rule name="Handle History Mode and hash fallback" stopProcessing="true"><match url="(.*)" /><conditions logicalGrouping="MatchAll"><add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /><add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /></conditions><action type="Rewrite" url="/" /></rule></rules></rewrite><!-- 安全头 --><httpHeaders><add name="X-Frame-Options" value="DENY" /><add name="X-Content-Type-Options" value="nosniff" /><add name="X-XSS-Protection" value="1; mode=block" /><add name="Strict-Transport-Security" value="max-age=31536000" /></httpHeaders><!-- 缓存优化 --><staticContent><clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="604800" /></staticContent></system.webServer>
</configuration>
模板3:多环境切换
<?xml version="1.0" encoding="utf-8"?>
<configuration><system.webServer><rewrite><rules><!-- 开发环境API(手动启用/禁用) --><rule name="Dev API" enabled="false" stopProcessing="true"><match url="^api/(.*)" /><action type="Rewrite" url="http://localhost:3000/api/{R:1}" /></rule><!-- 测试环境API --><rule name="Test API" enabled="false" stopProcessing="true"><match url="^api/(.*)" /><action type="Rewrite" url="https://test-api.company.com/{R:1}" /></rule><!-- 生产环境API --><rule name="Prod API" enabled="true" stopProcessing="true"><match url="^api/(.*)" /><action type="Rewrite" url="https://api.company.com/{R:1}" /></rule><rule name="Handle History Mode and hash fallback" stopProcessing="true"><match url="(.*)" /><conditions logicalGrouping="MatchAll"><add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /><add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /></conditions><action type="Rewrite" url="/" /></rule></rules></rewrite></system.webServer>
</configuration>
部署检查清单
部署前检查
- Vue项目构建成功(
npm run build
) - dist文件夹包含所有文件
- web.config文件已创建
- IIS已安装URL Rewrite模块
部署时检查
- 文件复制到正确位置
- IIS网站配置正确
- 应用程序池设置正确
- 文件权限设置正确
部署后检查
- 网站可以正常访问
- 路由跳转正常
- 页面刷新不出现404
- API调用正常
- 静态资源加载正常
性能优化建议
1. 启用压缩
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
2. 设置缓存
<staticContent><clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="2592000" />
</staticContent>
3. 优化构建
// vue.config.js
module.exports = {productionSourceMap: false, // 禁用source mapconfigureWebpack: {optimization: {splitChunks: {chunks: 'all'}}}
}
总结
- 理解SPA原理:Vue是单页应用,所有路由都要重定向到index.html
- 核心配置不变:无论多少页面,基本的重写规则都一样
- 按需添加功能:根据具体需求添加API代理、安全头等配置
- 环境区分部署:开发、测试、生产使用不同的配置
- 注意执行顺序:web.config规则从上到下执行,注意stopProcessing属性
通过本手册,您可以根据具体情况快速选择合适的配置模板,实现Vue项目在IIS上的成功部署!
相关文章:
VUE项目部署IIS服务器手册
IIS部署Vue项目完整手册 📋 目录 基础概念准备工作Vue项目构建web.config详解IIS部署步骤不同场景配置常见问题实用配置模板 基础概念 Vue单页应用(SPA)工作原理 重要理解:Vue项目是单页应用,这意味着:…...

使用 HTML + JavaScript 实现在线考试系统
在现代的在线教育平台中,在线考试系统是不可或缺的一部分。本文将通过一个完整的示例,演示如何使用 HTML、CSS 和 JavaScript 构建一个支持多种题型的在线考试系统。 效果演示 项目概述 本项目主要包含以下核心功能: 支持4种常见题型&…...

谷歌工作自动化——仙盟大衍灵机——仙盟创梦IDE
下载地址 https://chromewebstore.google.com/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd https://chrome.zzzmh.cn/info/mooikfkahbdckldjjndioackbalphokd...
嵌入式(C语言篇)Day13
嵌入式Day13 一段话总结 文档主要介绍带有头指针和尾指针的单链表的实现及操作,涵盖创建、销毁、头插、尾插、按索引/数据增删查、遍历等核心操作,强调头插/尾插时间复杂度为O(1),按索引/数据操作需遍历链表、时间复杂度为O(n),并…...
Oracle 的V$LOCK 视图详解
Oracle 的V$LOCK 视图详解 V$LOCK 是 Oracle 数据库中最重要的动态性能视图之一,用于显示当前数据库中锁的持有和等待情况。 一、V$LOCK 视图结构 列名数据类型描述SIDNUMBER持有或等待锁的会话标识符TYPEVARCHAR2(2)锁类型标识符ID1NUMBER锁标识符1(…...

秒杀系统—1.架构设计和方案简介
大纲 1.秒杀系统的方案设计要点 2.秒杀系统的数据 页面 接口的处理方案 3.秒杀系统的负载均衡方案底层相关 4.秒杀系统的限流机制和超卖问题处理 5.秒杀系统的异步下单和高可用方案 1.秒杀系统的方案设计要点 (1)秒杀促销活动的数据处理 (2)秒杀促销活动的页面处理 (…...

基于FashionMnist数据集的自监督学习(生成式自监督学习AE算法)
目录 一,生成式自监督学习 1.1 简介 1.2 核心思想 1.3 常见算法 1.3.1 自动编码器(Autoencoder) 1.3.2 生成对抗网络(GANs) 1.3.3 变分自编码器(VAE) 1.3.4 Transformer-based 模型&…...

从监控到告警:Prometheus+Grafana+Alertmanager+告警通知服务全链路落地实践
文章目录 一、引言1.1 监控告警的必要性1.2 监控告警的基本原理1.2.1 指标采集与存储1.2.2 告警规则与触发机制1.2.3 多渠道通知与闭环 二、技术选型与架构设计2.1 为什么选择 Prometheus 及其生态2.1.1 Prometheus 优势分析2.1.2 Grafana 可视化能力2.1.3 Alertmanager 灵活告…...
AUTOSAR图解==>AUTOSAR_EXP_AIADASAndVMC
AUTOSAR高级驾驶辅助系统与车辆运动控制接口详解 基于AUTOSAR R22-11标准的ADAS与VMC接口规范解析 目录 1. 引言2. 术语和概念说明 2.1 坐标系统2.2 定义 2.2.1 乘用车重心2.2.2 极坐标系统2.2.3 车辆加速度/推进力方向2.2.4 倾斜方向2.2.5 方向盘角度2.2.6 道路变量2.2.7 曲率…...

WPF【09】WPF基础入门 (三层架构与MVC架构)
9-2 【操作】WPF 基础入门 新建一项目 Create a new project - WPF Application (A project for creating a .NET Core WPF Application) - Next - .NET 5.0 (Current) - Create 项目创建完成,VS自动打开 GUI用户界面,格式是 .xaml文件,跟xm…...

macOS 风格番茄计时器:设计与实现详解
macOS 风格番茄计时器:设计与实现详解 概述 本文介绍一款采用 macOS 设计语言的网页版番茄计时器实现。该计时器完全遵循苹果的人机界面指南(HIG),提供原汁原味的 macOS 使用体验,同时具备响应式设计和深色模式支持。 核心特性 原生 macOS…...
中文NLP with fastai - Fastai Part4
使用fastai进行自然语言处理 在之前的教程中,我们已经了解了如何利用预训练模型并对其进行微调,以执行图像分类任务(MNIST)。应用于图像的迁移学习原理同样也可以应用于NLP任务。在本教程中,我们将使用名为AWD_LSTM的预训练模型来对中文电影评论进行分类。AWD_LSTM是LSTM…...

oracle goldengate实现远程抽取postgresql 到 postgresql的实时同步【绝对无坑版,亲测流程验证】
oracle goldengate实现postgresql 到 postgresql的实时同步 源端:postgresql1 -> postgresql2 流复制主备同步 目标端:postgresql 数据库版本:postgresql 12.14 ogg版本:21.3 架构图: 数据库安装以及流复制主备…...
【MYSQL】索引篇(一)
1.为什么要有索引 索引的本质是一种数据结构,她的作用其实就是更好更快的帮我们找到数据库中存储的数据,就好比一本书,你想要找到指定的内容,但是如果在没有目录的情况下,你只能一页页的进行寻找,这样效率…...

ISCC-2025-web-wp
web 校赛 校赛靠着ENOCH师傅发力,也是一路躺进了区域赛,E师傅不好意思发这抽象比赛的wp(这比赛确实啥必到让人大开眼界,反正明年我是肯定不会打了),我就顺手要过来连着区域赛的一起发了 web 150分 按照提示进入/includes/fla…...
鸿蒙分辨率
鸿蒙手机App界面开发,UI元素应该以什么哪种屏幕尺寸为基准?换言之,做鸿蒙手机APP UI设计时,应该以哪种屏 PX转VP 华为开发者问答 | 华为开发者联盟 各单位换算API 华为开发者问答 | 华为开发者联盟 开源鸿蒙更改DPI 如何在Op…...
@Docker Compose 部署 Pushgateway
文章目录 Docker Compose 部署 Pushgateway1. 目的2. 适用范围3. 先决条件4. 部署步骤4.1 创建项目目录4.2 创建 docker-compose.yml 文件4.3 启动 Pushgateway 服务4.4 验证服务运行状态4.5 测试 Pushgateway 访问 5. 配置 Prometheus 采集 Pushgateway 数据6. 日常维护6.1 查…...
我们来学mysql -- 从库重启,是否同步主库数据
从库重启后,通常不需要重新复制主库的全部数据,然后再开启复制。MySQL 的主从复制机制设计了优雅的恢复流程,可以在从库重启后继续从上次中断的位置继续复制,前提是相关的日志和状态信息完整。 以下是详细解释: 从库…...

King3399(ubuntu文件系统)iic(i2c)功能测试
0 引言 前面两篇博文简要介绍了板子上uart部分的内容,但在驱动开发时,我们遇到的外设更多的是以i2c或spi进行通信,本文将对king3399的i2c进行测试并对硬件电路、设备树与驱动程序进行分析 如果使用的i2c设备不是mma8452,建议先看…...

德思特新闻 | 德思特与es:saar正式建立合作伙伴关系
德思特新闻 2025年5月9日,德思特科技有限公司(以下简称“德思特”)与德国嵌入式系统专家es:saar GmbH正式达成合作伙伴关系。此次合作旨在将 es:saar 的先进嵌入式开发与测试工具引入中国及亚太市场,助力本地客户提升产品开发效率…...

基于原生JavaScript前端和 Flask 后端的Todo 应用
Demo地址:https://gitcode.com/rmbnetlife/todo-app-js-flask.git Python Todo 应用 这是一个使用Python Flask框架开发的简单待办事项(Todo)应用,采用前后端分离架构。本项目实现了待办事项的添加、删除、状态切换等基本功能,并提供了直观…...
一些Dify聊天系统组件流程图架构图
分享一些有助于深入理解Dify聊天模块的架构图 整体组件架构图 #mermaid-svg-0e2XalGLqrRbH1Jy {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-0e2XalGLqrRbH1Jy .error-icon{fill:#552222;}#mermaid-svg-0e2XalGLq…...
jq处理日志数据
介绍 jq 是一个轻量级且灵活的命令行 JSON 处理器。它允许你使用简单的过滤器来处理 JSON 数据,提取、操作和转换 JSON 文档。jq 是处理 JSON 数据的强大工具,特别适合在命令行环境中使用。 简单将就是:专门处理 json结构的字符串的工具 我…...
Matlab程序设计基础
matlab程序设计基础 程序设计函数文件1.函数文件的基本结构2.创建并使用函数文件的示例3.带多个输出的函数示例4.包含子函数的函数文件 流程控制1. if 条件语句2. switch 多分支选择语句3. try-catch 异常处理语句ME与lasterr 4. while 循环语句5. for 循环语句break和continue…...

MIT 6.S081 2020 Lab6 Copy-on-Write Fork for xv6 个人全流程
文章目录 零、写在前面一、Implement copy-on write1.1 说明1.2 实现1.2.1 延迟复制与释放1.2.2 写时复制 零、写在前面 可以阅读下 《xv6 book》 的第五章中断和设备驱动。 问题 在 xv6 中,fork() 系统调用会将父进程的整个用户空间内存复制到子进程中。**如果父…...

第304个Vulnhub靶场演练攻略:digital world.local:FALL
digital world.local:FALL Vulnhub 演练 FALL (digitalworld.local: FALL) 是 Donavan 为 Vulnhub 打造的一款中型机器。这款实验室非常适合经验丰富的 CTF 玩家,他们希望在这类环境中检验自己的技能。那么,让我们开始吧,看看如何…...

Unity 模拟高度尺系统开发详解——实现拖动、范围限制、碰撞吸附与本地坐标轴选择
内容将会持续更新,有错误的地方欢迎指正,谢谢! Unity 模拟高度尺系统开发详解——实现拖动、范围限制、碰撞吸附与本地坐标轴选择 TechX 坚持将创新的科技带给世界! 拥有更好的学习体验 —— 不断努力,不断进步,不…...

万字详解RTR RTSP SDP RTCP
目录 1 RTSP1.1 RTSP基本简介1.2 RSTP架构1.3 重点内容分析 2 RTR2.1 RTR简介2.2 RTP 封装 H.2642.3 RTP 解封装 H.2642.4 RTP封装 AAC2.5 RTP解封装AAC 3 SDP3.1 基础概念3.2 SDP协议示例解析3.3 重点知识 4 RTCP4.1 RTCP基础概念4.2 重点 5 总结 1 RTSP 1.1 RTSP基本简介 一…...

云服务器如何自动更新系统并保持安全?
云服务器自动更新系统是保障安全、修补漏洞的重要措施。下面是常见 Linux 系统(如 Ubuntu、Debian、CentOS)和 Windows 服务器自动更新的做法和建议: 1. Linux 云服务器自动更新及安全维护 Ubuntu / Debian 系统 手动更新命令 sudo apt up…...
训练中常见的运动强度分类
概述 有氧运动是耐力基础,乳酸阈值是耐力突破的关键,提升乳酸阈值可以延缓疲劳,无氧运动侧重速度和力量,混氧和最大摄氧量用于细化训练强度和评估潜力。 分类强度供能系统乳酸浓度训练目标有氧运动低(60%-80% HR&…...