前端部署:别让你的应用在上线后掉链子

前端部署:别让你的应用在上线后掉链子

毒舌时刻

这部署流程写得跟绕口令似的,谁能记得住?

各位前端同行,咱们今天聊聊前端部署。别告诉我你还在手动上传文件到服务器,那感觉就像在石器时代用石头砸坚果——能用,但效率低得可怜。

为什么你需要自动化部署

最近看到一个项目,部署时需要手动复制文件到服务器,每次部署都要花上几个小时。我就想问:你是在做部署还是在做体力活?

反面教材

# 反面教材:手动部署 # 1. 构建项目 npm run build # 2. 压缩文件 zip -r build.zip build # 3. 上传到服务器 scp build.zip user@server:/var/www/html # 4. 登录服务器 ssh user@server # 5. 解压文件 unzip build.zip # 6. 移动文件 mv build/* /var/www/html # 7. 清理文件 rm -rf build build.zip 

毒舌点评:这部署流程,就像在徒步穿越沙漠,累得要命还慢。

正确姿势

1. CI/CD 流水线

# 正确姿势:GitHub Actions # .github/workflows/deploy.yml name: Deploy on: push: branches: [ main ] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-node@v3 with: node-version: '16' - run: npm install - run: npm run build - name: Deploy to GitHub Pages uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./build 

2. Docker 部署

# 正确姿势:Docker 部署 # Dockerfile FROM node:16-alpine AS build WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build FROM nginx:alpine COPY --from=build /app/build /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] # docker-compose.yml version: '3' services: frontend: build: . ports: - "80:80" restart: always 

3. 环境配置

// 正确姿势:环境配置 // .env NODE_ENV=production REACT_APP_API_URL=https://api.example.com REACT_APP_WEB_URL=https://example.com // 使用环境变量 // src/api.js const API_URL = process.env.REACT_APP_API_URL; export async function fetchData() { const response = await fetch(`${API_URL}/data`); return response.json(); } 

4. 缓存策略

# 正确姿势:缓存策略 # 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, no-transform"; } # API 代理 location /api { proxy_pass https://api.example.com; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 

毒舌点评:这才叫前端部署,自动化流程,高效可靠,再也不用担心部署出错了。

Read more

实验三 Windows Server 2022/2025 搭建 Web 服务器实验指导书

实验三 Windows Server 2022/2025 搭建 Web 服务器实验指导书

作者:非凡大爹|版本:v1|日期:2026-03-30|DocID:CN-LAB-2026-03-WEB-1-LG-V1 原创声明:本文为非凡大爹原创,首发于ZEEKLOG,转载或引用请注明出处。 一、实验基本信息 课程名称: Windows 网络管理 / 网络操作系统 / 服务器配置与管理 实验名称: Windows Server 2022/2025 搭建 Web 服务器 实验性质: 验证性 + 应用性实验 实验类别: 综合配置实验 建议学时: 2 学时 实验方式: 学生独立操作 + 结果验证 二、实验目的 1. 知识目标 理解 Web 服务器的基本作用,了解网站从“本地网页文件”到“网络可访问服务”的基本发布过程,

前端状态管理比较:选择适合你的状态管理方案

前端状态管理比较:选择适合你的状态管理方案 毒舌时刻 状态管理?听起来就像是前端工程师为了显得自己很高级而特意发明的复杂概念。你以为随便找个状态管理库就能解决所有问题?别做梦了!到时候你会发现,状态管理库本身就是个问题。 你以为Redux是万能的?别天真了!Redux的样板代码多到让你崩溃,调试起来也非常麻烦。还有那些所谓的轻量级状态管理库,看起来简单,用起来却各种问题。 为什么你需要这个 1. 复杂状态管理:当应用变得复杂时,组件间的状态共享和管理会变得非常困难,需要一个专门的状态管理方案。 2. 可预测性:良好的状态管理方案可以让状态变化变得可预测,便于调试和测试。 3. 性能优化:状态管理方案可以帮助你优化组件渲染,提高应用性能。 4. 代码组织:状态管理方案可以帮助你更好地组织代码,提高代码的可维护性。 5. 团队协作:统一的状态管理方案可以便于团队成员之间的协作,减少沟通成本。 反面教材 // 这是一个典型的状态管理混乱的例子 import React, { useState, useEffect } from 'react'; function

零基础学微信小程序前端(原生JS):从0到1写第一个可交互页面

零基础学微信小程序前端(原生JS):从0到1写第一个可交互页面

目录 一、小程序前端的核心差异 二、前期准备:微信开发者工具搭建 三、核心知识点:小程序前端的目录结构 四、实操:写第一个可交互页面 1. 编写页面结构(index.wxml) 2. 编写页面样式(index.wxss) 3. 编写页面逻辑(index.js) 五、运行测试:看看效果 六、新手常见问题&解决方法 七、入门总结 一、小程序前端的核心差异 和你熟悉的 Web 前端(HTML+CSS+JS)相比,小程序有 3 个核心不同: 1. 标签不同:HTML 的div/p/

前端真的能防录屏?EME(加密媒体扩展) DRM 反录屏原理 + 实战代码

前端真的能防录屏?EME(加密媒体扩展) DRM 反录屏原理 + 实战代码

🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Micro麦可乐的博客 🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战 🌺《RabbitMQ》专栏19年编写主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战 🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解 🌛《开源项目》本专栏主要介绍目前热门的开源项目,带大家快速了解并轻松上手使用 🍎 《前端技术》专栏以实战为主介绍日常开发中前端应用的一些功能以及技巧,均附有完整的代码示例 ✨《开发技巧》本专栏包含了各种系统的设计原理以及注意事项,并分享一些日常开发的功能小技巧 💕《Jenkins实战》专栏主要介绍Jenkins+Docker的实战教程,让你快速掌握项目CI/CD,是2024年最新的实战教程 🌞《Spring Boot》专栏主要介绍我们日常工作项目中经常应用到的功能以及技巧,代码样例完整 👍《Spring Security》专栏中我们将逐步深入Spring Security的各个