用React给XXL-JOB开发一个新皮肤(一):环境搭建和项目初始化

news/2024/5/19 1:06:39 标签: React Hooks, TS, antd, XXL-JOB

目录

  • 一. 简述
  • 二. Fork 项目
  • 三. 搭建开发环境
  • 四. 初始化皮肤项目
  • 五. 添加相关依赖
  • 六. 预览

一. 简述

大名鼎鼎的 xxl-job 任务调度中心我们应该都使用过,项目地址:xxl-job。它是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。
在这里插入图片描述
该项目中的页面是使用freemarker做页面渲染的。这里我们使用 ReactAntd的技术栈实现一个管理平台的新皮肤。接下来跟着我一步步实现这个新皮肤吧!

二. Fork 项目

这里我们可以在码云上将 xxl-job 项目 fork 到自己的仓库。这里使用的是最新的分支 2.4.0;从这个分支作为分支起点,如下图:
在这里插入图片描述

三. 搭建开发环境

接下来我们先搭建一个 xxl-job 的开发环境。这里我们需要现在项目根目录创建一个 log目录(用来存放运行的日志文件)。这里我们需要修改下面几个文件:

  • doc/db/tables_xxl_job.sql:建表语句,在自己的数据库上执行该 SQL
  • xxl-job-admin/src/main/resources/application.properties:需要修改数据库文件
    ### xxl-job, datasource 修改自己数据库地址
    spring.datasource.url=jdbc:mysql://192.168.110.107:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
    spring.datasource.username=root
    spring.datasource.password=123456
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    
  • xxl-job-admin/src/main/resources/logback.xml:修改存放日志路径
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration debug="false" scan="true" scanPeriod="1 seconds">
    
        <contextName>logback</contextName>
        <property name="log.path" value="./log/xxl-job-admin.log"/>
    
        <!-- 忽略其他部分 -->
    </configuration>
    
  • xxl-job-executor-samples/xxl-job-executor-sample-springboot/src/main/resources/logback.xml:修改存放日志路径
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration debug="false" scan="true" scanPeriod="1 seconds">
    
        <contextName>logback</contextName>
        <property name="log.path" value="./log/xxl-job-executor-sample-springboot.log"/>
    
        <!-- 忽略其他部分 -->
    </configuration>
    

接下来分别启动,xxl-job-admin的启动类和 xxl-job-executor-samplespringboot 模块。
在这里插入图片描述
接着我们访问:http://localhost:8080/xxl-job-admin。输入账号:admin密码:123456
在这里插入图片描述

这样开发环境就搞定了,这下来我们开始初始化皮肤的项目。

四. 初始化皮肤项目

这里我们在项目根目录中创建 xxl-job-web 目录,用来存放前端项目。
在这里插入图片描述
这里我们使用 vite 来初始化项目。选择 React 框架和 TS,创建完成执行执行 yarn install 安装依赖。
在这里插入图片描述

五. 添加相关依赖

这里添加我们需要的依赖,使用的依赖如下:

依赖版本描述
antd5.2.6前端 UI 组件库
axios1.6.5HTTP 请求库
@ant-design/icons5.2.6图标库
@ant-design/charts2.0.3charts 库
ahooks3.7.8hooks工具库
less4.2.0css 预处理库
less-loader11.1.4webpack 构建处理 less 库
react-router-dom6.21.1前端路由库
zustand4.4.7简单好用的状态管理库
@emotion/react11.11.3React 组件中样式的处理和管理功能库
@emotion/styled11.11.0提供了一种创建样式化组件的方式的库

这里 package.json如下:

{
  "name": "xxl-job-web",
  "description": "xxl-job新皮肤",
  "private": true,
  "version": "0.0.0",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "tsc && vite build",
    "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
    "preview": "vite preview"
  },
  "dependencies": {
    "@ant-design/charts": "^2.0.3",
    "@ant-design/icons": "^5.2.6",
    "@emotion/react": "^11.11.3",
    "@emotion/styled": "^11.11.0",
    "ahooks": "^3.7.8",
    "antd": "^5.12.8",
    "axios": "^1.6.5",
    "less": "^4.2.0",
    "less-loader": "^11.1.4",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-router-dom": "^6.21.1",
    "zustand": "^4.4.7"
  },
  "devDependencies": {
    "@types/node": "^20.10.7",
    "@types/react": "^18.2.43",
    "@types/react-dom": "^18.2.17",
    "@types/react-router-dom": "^5.3.3",
    "@typescript-eslint/eslint-plugin": "^6.14.0",
    "@typescript-eslint/parser": "^6.14.0",
    "@vitejs/plugin-react": "^4.2.1",
    "eslint": "^8.55.0",
    "eslint-plugin-react-hooks": "^4.6.0",
    "eslint-plugin-react-refresh": "^0.4.5",
    "typescript": "^5.2.2",
    "vite": "^5.0.8"
  }
}


