Skip to content

1.如何分析开源项目

遇到的问题:

  1. 不知道这个代码怎么来的,读不懂代码
  2. 这个代码跑不起来
  3. 不知道这个项目对我们有什么帮助,不会模块化分析

注意:任何一个开源项目,都可以让自己等到提升!

代码自动生成:我们平时会写很多业务代码,可以用 Mybatis Plus 去生成,第三方的工具包去生成

这里以开源项目 EL-ADMIN 为例

1.1 项目简介

一个基于 Spring Boot 2.1.0 、 Spring Boot Jpa、 JWT、Spring Security、Redis、Vue 的前后端分离的后台管理系统

开发文档: https://el-admin.vip

体验地址: https://el-admin.xin

账号密码: admin / 123456

1.2 项目源码

后端源码前端源码
码云https://gitee.com/elunez/eladminhttps://gitee.com/elunez/eladmin-web
githubhttps://github.com/elunez/eladminhttps://github.com/elunez/eladmin-web

2.观察开源项目

1.后端:

image-20220805142446085

2.前端:

image-20220805142748480

都是固定的套路:

image-20220805143030066

3.开源项目下载

image-20220805143340798

在码云下载,因为 GitHub 下载太慢了,下载完毕进行解压

image-20220805143456188

注意:解压完不要着急运行!

先去观察项目:

1、使用了哪些技术(Springboot、Vue、Redis、MQ …)

2、是否有数据库文件(是哪个版本:Mysql、Oracle)

3、你的环境是否匹配(Maven、node.js、redis …)

项目需要的环境都匹配了之后,再想办法运行!

image-20220805144158706

4.跑起来是第一步

1、安装数据库,执行 SQL(先自己创建数据库,编码默认 utf8)——> sql 文件只有建表的语句,没有建库的语句

image-20220805144409884

复制 sql 文件的代码到查询命令行中运行!

image-20220805144502121

在 navicat 中先全选所有代码,再运行

image-20220805144603013

我们发现成功导入了所有数据库:

image-20220805144641154

2、把前端依赖下载下来(在文件上全选文件名然后 cmd)

npm install 安装前端需要的依赖(一般情况下这个依赖都是不自带的,需要我们自行安装)

image-20220805145156062

前端:就是安装依赖,启动测试运行,看接口是否异常!其他的就不需要做什么了!

3、后端项目导入 idea(打开 idea——open/import)

或者直接右击文件夹用 idea 打开

image-20220805145042954image-20220805145428764

保证所有的依赖都已经导入了:

image-20220805150302841

4、为启动后端项目做准备(一般前后端分离项目,前端依赖于后端,所以只需要启动后端即可)

(1)一般按照如下顺序分析后端项目,以为启动做准备

image-20220805151041939

(2)只要发现 Swagger 的配置类,就需要先把 swagger 跑起来,因为前后端分离的接口全部都在这里!(后面跑起来项目了我们先进 swagger)

image-20220805150649578

(3)我们在工具类中看到了 Redis 相关的,我们需要本地打开 Redis 服务:

image-20220805151601948

image-20220805150841413

(4)接下来我们查看 system 包下的核心配置文件:application.yml

查看默认端口号,以及有哪些配置,需要改为自己的项目和环境地址!(尤其是端口号和用户名密码)

  • 首先需要去看端口号:server:port:8000(在总文件 application.yml 里面)前端一定也是调这个端口
image-20220805151357664
  • 其次需要去看 Redis 的端口号
image-20220805151523532
  • 开发环境 dev.yml 的 JDBC 必须保证没有问题

    image-20220805152040380

5、将后端项目跑起来

我们发现当前激活的版本为 dev 开发版本:

image-20220805152108119image-20220805152228181

image-20220805163336545

6、进入 swagger 页面:localhost:8000/swagger-ui.html

坑:但是我们发现这个项目访问 swagger-ui.html 不行

需要访问:localhost:8000/doc.html

image-20220805154204092

我们访问 localhost:8000,显示服务开启成功!

image-20220805154352515

7、把前端跑起来:(推荐使用 VS Code 打开文件夹)

image-20220805154815229image-20220805154727752

8、访问localhost:8013/

image-20220805154856253

image-20220805154950523

至此,整个项目运行完毕!

5.前后端分离项目固定套路

1、从前端开始分拆,打开控制台,点击一个接口,分析一波调用关系

2、前后端端口调用不一致:前端:8013 后端:8000,研究一下是怎么操作的?

image-20220805155424700

  • 封装了接口请求 ajax(前后端分离) axios(Vue) request(前端封装) ——> 固定套路
  • 找到配置(生产配置、开发环境配置)

image-20220805155630968

  • 前后端分离项目的重点:找到接口的调用关系

    Springboot 提供服务、前端调用接口数据、Vue 负责渲染页面 ——> 前端项目固定套路

    前端项目固定结构:

    image-20220805160113145
  • 一个典型接口调用的例子:登陆的方法

我们发现登陆的文件 login.js 里面引入了 request.js 这个文件,我们又发现 request.js 这个文件里面封装了 axios 并且写了

后端接口 url ——> 这样我们就可以在 login.js 里面直接使用 axios 调用后端接口实现交互了!

image-20220805160709067

api 前后端交互的套路:

image-20220805161148630image-20220805163150292
  • 我们怎么知道页面上的逻辑对应的是什么样的请求?怎么找到前端对应请求的代码?

通过抓取前端的请求,找到后端对应的接口

image-20220805163658506

然后我们去/api/system/下面看一下,发现了 user.js 里面果然调用了对应的接口!

image-20220805163918384

或者我们直接在 vscode 的搜索功能里面进行一个查找:非常方便!

image-20220805164255598
  • 那么我们怎么找到前端请求的那个接口在后端代码里面的位置呢?——> 肯定不能一个一个找,太慢太麻烦了!

我们使用 restfultool 插件进行查找!

image-20220805162704133

image-20220805164100725
  • 我们找到了后端的接口,然后进行后端分析

后端分析套路:Controller–>Service–>Dao

一层一层点源码即可!

注:如果我们不想去后端看代码,也可以直接在 swagger 里面进行查看,并测试接口!——> 更方便

如果你想测试一个接口成不成功,在 swagger 里测一下,能不能把他查出来就行了

  • 现在从前到后知道怎么分析了,但是是如何渲染到视图上的呢?看前端 vue 页面(即.vue 文件,template 模板)

Vue 标准套路:

image-20220805164805813

vue
<template>视图层</template>
<script>
  js操作,接口的调用
     export default{

     }
</script>
<style>
  页面的样式
</style>

我们如何应用别人的项目到自己的里面?

如果你现在自己的项目或者要学习别人的一个模块,将这个模块独立抽取出来即可 ——> 使用删除法!

比如我们现在需要使用别人项目的用户模块,把除了 user 相关的全都删除掉即可!

6.如何找到一个开源项目

前端组件:

layui

Semantic UI

Grabient

后端开发去写前端页面非常难看,可以使用第三方的后台页面:Ant Design Pro 或 Vue-Element-Admin 都非常好

1、找分类(Java、python)

2、看收藏(star),大家都觉得不错的,就是比较好的,有学习的价值!

3、看具有价值的

4、根据自身的理解情况去查找项目:Java、SSM、Springboot...阶段性成果

5、如何学习 Java:Java 进阶路线七个阶段

以码云为例

各种开源项目:

image-20220805170233317

最多收藏的:

image-20220805170329978