前端部署:从开发到生产的最后一公里

前端部署:从开发到生产的最后一公里

毒舌时刻

前端部署?这不是运维的事吗?

"我只负责写代码,部署交给运维"——结果部署失败,互相甩锅,
"我直接把文件上传到服务器"——结果更新不及时,缓存问题频发,
"我用FTP上传,多简单"——结果文件传丢,网站崩溃。

醒醒吧,前端部署是前端开发的重要环节,不是别人的事!

为什么你需要这个?

  • 快速上线:自动化部署,减少人工操作
  • 环境一致性:确保开发、测试、生产环境一致
  • 回滚能力:出现问题时可以快速回滚
  • 监控和日志:实时监控网站状态和错误

反面教材

# 反面教材:手动部署 # 1. 本地构建 npm run build # 2. 手动上传文件 ftp ftp://example.com > put -r dist/* # 3. 手动清除缓存 ssh [email protected] > rm -rf /var/www/html/* > cp -r dist/* /var/www/html/ > systemctl restart nginx # 4. 手动检查 curl https://example.com 

正确的做法

# 正确的做法:使用CI/CD # .github/workflows/deploy.yml name: Deploy to Production on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: '18' cache: 'npm' - name: Install dependencies run: npm ci - name: Build run: npm run build - name: Test run: npm test - name: Deploy to Vercel uses: amondnet/vercel-action@v25 with: vercel-token: ${{ secrets.VERCEL_TOKEN }} vercel-args: '--prod' vercel-org-id: ${{ secrets.VERCEL_ORG_ID }} vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }} 
# 正确的做法:使用Docker # Dockerfile FROM node:18-alpine AS build WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build FROM nginx:alpine COPY --from=build /app/dist /usr/share/nginx/html COPY nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] 
# 正确的做法:Nginx配置 # nginx.conf server { listen 80; server_name example.com; root /usr/share/nginx/html; index index.html; # 处理单页应用路由 location / { try_files $uri $uri/ /index.html; } # 静态资源缓存 location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires 30d; add_header Cache-Control "public, max-age=2592000"; } # Gzip压缩 gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; } 
// 正确的做法:使用CDN // vite.config.js import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; export default defineConfig({ plugins: [react()], build: { outDir: 'dist', assetsDir: 'assets', // 生成带哈希的文件名,便于缓存 rollupOptions: { output: { entryFileNames: 'assets/[name].[hash].js', chunkFileNames: 'assets/[name].[hash].js', assetFileNames: 'assets/[name].[hash].[ext]' } } }, // 配置CDN base: 'https://cdn.example.com/' }); 

毒舌点评

看看,这才叫前端部署!不是简单地手动上传文件,而是使用CI/CD、Docker、CDN等现代化工具。

记住,前端部署不是一次性的任务,而是一个持续的过程。你需要考虑构建优化、缓存策略、回滚机制等多个方面。

所以,别再觉得部署是运维的事了,它是你作为前端开发者的责任!

总结

  • CI/CD:使用GitHub Actions、GitLab CI等自动化部署
  • Docker:使用容器化技术,确保环境一致性
  • CDN:使用内容分发网络,提高访问速度
  • 缓存策略:合理设置缓存,减少重复请求
  • 监控:使用监控工具,实时了解网站状态
  • 日志:收集和分析日志,快速定位问题
  • 回滚:准备回滚方案,出现问题时快速恢复
  • 环境变量:使用环境变量管理不同环境的配置

前端部署,让你的代码快速、安全地到达用户手中!

Read more

【机器人】ROS2 功能包创建与 CMake 编译链路探秘

【机器人】ROS2 功能包创建与 CMake 编译链路探秘

