讲一下初始化angular13 + spring boot 2.7 的流程,以及遇到的问题。
Angular初始化
安装Node.js
查看你的电脑是否安装了node.js
, 若没有可以去https://nodejs.org/zh-cn/安装。我们将用其下的npm来安装一些软件.
转到终端并输入node -v
, 可以看到你安装的node -v 版本。
安装Angular CLI
运行npm install -g @angular/cli
可以以安装 Angular CLI,
或者执行 npm i @angular/cli@^13.0.0
以安装特定版本的CLI。
然后输入ng version
以检查它正确地安装到了电脑上。
创建Angular项目
首先在终端中进入你选择的目录, 然后运行ng new <application name>
来创建一个Anagular项目
创建好的目录如下图
在Angular 项目目录中打开一个终端会话,然后运行以在ng serve
中构建和运行应用程序。应该在终端中看到此编译成功消息。
期间遇到的问题
1. 版本不对
其实在创建的时候用的是angluar12的版本,
但是在后面想添加某一个组件的时候,
报错The package that you are trying to add does not support schematics.
后来查看官网得知后来发现这个组件需要的是的是angular13的版本,于是重新创建使用angular13版本。
这也提醒我们要注意所使用的组件的适配版本。
2. Jasmine tests单元测试为空
这个也找了很久都没有解决。单元测试什么都不显示
但是我在控制台中打印当前组件的htmlElement元素,是可以看到正常打印的
可以看到正确打印了htmlElement元素,说明渲染是成功的。但是页面仍然没有显示。
后来发现在 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
首先确保你的电脑安装了JDK
和Maven
, 命令如下。
若没有安装,可以参考安装
https://www.kancloud.cn/yunzh...
初始化Sring boot 项目
前往https://start.spring.io
可以选择需要的版本,这里选择的是2.7.1
, 以及java8
版本。
然后点击红色部分,添加spring web 应用
最后点击Generate the project 生成项目将其下载的任意自己喜欢的文件夹,下载成后解压
这里我解压成名为api的文件夹,与angular项目放在同一个目录下。
进入终端 执行mvn spring-boot:run
命令
之后可以看到运行项目成功的结果
遇到的问题
在开始的时候本来是用的最新版本的spring boot ,选择了3.0.0(M3)
版本, 并根据项目要求使用的是java8
。
但之后运行的时候报错: invalid target release 17
接下来找了半天问题。
最后找到了pom.xml
文件。发现它指的是java verison 的17,无法解析。
但是一想:我刚才初始化的不是用的是java8吗,怎么变17了。
之后参考以前的项目,发现用java8, 里面要填成1.8
于是我换成了1.8
再运行发现了新的错误: class file has wrong version。
然后又改了几次,仍然不行。然后就猜想是 spring boot 版本的问题,
我重新创建了个项目,选择了2.7.1
版本
之后再运行,没有报错,而且pom.xml也是我选择的1.8。 解决问题。
可能java8 不适合3.0.0版本的spring boot 。
总结:
这次初始化中遇到版本的问题比较多,但是这也是很正常的问题。再加上以前的初始化的经验,这次解决问题的速度快了很多。总之熟能生巧,多经历多解决。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。