news 2026/9/4 10:50:22

Vue3 Nuxt4 SSR应用部署指南:Ubuntu服务器配置与PM2+Nginx实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Vue3 Nuxt4 SSR应用部署指南:Ubuntu服务器配置与PM2+Nginx实战

如果你是一名前端开发者,正在使用 Vue3 和 Nuxt4 构建一个现代化的 Web 应用,并且希望它拥有更好的 SEO 和首屏加载速度,那么服务器端渲染(SSR)几乎是必经之路。然而,从本地开发到将 SSR 应用成功部署到一台 Ubuntu 服务器上,这中间的路途往往布满荆棘:Node.js 环境、PM2 进程守护、Nginx 反向代理、SSL 证书、防火墙配置……任何一个环节出错,你的应用都可能无法访问。

网上教程很多,但大多只讲单一环节,或者版本老旧。当你把 Vue3、Nuxt4、Ubuntu 这几个关键词组合在一起时,会发现缺少一份能串联所有步骤、讲清原理、并指出常见深坑的完整指南。这篇文章的目的,就是填补这个空白。它不是简单的命令罗列,而是基于真实部署经验,为你梳理出一条从代码到线上可访问的清晰路径,并解释每一步背后的“为什么”。

我们将聚焦于一个最经典的部署架构:在 Ubuntu 服务器上,使用 PM2 管理 Nuxt4 SSR 应用进程,并通过 Nginx 作为反向代理和静态资源服务器。你会看到,部署 SSR 应用的核心,不仅是运行npm run buildnpm start,更在于如何构建一个稳定、可维护的生产环境。

1. 为什么 Nuxt4 SSR 部署比传统 SPA 更复杂?

在开始动手之前,我们必须先理解挑战所在。如果你只部署过 Vue CLI 创建的纯客户端 SPA(单页应用),那么过程通常很简单:运行npm run build,将生成的dist文件夹扔到 Nginx 或对象存储,配置一下路由回退就完成了。因为 SPA 最终只是一堆静态的 HTML、CSS 和 JS 文件。