🔥大奇个人主页 :https://blog.ZEEKLOG.net/m0_75192474?type=blog ⚡本文所属专栏:https://blog.ZEEKLOG.net/m0_75192474/category_13131150.html ros2 pkg create 是 ROS2(Robot Operating System 2)中用于快速初始化功能包的官方核心命令行工具。其核心作用是自动生成功能包所需的完整目录结构、配置文件及可选示例节点,避免手动创建文件和配置的繁琐操作,大幅提升开发效率。 该命令支持两种主流构建类型(C++/Python),可直接指定依赖包、维护者信息、开源协议等关键配置,生成的功能包完全符合 ROS2 官方规范,可直接用于编译、运行及后续开发扩展 ⏰ 创建工作空间 首先需要再主目录中新建一个文件夹,带src目录 mkdir-p test_ws/

Bodymovin终极指南:从AE动画到Web部署的完整解决方案

Bodymovin终极指南:从AE动画到Web部署的完整解决方案 【免费下载链接】bodymovin-extensionBodymovin UI extension panel 项目地址: https://gitcode.com/gh_mirrors/bod/bodymovin-extension 在当今数字体验时代,After Effects动画的Web化部署已成为前端开发的必备技能。Bodymovin插件通过其强大的数据转换引擎和渲染优化技术,彻底解决了AE动画在Web环境中的兼容性和性能瓶颈问题。本文将深度解密Bodymovin的核心技术实现,并提供从环境搭建到生产部署的完整操作指南。 核心技术解密:数据转换与渲染优化 Bodymovin的核心竞争力在于其精密的数据解析引擎和格式转换系统。位于bundle/jsx/utils/目录下的核心模块构成了整个系统的数据处理基础。 动画数据解析机制深度剖析 ProjectParser.jsx模块采用分层解析策略,首先识别AE项目中的图层层级结构,然后逐层提取动画属性数据。该模块通过智能算法自动过滤不支持的特效和属性,确保输出

Kylin(麒麟)V10系统安装WebLogic 12C

Kylin(麒麟)V10系统安装WebLogic 12C

目录 前言 一、JDK环境 二、安装WebLogic 1. 下载安装包 2. 开始安装 前言 先说下服务器的情况:我的环境是国产化环境,所以和之前的X86架构有些区别之处。 CPU是华为鲲鹏(Kunpeng)ARM64(aarch64)指令集架构,所以操作系统是:Kylin Linux Advanced Server V10 (ARM64) 。 由此我们在安装其他软件的时候也要注意这一点了,需要下载安装ARM64(aarch64)指令集架构的软件了,不然会会报指令集不符的相关错误提示。 一、JDK环境 Kylin V10系统默认安装匹配的是OpenJDK。 这里我安装WebLogic 12C时使用的是Oracle JDK。当然OpenJDK应该也是可以的。 JDK要求:WebLogic 12.2.1.4 需要 JDK 8(1.8.

YOLO12目标检测WebUI:5分钟快速部署实战教程

YOLO12目标检测WebUI:5分钟快速部署实战教程 1. 引言:为什么选择YOLO12? 你有没有想过,让计算机像人眼一样快速识别图片中的物体?从自动驾驶汽车识别行人,到工厂流水线检测产品缺陷,目标检测技术正在改变我们的生活。而在众多检测模型中,YOLO系列一直以其"又快又准"的特点备受青睐。 YOLO12作为该系列的最新成员,在2025年初由纽约州立大学布法罗分校与中国科学院大学团队联合发布。这个以注意力机制为核心的实时目标检测模型,在保持YOLO系列高速推理优势的同时,进一步提升了检测精度。 今天,我将带你用短短5分钟时间,快速部署一个基于YOLO12的WebUI目标检测服务。无需深厚的AI背景,只要跟着步骤操作,你就能拥有一个功能完整的物体识别系统! 2. 环境准备与快速部署 2.1 系统要求 在开始之前,请确保你的系统满足以下基本要求: * 操作系统:Ubuntu 18.04+ 或 CentOS 7+ * 内存:至少4GB RAM(推荐8GB) * 存储空间:10GB可用空间 * Python版本:3.8或更高版本