以Angular5构建个人自用KOAN堆栈Web应用(2)
前端的初始配置
-
- Angular5で「俺式KOANスタック」でWebアプリ構築するための個人的な備忘録記事。
-
- 概要については「こちら」を参照。
- 事前に「Angular5 初期設定」が完了していることが前提。
更改文件夹名称和文件夹路径设置
-
- ルートディレクトリの「src」フォルダを「client」に名称変更する
-
- ルートディレクトリ直下の .angular-cli.json の内容を以下の通りに変更
src ディレクトリを指定している箇所(apps.root, lint.project)を client に、ビルド出力先(apps.outDir)を dist/client に変更する
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"project": {
"name": "【作成したプロジェクト名】"
},
"apps": [
{
"root": "client",
"outDir": "dist/client",
"assets": [
"assets",
"favicon.ico"
],
"index": "index.html",
"main": "main.ts",
"polyfills": "polyfills.ts",
"test": "test.ts",
"tsconfig": "tsconfig.app.json",
"testTsconfig": "tsconfig.spec.json",
"prefix": "app",
"styles": [
"styles.css"
],
"scripts": [],
"environmentSource": "environments/environment.ts",
"environments": {
"dev": "environments/environment.ts",
"prod": "environments/environment.prod.ts"
}
}
],
"e2e": {
"protractor": {
"config": "./protractor.conf.js"
}
},
"lint": [
{
"project": "client/tsconfig.app.json",
"exclude": "**/node_modules/**"
},
{
"project": "client/tsconfig.spec.json",
"exclude": "**/node_modules/**"
},
{
"project": "e2e/tsconfig.e2e.json",
"exclude": "**/node_modules/**"
}
],
"test": {
"karma": {
"config": "./karma.conf.js"
}
},
"defaults": {
"styleExt": "css",
"component": {}
}
}
- ルートディレクトリの tsconfig.app.json の module を es2015 から commonjs に変更(これやらないと、今後どこかで起動時にエラーになる)
添加文件夹
- ルートディレクトリの client/app に対し、新規に components, services, pipes, (services 直下の)sample, (pipes直下の)sample フォルダ作成して以下のような構成にする
client/app
├─ components
├─ services
| └─ sample
├─ pipes
| └─ sample
└─ 既存のファイル群
创建一个 SampleComponent。
- 初期ファイルを生成
使用cd命令将当前目录更改为components,并使用angular-cli命令创建组件。
ng g component sample
components/sample 直下に sample.module.ts というファイル名で以下のモジュールを作成
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';
import { FormsModule } from '@angular/forms';
import { SampleComponent } from './sample.component';
/**
* サンプル コンポーネントモジュール
*/
@NgModule({
imports: [
CommonModule,
RouterModule,
FormsModule
],
declarations: [
SampleComponent,
],
exports: [
SampleComponent
]
})
export class SampleModule {}
创建一个SampleService。
- 初期ファイルを生成
使用cd命令将当前目录切换到services/sample,然后使用angular-cli命令来创建组件。
ng g service sample
services/sample 直下に sample-service.module.ts というファイル名で以下のモジュールを作成
import { NgModule } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import { SampleService } from './sample.service';
/**
* サンプル サービスモジュール
*/
@NgModule({
imports: [
HttpClientModule
],
providers: [
SampleService
]
})
export class SampleServiceModule {}
创建 SamplePipe
- 初期ファイルを生成
使用cd命令将当前目录更改到pipes/sample,然后使用angular-cli命令创建组件。
ng g pipe sample
pipes/sample 直下に sample-pipe.module.ts というファイル名で以下のモジュールを作成
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { SamplePipe } from './sample.pipe';
/**
* サンプル パイプモジュール
*/
@NgModule({
imports: [
CommonModule
],
declarations: [
SamplePipe
],
exports: [
SamplePipe
]
})
export class SamplePipeModule {}
修改AppRoutingModule
请根据以下方式修改客户端/app/app-routing.module.ts
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { SampleComponent } from './components/sample/sample.component';
const routes: Routes = [
{
path: '',
redirectTo: '',
pathMatch: 'full'
},
{
path: 'sample-page',
component: SampleComponent
}
];
@NgModule({
// URL直打ちでの画面遷移を防ぎたい場合は forRoot のオプション部分(, { useHash: true })を削除
imports: [RouterModule.forRoot(routes, { useHash: true })],
exports: [RouterModule]
})
export class AppRoutingModule { }
修改App模块
将客户端/app/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 { SampleModule } from './components/sample/sample.module';
import { SampleServiceModule } from './services/sample/sample-service.module';
import { SamplePipeModule } from './pipes/sample/sample-pipe.module';
@NgModule({
imports: [
BrowserModule,
AppRoutingModule,
SampleModule,
SampleServiceModule,
SamplePipeModule
],
declarations: [
AppComponent
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
建立输出测试
我改变了构建输出的目标,所以试着编译并运行一下。
ng build --prod
ng build でビルド。–prod オプションを付けると公開用にminifyされたファイルが生成される。
dist/client ディレクトリが生成され、中にファイル群が出来上がっていれば成功。
生成された「dist」ディレクトリは、ビルドの度に自動生成/上書きされるため削除しても問題ない。
确认操作
- コンソール上でアプリのディレクトリに移動し、サーバ起動
cd 作成したプロジェクト名
ng serve
-
- http://localhost:4200/#/ でAngularテストページ表示。
- http://localhost:4200/#/sample-page と打ち込み、画面遷移後のページ最下部に「sample works!」と表示されたら成功。Ctrl + C でサーバ終了。
以上内容涵盖了前端的初始设置。
→ 接下来,我们将构建基于KOAN的后端架构。