但 Nuxt4 在启用 SSR 模式后,情况发生了根本变化:

  1. 它需要一个 Node.js 运行时环境:SSR 意味着首次页面渲染是在服务器端完成的。这需要你的服务器上有一个持续运行的 Node.js 进程来执行 Vue 组件代码、生成 HTML。这个进程就是你的应用服务器。
  2. 它涉及构建与运行两个阶段
    • 构建阶段:在服务器或 CI/CD 环境中,你需要运行npm run build(或nuxi build)。这个过程会编译你的 Vue 代码,并生成两部分产物:
      • 客户端 Bundle:和 SPA 类似的静态资源(_nuxt/目录)。
      • 服务端 Bundle:一个用于 Node.js 环境运行的服务器入口文件(通常位于.output目录)。
    • 运行阶段:你需要启动这个服务端 Bundle,它会在指定端口(如 3000)启动一个 HTTP 服务器,监听请求,动态渲染页面。
  3. 进程管理是必须的:你不能仅仅通过node .output/server/index.mjs来启动服务,因为一旦终端关闭,进程就结束了。你需要一个像PM2这样的进程守护管理器,来保证应用持续运行,并在崩溃时自动重启。
  4. 需要反向代理:我们通常不会让用户直接访问 Node.js 服务的端口(如http://你的服务器IP:3000)。更专业的做法是使用Nginx监听 80/443 端口(HTTP/HTTPS),然后将请求转发给内部运行的 Node.js 应用。这样做的好处包括:负载均衡、静态文件高效服务、SSL 卸载、安全过滤等。

所以,部署 Nuxt4 SSR 应用,本质上是在服务器上搭建一个由“Node.js 应用进程 + 反向代理网关”构成的微型后端服务集群。理解了这一点,后续的所有步骤就都有了清晰的逻辑。

2. 环境准备:你的服务器与工具清单

在开始部署前,请确保你拥有并配置好以下资源。这是整个流程的基石。

2.1 服务器要求

  • 操作系统:Ubuntu 20.04 LTS 或 22.04 LTS(长期支持版)。本文以 Ubuntu 22.04 为例,其他版本大同小异。
  • 最低配置:对于初期项目,1核 CPU、2GB 内存的云服务器实例(如阿里云、腾讯云、AWS 的轻量应用服务器)足够运行。内存尤为重要,因为 Node.js 进程和构建过程都比较消耗内存。
  • 网络:确保服务器的安全组或防火墙规则开放了22端口(SSH)80端口(HTTP)443端口(HTTPS)。后续我们会在服务器内部使用 3000 端口,这个端口不需要对公网开放。

2.2 本地与服务器工具

  • 本地机器:你需要一个终端工具(如 macOS 的 Terminal、Windows 的 PowerShell 或 Git Bash)通过 SSH 连接服务器。
  • 服务器环境:我们将通过 SSH 在服务器上安装一系列工具:
    • Node.js & npm:运行 Nuxt 应用的核心。
    • PM2:进程管理。
    • Nginx:Web 服务器和反向代理。
    • Git:从代码仓库拉取项目(可选,但推荐)。

2.3 项目前提

  • 你有一个基于 Vue3 和 Nuxt4 开发完成的项目。
  • 项目根目录下的nuxt.config.ts中,配置了ssr: true(这是 Nuxt4 的默认配置,除非你显式关闭)。
  • 你有一个可以访问的代码仓库(如 GitHub、GitLab),或者已经将项目代码打包准备好。

3. 第一步:连接服务器与基础环境配置

让我们从登录服务器开始,搭建起最基本的环境。

3.1 SSH 连接服务器

使用你的终端,通过 SSH 连接到 Ubuntu 服务器。你需要服务器的公网 IP 地址和登录密码(或密钥)。

ssh username@your_server_ip # 例如:ssh root@123.123.123.123

连接成功后,你将进入服务器的命令行界面。

3.2 更新系统与安装基础工具

首先,更新系统的软件包列表并升级现有软件,这是一个好习惯。

sudo apt update sudo apt upgrade -y

安装一些后续可能需要的工具,如curlvim

sudo apt install curl vim -y

3.3 安装 Node.js 与 npm

Ubuntu 默认的软件源中的 Node.js 版本可能较旧。我们推荐使用 NodeSource 提供的仓库来安装长期支持版(LTS)。

  1. 安装 NodeSource 仓库脚本(这里安装 Node.js 20.x LTS,你可以根据需要选择其他版本):
    curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
  2. 安装 Node.js 和 npm:
    sudo apt install -y nodejs
  3. 验证安装:
    node --version # 应输出 v20.x.x npm --version # 应输出对应的 npm 版本

4. 第二步:部署你的 Nuxt4 项目代码

有几种方式可以将代码放到服务器上,我们介绍两种最常用的。

4.1 方法一:通过 Git 克隆(推荐)

如果你的代码在 Git 仓库中,这是最清晰、便于后续更新的方式。

  1. 在服务器上安装 Git:
    sudo apt install git -y
  2. 选择一个目录存放你的项目,例如/var/www/
    cd /var sudo mkdir www cd www
  3. 克隆你的项目仓库(这里以公开仓库为例,私有仓库需要配置 SSH 密钥或使用 HTTPS 密码):
    sudo git clone https://github.com/your-username/your-nuxt-project.git cd your-nuxt-project
  4. 安装项目依赖:
    npm install # 或使用 yarn/pnpm
    注意:确保服务器上的 Node.js 版本符合项目package.jsonengines字段的要求。

4.2 方法二:通过压缩包上传

如果你不想在服务器上配置 Git,或者只是做一次性的部署。

  1. 在本地,将你的项目目录(排除node_modules.env等敏感文件)打包:
    # 在本地项目根目录执行 tar -czf nuxt-project.tar.gz --exclude=node_modules --exclude=.git --exclude=.env .
  2. 使用scp命令将压缩包上传到服务器:
    scp nuxt-project.tar.gz username@your_server_ip:/tmp/
  3. 回到服务器 SSH 会话,解压到目标目录:
    sudo mkdir -p /var/www/nuxt-project sudo tar -xzf /tmp/nuxt-project.tar.gz -C /var/www/nuxt-project cd /var/www/nuxt-project
  4. 安装项目依赖:
    npm install

5. 第三步:构建 Nuxt4 SSR 应用

代码就位后,我们需要在服务器上进行构建,生成生产环境所需的文件。

  1. 确保你在项目根目录下(/var/www/your-nuxt-project)。
  2. 运行构建命令。Nuxt4 使用nuxi作为 CLI 工具,npm run build会调用它。
    npm run build
    这个过程会执行以下操作:
    • 编译 Vue 组件和 TypeScript(如果使用)。
    • 生成客户端资源(打包后的 JS、CSS),存放在.output/public/_nuxt
    • 生成服务端 Bundle(Node.js 服务器代码),存放在.output/server
    • 生成nitro.json等配置文件。 构建时间取决于项目复杂度。完成后,你会看到.output目录。

关键点:构建过程需要内存。如果服务器内存较小(如 1GB),可能会在构建过程中因内存不足而失败。如果遇到这种情况,可以考虑:

  • 增加服务器交换空间(Swap)。
  • 在本地构建,然后将.output目录上传到服务器(但需注意服务器 Node.js 版本与构建环境一致)。
  • 使用NITRO_PRESET=node环境变量,或调整nuxt.config.ts中的nitro配置来优化构建。

6. 第四步:使用 PM2 进程守护

构建完成后,我们不能直接运行npm start了事。我们需要 PM2 来管理这个 Node.js 进程。

6.1 安装 PM2

sudo npm install -g pm2

6.2 创建 PM2 生态系统配置文件

在项目根目录下创建一个ecosystem.config.cjs文件。这个文件告诉 PM2 如何启动和管理你的应用。

// 文件路径:/var/www/your-nuxt-project/ecosystem.config.cjs module.exports = { apps: [ { name: 'nuxt-app', // 你的应用名称,在 PM2 列表中显示 port: 3000, // Nuxt 服务监听的端口,需与后续 Nginx 配置对应 exec_mode: 'cluster', // 集群模式,利用多核CPU instances: 'max', // 启动与 CPU 核心数相同的实例数,或指定数字 script: './.output/server/index.mjs', // Nuxt4 构建后的入口文件 env: { NODE_ENV: 'production', // 生产环境 HOST: '0.0.0.0', // 监听所有网络接口 PORT: 3000, }, }, ], };

重要解释

  • script:这是 Nuxt4 构建后生成的服务端入口文件路径,与 Nuxt3/4 的 Nitro 引擎输出结构一致。
  • exec_mode: 'cluster'instances: 'max':这是 PM2 的集群模式,可以启动多个应用实例,充分利用多核 CPU 性能并提高并发能力。对于 Nuxt SSR 应用,这通常是推荐配置。
  • HOST: '0.0.0.0':确保应用监听所有网络接口,而不仅仅是本地回环地址(127.0.0.1),这样 Nginx 才能访问到它。

6.3 启动应用并设置开机自启

  1. 使用 PM2 启动配置文件:
    pm2 start ecosystem.config.cjs
  2. 查看应用状态:
    pm2 status
    你应该能看到名为nuxt-app的应用状态为online
  3. 保存当前 PM2 应用列表。这样当服务器重启后,PM2 会自动恢复运行这些应用:
    pm2 save
  4. 生成系统启动脚本,让 PM2 本身也能开机自启(针对 Ubuntu 使用systemd):
    pm2 startup systemd
    执行上述命令后,它会输出一行需要你执行的sudo命令,复制并运行它。例如:
    sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u your_username --hp /home/your_username
    完成后,你的 Nuxt 应用就已经在后台稳定运行,并且服务器重启后也会自动启动。

6.4 常用的 PM2 命令

pm2 logs nuxt-app # 查看实时日志 pm2 logs nuxt-app --lines 100 # 查看最近100行日志 pm2 stop nuxt-app # 停止应用 pm2 restart nuxt-app # 重启应用 pm2 delete nuxt-app # 从 PM2 列表中删除应用 pm2 monit # 打开监控仪表板

7. 第五步:配置 Nginx 反向代理

现在,你的应用在http://localhost:3000http://服务器内网IP:3000上运行。接下来,我们需要配置 Nginx,让用户通过域名(或服务器IP)的 80/443 端口访问。

7.1 安装 Nginx

sudo apt install nginx -y

7.2 创建 Nginx 站点配置文件

Nginx 的站点配置文件通常放在/etc/nginx/sites-available/,并通过在/etc/nginx/sites-enabled/创建软链接来启用。

  1. 创建一个新的配置文件,以你的域名命名(如果没有域名,也可以用服务器 IP):

    sudo vim /etc/nginx/sites-available/your-domain.com

    (将your-domain.com替换为你的实际域名或一个标识符,如nuxt-app

  2. 将以下配置粘贴到文件中。这是一个最基础但功能完整的配置,它处理了:

    • 将 HTTP 请求转发到本地的 Nuxt 应用(3000端口)。
    • 高效地直接提供_nuxt静态资源,减轻 Node.js 进程负担。
    • 设置了一些对 SSR 应用有益的 HTTP 头。
# 文件路径:/etc/nginx/sites-available/your-domain.com server { listen 80; listen [::]:80; server_name your-domain.com www.your-domain.com; # 改为你的域名,或用服务器IP # 静态资源缓存优化:直接由 Nginx 处理,性能最好 location /_nuxt/ { alias /var/www/your-nuxt-project/.output/public/_nuxt/; expires 1y; add_header Cache-Control "public, immutable"; gzip_static on; # 如果存在预压缩的 .gz 文件,直接使用 } # 其他静态文件(如 /favicon.ico, /robots.txt) location / { try_files $uri $uri/ @proxy; } # 反向代理到 Nuxt 应用 location @proxy { proxy_pass http://localhost:3000; # 指向 PM2 运行的端口 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_cache_bypass $http_upgrade; # 以下两行对 Nuxt SSR 很重要,确保正确的协议和主机头 proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; } # 可选:禁止访问某些敏感文件 location ~ /\.(?!well-known) { deny all; } }

关键配置解析

  • server_name:你的域名。如果暂时没有域名,可以填写服务器公网 IP,或者用下划线_表示匹配所有。
  • location /_nuxt/:这是 Nuxt 生成的客户端静态资源路径。由 Nginx 直接提供这些文件,速度远快于经过 Node.js 进程。
  • proxy_pass http://localhost:3000:这是核心,将所有非静态文件的请求转发给我们在 PM2 下运行的 Nuxt 应用。
  • proxy_set_header:这些指令将客户端的真实 IP、协议等信息传递给后端的 Nuxt 应用,对于应用内获取客户端信息至关重要。

7.3 启用站点并测试配置

  1. 创建符号链接以启用该站点:
    sudo ln -s /etc/nginx/sites-available/your-domain.com /etc/nginx/sites-enabled/
  2. 测试 Nginx 配置语法是否正确:
    sudo nginx -t
    如果输出syntax is oktest is successful,则说明配置正确。
  3. 重新加载 Nginx 使配置生效:
    sudo systemctl reload nginx # 或者 sudo nginx -s reload

7.4 验证访问

现在,打开浏览器,访问你的服务器 IP 地址或配置的域名(前提是 DNS 已解析)。你应该能看到你的 Nuxt4 SSR 网站正常显示了。

可以通过查看日志来确认请求流向:

# 查看 Nginx 访问日志 sudo tail -f /var/log/nginx/access.log # 查看 Nuxt 应用日志(通过 PM2) pm2 logs nuxt-app

8. 第六步:配置 HTTPS(SSL/TLS 证书)

为了安全,生产环境网站必须使用 HTTPS。我们将使用 Let‘s Encrypt 提供的免费证书,并通过certbot工具自动化获取和续签。

8.1 安装 Certbot

sudo apt install certbot python3-certbot-nginx -y

8.2 获取并安装证书

运行以下命令,Certbot 会自动读取你的 Nginx 配置,并引导你完成证书申请和配置更新。

sudo certbot --nginx -d your-domain.com -d www.your-domain.com

按照提示操作:

  1. 输入你的邮箱(用于接收证书到期提醒)。
  2. 同意服务条款。
  3. 选择是否订阅新闻邮件(可选否)。
  4. Certbot 会自动验证你对域名的控制权(通过 HTTP 挑战),然后下载证书并修改你的 Nginx 配置文件。

完成后,你的 Nginx 配置文件会被自动修改,添加监听 443 端口的server块,并配置好 SSL 证书路径。

8.3 验证自动续签

Let‘s Encrypt 证书有效期为 90 天,Certbot 会设置一个定时任务自动续签。你可以测试自动续签是否正常工作:

sudo certbot renew --dry-run

如果测试成功,就无需担心证书过期问题。

现在,你可以通过https://your-domain.com安全地访问你的网站了。Nginx 也会自动将 HTTP 请求重定向到 HTTPS。

9. 常见问题与排查思路

部署过程很少一帆风顺。下表列出了你可能遇到的一些典型问题及解决方法。

问题现象可能原因排查方式解决方案
访问服务器 IP 显示 Nginx 默认页Nginx 默认站点 (default) 未被禁用,或你的站点配置未生效。1.sudo nginx -t检查配置。
2.ls /etc/nginx/sites-enabled/查看启用了哪些站点。
禁用默认站点:sudo rm /etc/nginx/sites-enabled/default,然后sudo systemctl reload nginx
访问网站出现 502 Bad GatewayNginx 无法连接到后端的 Nuxt 应用(PM2 进程)。1.pm2 status检查应用是否运行。
2.curl http://localhost:3000在服务器内部测试应用是否响应。
3. 检查 Nginx 配置中proxy_pass的端口是否与 PM2 配置一致。
1. 确保 PM2 应用已启动 (pm2 start)。
2. 检查应用是否在正确端口监听 (netstat -tlnp | grep 3000)。
3. 检查防火墙是否阻止了本地回环地址的通信(通常不会)。
静态资源(JS/CSS)404Nginx 配置中location /_nuxt/alias路径错误。1. 检查alias指向的路径是否存在.output/public/_nuxt目录。
2. 查看 Nginx 错误日志sudo tail -f /var/log/nginx/error.log
修正alias路径,确保指向构建生成的_nuxt目录的绝对路径。
应用运行但样式错乱/交互失效客户端静态资源加载失败,或 SSR 与客户端 Hydration 不匹配。1. 浏览器开发者工具查看 Console 和 Network 标签页,是否有资源加载错误。
2. 检查服务器和本地构建的 Node.js 版本是否一致。
1. 确保 Nginx 正确代理了静态资源。
2. 尝试在服务器上删除.outputnode_modules,重新npm installnpm run build
3. 检查是否有只在客户端运行的代码在 SSR 阶段被执行。
PM2 应用频繁重启应用进程崩溃,可能是内存不足、代码错误或端口冲突。pm2 logs nuxt-app --lines 50查看崩溃前的错误日志。1. 根据日志修复代码错误。
2. 增加服务器内存或配置 Swap。
3. 检查端口 3000 是否被其他进程占用。
HTTPS 证书申请失败域名 DNS 解析未生效,或服务器 80 端口被防火墙阻止。1.ping your-domain.com检查解析。
2.sudo ufw status检查防火墙规则。
3. 查看 Certbot 日志。
1. 等待 DNS 生效或检查 DNS 设置。
2. 确保服务器安全组和本地防火墙开放 80 端口。

10. 最佳实践与进阶建议

完成基础部署后,以下建议能帮助你构建更健壮的生产环境。

10.1 环境变量管理

永远不要将敏感信息(如 API Keys、数据库密码)硬编码在代码中。使用环境变量。

  1. 在项目根目录创建.env文件(不要提交到 Git):
    # .env NUXT_API_SECRET=your_super_secret_key_here NUXT_PUBLIC_API_BASE=https://api.example.com
  2. nuxt.config.ts或组件中通过process.envuseRuntimeConfig()访问。
  3. 在 PM2 配置中,也可以通过env对象注入环境变量。

10.2 使用非 root 用户运行

出于安全考虑,建议创建一个专门的系统用户来运行你的 Node.js 应用,而不是直接使用root

# 创建新用户,例如 ‘deployer’ sudo adduser deployer # 将项目目录所有权赋予该用户 sudo chown -R deployer:deployer /var/www/your-nuxt-project # 切换到该用户进行后续的 npm install 和 pm2 操作 sudo su - deployer cd /var/www/your-nuxt-project # 然后在此用户下安装依赖、构建、启动 PM2 # 注意:PM2 的 startup 命令也需要在此用户下运行

10.3 日志管理与监控

  • 集中日志:将 PM2 和 Nginx 的日志导出到如logrotate管理的文件,或发送到远程日志服务(如 ELK Stack、Sentry)。
  • 进程监控:除了pm2 monit,可以集成 PM2 的 API 到你的监控系统,或使用云服务商提供的监控告警。
  • 应用性能监控(APM):对于复杂应用,考虑集成像 Sentry(错误跟踪)、或 OpenTelemetry(链路追踪)等工具。

10.4 自动化部署(CI/CD)

手动部署效率低下且易出错。可以考虑设置简单的 CI/CD 流程:

  1. 使用 Git Hooks:在服务器上配置 Git 仓库的post-receive钩子,在收到推送后自动执行拉取、安装、构建、重启 PM2 等操作。
  2. 使用 GitHub Actions / GitLab CI:在代码仓库中配置 CI 脚本,在合并到主分支后,自动通过 SSH 连接到服务器执行部署脚本。
  3. 使用 Docker:将你的 Nuxt 应用 Docker 化,在服务器上使用 Docker Compose 管理。这能提供更好的环境一致性。

10.5 性能优化

  • Nginx 缓存:对于某些不常变化的 SSR 页面,可以在 Nginx 层面设置代理缓存,极大减轻 Nuxt 应用压力。
  • CDN:将/_nuxt/静态资源上传到 CDN,并修改nuxt.config.ts中的app.headruntimeConfig.public来配置资源基础 URL。
  • Nuxt 层优化:利用 Nuxt 的useAsyncDatauseLazyAsyncData进行数据获取优化,合理使用client-only组件。

从本地开发到云端部署,将 Vue3 Nuxt4 SSR 应用成功上线,是一个涉及前端、Node.js 运维和 Linux 系统的综合工程。本文详细拆解了从服务器环境准备、代码部署、构建、进程守护、反向代理到 HTTPS 配置的完整链路,并提供了常见问题的排查思路和进阶最佳实践。

最关键的是理解这个架构:PM2 负责让 Node.js 应用“活”得稳定,Nginx 负责对外提供高效、安全的访问通道。掌握了这个核心,无论工具如何迭代,你都能快速适应。建议你将服务器配置过程脚本化,并尽快引入简单的自动化部署流程,这将是你从“会部署”到“高效部署”的关键一步。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/4 10:50:19

四阶段黑盒身份验证:AI模型行为指纹审计方法

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/4 10:50:03

【无人机编队】模拟、可视化和测试协作无人机群行为,实时3D操作地图、四种群体协调模式、模拟IMU遥测、GPS地理定位和插件架附MATLAB代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

作者头像 李华
网站建设 2026/9/4 10:49:37

变频器载波频率怎么调?原理、参数设置与现场干扰问题全解析

设备一启动,电机就发出那种尖厉的“吱吱”声,像有人在用指甲刮黑板;旁边的编码器偶尔乱跳,485通讯时不时掉线,变频器面板还动不动过热报警。你去现场排查了一圈,电压正常、接线牢固、程序也没问题&#xff…

作者头像 李华
网站建设 2026/9/4 10:47:59

国产MCU低功耗实战:从I2C通信到选型避坑全记录

1. 项目缘起:为什么我会对一个“小东西”较真先说结论:这个小项目做完,我对国产MCU的认知确实被刷新了。我过去几年做嵌入式开发,项目里主力还是国外一线大厂的片子,国产芯片总给我一种“文档跟不上、坑要靠自己踩、生…

作者头像 李华
网站建设 2026/9/4 10:46:43

测试效率提升实战:从用例设计到自动化回归的改进指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/4 10:46:14

56G MezzaWave连接器:高速高密度互连的设计、仿真与实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华