六. 预览

这里我们将vite 初始化的文件整理下,移除一些不需要的文件。仅留下 App.tsxmain.tsx 文件。
在这里插入图片描述
这里我们在 index.html文件中修改 title 标签内容。

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>任务调度中心</title>
  </head>
  <body>
    <div id="root"></div>
    <script type="module" src="/src/main.tsx"></script>
  </body>
</html>

main.tsx 文件修改为如下:

import React from 'react'
import ReactDOM from 'react-dom/client'
import Application from './App.tsx'

ReactDOM.createRoot(document.getElementById('root')!).render(
  <React.StrictMode>
    <Application />
  </React.StrictMode>,
)

App.tsx 文件修改为如下:

const Application = () => <h1>任务调度中心</h1>

export default Application

接着我们启动项目:yarn dev
在这里插入图片描述
好了,现在我们项目已经初始化完成,下一篇文章将介绍配置 vite、规划项目目录、配置路由。


http://www.niftyadmin.cn/n/5314743.html

相关文章

C 语言关于sizeof() 和 strlen()区别?

sizeof() 和 strlen() 在 C 语言中两个非常常用&#xff0c;它们都与计算内存大小有关&#xff0c;但是它们的作用是不同的。 sizeof() 和 strlen() 的主要区别在于&#xff1a; sizeof() 是一个运算符&#xff0c;而 strlen() 是一个函数。sizeof() 计算的是变量或类型所占用…

自承载 Self-Host ASP.NET Web API 1 (C#)

本教程介绍如何在控制台应用程序中托管 Web API。 ASP.NET Web API不需要 IIS。 可以在自己的主机进程中自托管 Web API。 创建控制台应用程序项目 启动 Visual Studio&#xff0c;然后从“开始”页中选择“新建项目”。 或者&#xff0c;从“ 文件 ”菜单中选择“ 新建 ”&a…

ev https证书有哪些特点

https数字证书用于验证数字身份的合法性和唯一性。它是由权威的数字证书颁发机构&#xff08;CA&#xff09;颁发的&#xff0c;包含了持有者的身份信息、公钥以及一些附加信息。数字证书可以用于多种场景&#xff0c;如网络安全、电子商务、电子政务等。EV https证书是数字证书…

Latex 常用字母对应表

在写博文的时候老是忘记&#xff0c;还是列在下面&#xff0c;用的时候好找 字符latex代码字符latex代码\alpha α \alpha α\beta β \beta β\gamma γ \gamma γ\delta δ \delta δ\epsilon ϵ \epsilon ϵ\zeta ζ \zeta ζ\eta η \eta η\theta θ \theta θ\iota ι \…

test mutation-01-变异测试 PITest PIT 是一种先进的变异测试系统,为 Java 和 JVM 提供黄金标准的测试覆盖率。

拓展阅读 test 系统学习-04-test converate 测试覆盖率 jacoco 原理介绍 test 系统学习-05-test jacoco 测试覆盖率与 idea 插件 test 系统学习-06-test jacoco SonarQube Docker learn-29-docker 安装 sonarQube with mysql Ubuntu Sonar PITest 实际应用的变异测试 …

Linux与Windows下追踪网络路由:traceroute、tracepath与tracert命令详解

简介 在进行网络诊断或排查问题时&#xff0c;了解数据包从源主机到目标主机之间的具体传输路径至关重要。Linux系统提供了traceroute和tracepath工具来实时显示链路路径信息&#xff0c;而Windows则使用了tracert命令实现相同的功能。本文将详细介绍这三个命令的用法及其在不…

关于谷歌浏览器如何将背景换为黑色,字体换为白色

一.关于chorme浏览器如何换色 #跟着我一起来看一下吧 操作步骤 步骤 1.在谷歌的搜索框里搜索此网址——chrome://flags/ 如图 2.访问此网址 如图 3.我们在搜索框搜索:Auto Dark Mode for Web Contents 如图 4.开启Web内容的自动暗模式 选择enbled 5.确认重新启动 选择…

【期末不挂科-考前速过系列P7】单片机[接口与总线]——经典例题盘点(带图解析)(第六章:11题速过串行口基本概念/结构/工作方式/双机通信例题)

前言 大家好吖&#xff0c;欢迎来到 YY 滴单片机系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过单片机的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的…