【使用Spring Boot + Angular + MySQL创建Web应用程序】 Angular第一部分
我之前用Spring Boot创建了一个后端博客程序,用于返回员工信息和部门列表。
这次我将使用Angular来显示从后端接收到的数据。
创建Angular项目
在适当的位置创建一个文件夹,并执行以下命令。
这次我在Documents中创建了一个名为sample的文件夹。
ng new example
输入y并按下回车键。
? Would you like to add Angular routing? (y/N) y
选择SCSS并按下回车键。
? Which stylesheet format would you like to use?
CSS
> SCSS [ https://sass-lang.com/documentation/syntax#scss ]
Sass [ https://sass-lang.com/documentation/syntax#the-indented-syntax ]
Less [ http://lesscss.org ]
Stylus [ http://stylus-lang.com ]
过一段时间后,项目将会被创建。
√ Packages installed successfully.
Successfully initialized git.
通过打开VSCode终端并执行以下命令,启动应用程序。
npm start
稍等片刻,下面的信息将会显示出来。
** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **
: Compiled successfully.
访问 http://localhost:4200。
等待确认后,将暂停服务器。
在终端中按下Ctrl + C。
输入y以停止服务器。
: Compiled successfully.
バッチ ジョブを終了しますか (Y/N)? y
安装 Angular Material 和 FlexLayout
在创建画面之前,我们需要安装Angular Material作为UI框架,并使用flex-layout来进行布局。
Angular 材料
首先,从Angular Material进行安装。
输入并执行以下命令。
ng add @angular/material
过了一会儿,您会被问到以下问题,然后直接按下回车键。
? Choose a prebuilt theme name, or "custom" for a custom theme: (Use arrow keys)
> Indigo/Pink [ Preview: https://material.angular.io?theme=indigo-pink ]
Deep Purple/Amber [ Preview: https://material.angular.io?theme=deeppurple-amber ]
Pink/Blue Grey [ Preview: https://material.angular.io?theme=pink-bluegrey ]
Purple/Green [ Preview: https://material.angular.io?theme=purple-green ]
Custom
请您输入下一个问题,y。
? Set up global Angular Material typography styles? (y/N) y
这边也需要输入y。
? Set up browser animations for Angular Material? (Y/n) y
稍等片刻,安装将完成。
创建 MaterialModule
我們將創建一個名為 MaterialModule 的模塊,它將彙總用於項目的 Angular Material 模塊。請輸入以下命令。
ng g m material
src/app/material/下创建了material.module.ts。
以下是编辑后的代码。
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatButtonModule } from '@angular/material/button';
import { MatInputModule } from '@angular/material/input';
import { MatAutocompleteModule } from '@angular/material/autocomplete';
import { MatDatepickerModule } from '@angular/material/datepicker';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatRadioModule } from '@angular/material/radio';
import { MatSelectModule } from '@angular/material/select';
import { MatSliderModule } from '@angular/material/slider';
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
import { MatMenuModule } from '@angular/material/menu';
import { MatSidenavModule } from '@angular/material/sidenav';
import { MatBadgeModule } from '@angular/material/badge';
import { MatToolbarModule } from '@angular/material/toolbar';
import { MatListModule } from '@angular/material/list';
import { MatGridListModule } from '@angular/material/grid-list';
import { MatCardModule } from '@angular/material/card';
import { MatStepperModule } from '@angular/material/stepper';
import { MatTabsModule } from '@angular/material/tabs';
import { MatExpansionModule } from '@angular/material/expansion';
import { MatButtonToggleModule } from '@angular/material/button-toggle';
import { MatChipsModule } from '@angular/material/chips';
import { MatIconModule } from '@angular/material/icon';
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
import { MatProgressBarModule } from '@angular/material/progress-bar';
import { MatDialogModule } from '@angular/material/dialog';
import { MatTooltipModule } from '@angular/material/tooltip';
import { MatSnackBarModule } from '@angular/material/snack-bar';
import { MatTableModule } from '@angular/material/table';
import { MatSortModule } from '@angular/material/sort';
import { MatPaginatorModule } from '@angular/material/paginator';
@NgModule({
declarations: [],
imports: [
CommonModule,
BrowserAnimationsModule,
MatCheckboxModule,
MatCheckboxModule,
MatButtonModule,
MatInputModule,
MatAutocompleteModule,
MatDatepickerModule,
MatFormFieldModule,
MatRadioModule,
MatSelectModule,
MatSliderModule,
MatSlideToggleModule,
MatMenuModule,
MatSidenavModule,
MatBadgeModule,
MatToolbarModule,
MatListModule,
MatGridListModule,
MatCardModule,
MatStepperModule,
MatTabsModule,
MatExpansionModule,
MatButtonToggleModule,
MatChipsModule,
MatIconModule,
MatProgressSpinnerModule,
MatProgressBarModule,
MatDialogModule,
MatTooltipModule,
MatSnackBarModule,
MatTableModule,
MatSortModule,
MatPaginatorModule
],
exports: [
MatCheckboxModule,
MatCheckboxModule,
MatButtonModule,
MatInputModule,
MatAutocompleteModule,
MatDatepickerModule,
MatFormFieldModule,
MatRadioModule,
MatSelectModule,
MatSliderModule,
MatSlideToggleModule,
MatMenuModule,
MatSidenavModule,
MatBadgeModule,
MatToolbarModule,
MatListModule,
MatGridListModule,
MatCardModule,
MatStepperModule,
MatTabsModule,
MatExpansionModule,
MatButtonToggleModule,
MatChipsModule,
MatIconModule,
MatProgressSpinnerModule,
MatProgressBarModule,
MatDialogModule,
MatTooltipModule,
MatSnackBarModule,
MatTableModule,
MatSortModule,
MatPaginatorModule
],
providers: [
MatDatepickerModule,
]
})
export class MaterialModule { }
将创建的MaterialModule添加到app.module.ts中。
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { MaterialModule } from './material/material.module'; // 追加
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AppRoutingModule,
BrowserAnimationsModule,
MaterialModule //追加
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
现在Angular Material可以使用了。
下一步是安装Flexlayout。
弹性布局
输入以下命令。
npm install --save @angular/flex-layout
在app.module.ts中添加Flexlayout。
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { MaterialModule } from './material/material.module';
import { FlexLayoutModule } from '@angular/flex-layout'; //追加
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AppRoutingModule,
BrowserAnimationsModule,
MaterialModule,
FlexLayoutModule //追加
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
现在可以准备好使用Flexlayout了。
创建图像
删掉app.component.html中的所有内容,按照以下方式进行描述。
<div fxFlexFill fxLayout="column">
<div fxFlex="none" class="header">
header
</div>
<div fxFlex>
<router-outlet></router-outlet>
</div>
<div fxFlex="none" class="footer">
footer
</div>
</div>
接下来,我们编辑 SCSS 文件以调整样式。
/* You can add global styles to this file, and also import other style files */
html, body { height: 100%; }
body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }
.header{
height: 50px;
background-color: lightgreen;
}
.footer{
background-color: lightgreen;
height: 30px;
text-align: center;
}
使用以下命令启动应用程序,并访问 http://localhost:4200/。
npm start
如果确认完成,请使用Ctrl+C停止服务器。
创建组件 (Chuangjian zujian)
我們將繼續創建內容(顯示在router-outlet的部分)。
我們將創建一個Home組件,以顯示員工信息。
ng g c home
确认已被创建。
CREATE src/app/home/home.component.html (19 bytes)
CREATE src/app/home/home.component.spec.ts (614 bytes)
CREATE src/app/home/home.component.ts (268 bytes)
CREATE src/app/home/home.component.scss (0 bytes)
UPDATE src/app/app.module.ts (467 bytes)
路由设定
在打开 http://localhost:4200/home 时,设置显示主页画面。打开 app-routing.module.ts,进行以下编辑。
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './home/home.component';// 追加
const routes: Routes = [
{path: 'home', component: HomeComponent},// 追加
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
开始启动服务器。
npm start
当访问 http://localhost:4200/home 时,会显示home组件的内容。
下一次,我们要在首页显示员工信息列表。
【使用Spring Boot + Angular + MySQL来创建Web应用程序】进入Angular编辑器②