2

讲一下初始化angular13 + spring boot 2.7 的流程,以及遇到的问题。

Angular初始化

安装Node.js

查看你的电脑是否安装了node.js, 若没有可以去https://nodejs.org/zh-cn/安装。我们将用其下的npm来安装一些软件.

转到终端并输入node -v, 可以看到你安装的node -v 版本。

image.png

安装Angular CLI

运行npm install -g @angular/cli可以以安装 Angular CLI,

或者执行 npm i @angular/cli@^13.0.0 以安装特定版本的CLI。

然后输入ng version 以检查它正确地安装到了电脑上。

image.png

创建Angular项目

首先在终端中进入你选择的目录, 然后运行
ng new <application name>

来创建一个Anagular项目

image.png

创建好的目录如下图

image.png

在Angular 项目目录中打开一个终端会话,然后运行以在ng serve中构建和运行应用程序。应该在终端中看到此编译成功消息。

image.png

期间遇到的问题

1. 版本不对

其实在创建的时候用的是angluar12的版本,

但是在后面想添加某一个组件的时候,

报错The package that you are trying to add does not support schematics.

image.png


后来查看官网得知后来发现这个组件需要的是的是angular13的版本,于是重新创建使用angular13版本。
image.png

这也提醒我们要注意所使用的组件的适配版本。

2. Jasmine tests单元测试为空

这个也找了很久都没有解决。单元测试什么都不显示
image.png

但是我在控制台中打印当前组件的htmlElement元素,是可以看到正常打印的
image.png

可以看到正确打印了htmlElement元素,说明渲染是成功的。但是页面仍然没有显示。
image.png


后来发现在 Angular 13 中,他们为测试引入了一个新的优化特性:

来自https://blog.angular.io/angul...

我们对 TestBed 进行了一些重要的改进,现在可以更好地在每次测试后拆除测试模块和环境。现在,每次测试后都会清理 DOM,开发人员可以期待更快、更少内存密集、更少相互依赖和更优化的测试。

原因是每次测试的时候会清理DOM,导致页面没有显示。

解决方法:添加 teardown: { destroyAfterEach: false } ,如下第9行的内容。

1 beforeEach(async () => {
2    await TestBed.configureTestingModule({
3      declarations: [],
4      imports: [
5        IndexModule,
6        HttpClientModule,
7        RouterTestingModule
8      ],
9      teardown: { destroyAfterEach: false }   +
10    })
11    .compileComponents();
12  });

就可以退出这个模式。

感想:
事实上我觉得使用fit的时候很有必要查看页面渲染的内容,但是angular13直接一刀切了。

如果加一个设置,全局打开/关闭 这个模式,这样全局单元测试的时候清理DOM,使用fit的时候就不清理。 两全其美多好。

Spring Boot 初始化

JDK 和 Maven

首先确保你的电脑安装了JDKMaven, 命令如下。

image.png

image.png

若没有安装,可以参考安装
https://www.kancloud.cn/yunzh...

初始化Sring boot 项目

前往https://start.spring.io
可以选择需要的版本,这里选择的是2.7.1, 以及java8版本。
image.png

然后点击红色部分,添加spring web 应用
image.png

最后点击Generate the project 生成项目将其下载的任意自己喜欢的文件夹,下载成后解压
image.png

这里我解压成名为api的文件夹,与angular项目放在同一个目录下。
image.png

进入终端 执行mvn spring-boot:run命令
image.png

之后可以看到运行项目成功的结果

image.png

遇到的问题

在开始的时候本来是用的最新版本的spring boot ,选择了3.0.0(M3)版本, 并根据项目要求使用的是java8
image.png


但之后运行的时候报错: invalid target release 17
image.png

接下来找了半天问题。
最后找到了pom.xml文件。发现它指的是java verison 的17,无法解析。

image.png

但是一想:我刚才初始化的不是用的是java8吗,怎么变17了。

之后参考以前的项目,发现用java8, 里面要填成1.8

于是我换成了1.8
image.png

再运行发现了新的错误: class file has wrong version。

image.png

然后又改了几次,仍然不行。然后就猜想是 spring boot 版本的问题,


我重新创建了个项目,选择了2.7.1版本
image.png

之后再运行,没有报错,而且pom.xml也是我选择的1.8。 解决问题。
image.png
可能java8 不适合3.0.0版本的spring boot 。

总结:

这次初始化中遇到版本的问题比较多,但是这也是很正常的问题。再加上以前的初始化的经验,这次解决问题的速度快了很多。总之熟能生巧,多经历多解决。


weiweiyi
1k 声望123 粉丝