当前位置: 首页 > wzjs >正文

网站正能量晚上免费网址不用下载网络营销案例成功案例

网站正能量晚上免费网址不用下载,网络营销案例成功案例,个人邮箱163免费注册,https网站搭建以下是关于 Spring Boot Vue 前后端开发的打包、测试、监控、预先编译和容器部署 的详细说明,涵盖从开发到生产部署的全流程: 1. 打包 1.1 后端(Spring Boot) 打包方式 使用 Maven 或 Gradle 打包成可执行的 JAR/WAR 文件&…

以下是关于 Spring Boot + Vue 前后端开发的打包、测试、监控、预先编译和容器部署 的详细说明,涵盖从开发到生产部署的全流程:


1. 打包

1.1 后端(Spring Boot)

打包方式

使用 Maven 或 Gradle 打包成可执行的 JAR/WAR 文件

<!-- pom.xml 配置 Spring Boot Maven 插件 -->
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

执行命令:

mvn clean package  # 生成 target/*.jar 文件

Docker 包装

创建 Dockerfile

# 使用官方 JDK 基础镜像
FROM openjdk:8-jdk-alpine
# 复制构建好的 JAR 包
COPY target/*.jar app.jar
# 暴露端口
EXPOSE 8080
# 运行命令
ENTRYPOINT ["java", "-jar", "app.jar"]

1.2 前端(Vue)

打包配置

使用 Vue CLI 的 build 命令生成静态资源:

npm run build  # 生成 dist/ 目录

Vue 配置示例(vue.config.js)

module.exports = {// 指定输出目录outputDir: 'dist',// 静态资源公共路径(用于部署到子路径)publicPath: process.env.NODE_ENV === 'production' ? '/vue/' : '/',// 配置代理解决开发环境跨域devServer: {proxy: {'/api': {target: 'http://localhost:8080',changeOrigin: true,pathRewrite: { '^/api': '' }}}}
};

2. 测试

2.1 后端测试

单元测试(JUnit + Mockito)

@SpringBootTest
class UserControllerTest {@Autowiredprivate UserController userController;@MockBeanprivate UserService userService;@Testvoid testGetUser() {// 模拟 UserService 的返回值when(userService.getUser(1L)).thenReturn(new User(1L, "John"));// 调用 Controller 方法ResponseEntity<User> response = userController.getUser(1L);// 断言结果assertEquals("John", response.getBody().getName());}
}

集成测试(SpringBootTest)

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class ApplicationTests {@Autowiredprivate TestRestTemplate restTemplate;@Testpublic void testHealthCheck() {ResponseEntity<String> response = restTemplate.getForEntity("/health", String.class);assertEquals(200, response.getStatusCodeValue());}
}

性能测试(JMeter)

  • 使用 JMeter 脚本模拟高并发请求,测试接口响应时间。
  • 配置线程组、HTTP 请求、断言和监听器(如聚合报告)。

2.2 前端测试

单元测试(Jest)

// user.test.js
import { getUser } from './user';test('getUser should return user data', () => {expect(getUser(1)).toEqual({ id: 1, name: 'Alice' });
});

E2E 测试(Cypress)

// cypress/integration/example_spec.js
describe('访问首页', () => {it('加载首页并验证标题', () => {cy.visit('/');cy.get('h1').contains('欢迎来到 Vue 应用');});
});

静态代码分析(ESLint)

package.json 中配置:

{"eslintConfig": {"extends": ["plugin:vue/vue3-essential","eslint:recommended"]}
}

3. 监控

3.1 后端监控

Spring Boot Actuator

  • 依赖配置

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
  • 配置 application.yml

    management:endpoints:web:exposure:include: "health,info,metrics"
    
  • 常用端点

    • /actuator/health:健康检查。
    • /actuator/metrics:性能指标(如内存、CPU、HTTP 请求耗时)。

Prometheus + Grafana

  • 集成 Prometheus
    添加依赖:

    <dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId>
    </dependency>
    

    访问 /actuator/prometheus 获取指标数据。

  • Grafana 配置:通过 Prometheus 数据源创建仪表盘。

日志监控(ELK Stack)

  • 日志配置(Logback)
    <configuration><appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"><destination>localhost:4560</destination></appender><root level="INFO"><appender-ref ref="LOGSTASH" /></root>
    </configuration>
    

3.2 前端监控

错误跟踪(Sentry)

  • Vue 插件配置
    import * as Sentry from '@sentry/vue';Sentry.init({dsn: 'https://your-dsn@o123.ingest.sentry.io/456',integrations: [new Sentry.BrowserTracing(),new Sentry.Vue({ Vue })],
    });
    

性能监控(APM)

  • 使用 New RelicDatadog 的前端 SDK 监控页面加载时间、API 响应时间。

4. 预先编译

4.1 后端预编译

  • Maven 编译阶段

    mvn compile  # 仅编译 Java 代码
    
  • 构建缓存:利用 Maven 的 ~/.m2/repository 缓存依赖,减少重复下载。

4.2 前端预编译

Webpack 配置优化

  • 代码分割(Code Splitting)

    // vue.config.js
    chainWebpack(config) {config.optimization.splitChunks({chunks: 'all',minSize: 30000,minChunks: 1,maxAsyncRequests: 5,maxInitialRequests: 3,automaticNameDelimiter: '~',name: true,cacheGroups: {vendors: {test: /[\\/]node_modules[\\/]/,priority: -10},default: {minChunks: 2,priority: -20,reuseExistingChunk: true}}});
    }
    
  • Tree Shaking:通过 ES6 模块化自动删除未使用的代码。

  • 环境变量管理

    # .env.development
    VUE_APP_API_URL=http://localhost:8080/api
    

5. 容器部署

5.1 Docker 部署

Dockerfile(后端)

# 基础镜像
FROM openjdk:8-jdk-alpine
# 设置工作目录
WORKDIR /app
# 复制构建好的 JAR 包
COPY target/*.jar app.jar
# 暴露端口
EXPOSE 8080
# 启动命令
CMD ["java", "-jar", "app.jar"]

Dockerfile(前端)

# 使用 Nginx 作为静态资源服务器
FROM nginx:alpine
# 复制 Vue 打包后的 dist 目录到 Nginx 默认目录
COPY dist/ /usr/share/nginx/html/
# 暴露端口
EXPOSE 80

Docker Compose(多服务部署)

version: '3'
services:backend:build: ./spring-bootports:- "8080:8080"environment:SPRING_PROFILES_ACTIVE: prodfrontend:build: ./vueports:- "80:80"

5.2 Kubernetes 部署

部署 YAML 文件

# 后端 Deployment
apiVersion: apps/v1
kind: Deployment
metadata:name: spring-boot-deploy
spec:replicas: 3selector:matchLabels:app: spring-boottemplate:metadata:labels:app: spring-bootspec:containers:- name: spring-bootimage: your-registry/spring-boot:latestports:- containerPort: 8080
---
# 前端 Deployment
apiVersion: apps/v1
kind: Deployment
metadata:name: vue-deploy
spec:replicas: 2selector:matchLabels:app: vuetemplate:metadata:labels:app: vuespec:containers:- name: vueimage: your-registry/vue:latestports:- containerPort: 80
---
# 服务(Service)
apiVersion: v1
kind: Service
metadata:name: spring-boot-service
spec:selector:app: spring-bootports:- protocol: TCPport: 8080targetPort: 8080
---
apiVersion: v1
kind: Service
metadata:name: vue-service
spec:selector:app: vueports:- protocol: TCPport: 80targetPort: 80
---
# Ingress(路由配置)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: ingress-service
spec:rules:- http:paths:- path: /pathType: Prefixbackend:service:name: vue-serviceport:number: 80- path: /apipathType: Prefixbackend:service:name: spring-boot-serviceport:number: 8080

5.3 CI/CD 流水线(GitHub Actions)

示例工作流(.github/workflows/ci-cd.yml)

name: CI/CD Pipelineon:push:branches: [ main ]jobs:build-backend:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- name: Set up JDK 11uses: actions/setup-java@v2with:java-version: '11'distribution: 'adopt'- name: Build with Mavenrun: mvn clean package -DskipTestsbuild-frontend:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v2- name: Install Node.jsuses: actions/setup-node@v3with:node-version: '16'- name: Install dependenciesrun: npm install- name: Build Vuerun: npm run builddeploy:needs: [build-backend, build-frontend]runs-on: ubuntu-lateststeps:- name: Push Docker Imagesuses: docker/build-push-action@v3with:context: ./spring-bootpush: truetags: registry.example.com/spring-boot:latestenv:REGISTRY_USER: ${{ secrets.REGISTRY_USER }}REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }}- name: Deploy to Kubernetesrun: |kubectl apply -f k8s/deployment.yamlkubectl rollout status deployment/spring-boot-deploykubectl apply -f k8s/frontend-deployment.yamlkubectl rollout status deployment/vue-deploy

6. 总结

  1. 打包:后端用 Maven/Gradle,前端用 Vue CLI,生成可部署的 JAR 和静态资源。
  2. 测试:后端用 JUnit + Mock,前端用 Jest + Cypress。
  3. 监控:后端用 Actuator + Prometheus/Grafana,前端用 Sentry + APM。
  4. 编译优化:代码分割、Tree Shaking、环境变量管理。
  5. 部署:Docker 包装 + Kubernetes 部署,结合 CI/CD 实现自动化流水线。

通过以上步骤,可以高效地完成前后端分离应用的开发、测试、监控和部署。

http://www.dtcms.com/wzjs/343914.html

相关文章:

  • 用阿里云服务器做刷单网站磁力屋 最好用
  • 网站构建的滚动新闻怎么做百度竞价怎么做开户需要多少钱
  • 卡通设计类网站欣赏商品营销推广的方法有哪些
  • wordpress改中文版关键词排名优化如何
  • saas建站工具百度新闻app
  • 免费vip影视网站怎么做的爱网
  • wordpress建站网页无法运seo关键词排名优化评价
  • 好做网站淘宝seo 优化软件
  • 北京网站建设公司网络营销外包网络建站报价网址查询入口
  • 苏州网站建设的公司哪家好it行业培训机构一般多少钱
  • 网站在工信部备案查询友情链接交换平台源码
  • 网站建设公司 预算竞价托管就选微竞价
  • 万维网站注册广东seo网站设计
  • 石家庄最近新闻事件免费seo快速排名系统
  • 网页版微信登录提示二维码已失效网站优化排名怎么做
  • 网页设计欣赏及点评陕西seo顾问服务
  • 建网站价格多少上海职业技能培训机构一览表
  • dw做网站鼠标经过图像境外电商有哪些平台
  • 做网站运维优化大师班级优化大师
  • 华夏名网vps免费网站管理助手seo优化网站百度技术
  • 网站建设公司-山而市场调研方法有哪几种
  • 铁岭网站建设百度收录比较好的网站
  • 江阴做网站网站推广的常用方法有哪些
  • 孔夫子旧书网网站谁做的技能培训班有哪些课程
  • 视频号如何绑定小程序商店seo研究中心
  • 网站备案要钱么西安seo和网络推广
  • 成都最新疫情消息通告今天手机网站排名优化
  • 石家庄网站建设手机怎么制作网站
  • 线下推广活动有哪些seo搜索优化专员
  • 自己做网站好难挣钱百度一下首页官网下载