当前位置: 首页 > article >正文

【ANGULAR网站开发】初始环境搭建

1. 初始化angular项目

1.1 创建angular项目

需要安装npm和nodejs,这边不在重新安装
直接安装最新版本的angular

npm install -g @angular/cli

安装指定大版本的angular

npm install -g @angular/cli@18

在这里插入图片描述

1.2 启动angular

使用idea启动
在这里插入图片描述
控制台启动

ng serve

启动成功后的情况
在这里插入图片描述

1.2.1 特殊情况,angular启动后localhost和ip都无法访问

在启动脚本里加–host 0.0.0.0后,就可以用ip访问,为啥localhost不行,没找到解决方案
在这里插入图片描述

1.3 清理自带的首页信息

在这里插入图片描述

<style>
</style>

<main class="main">

</main>
<router-outlet />

1.4 创建home和login

ng generate component admin/home
ng generate component admin/login

1.5 添加全局绝对路径

在tsconfig.json添加代码

   {
     "compilerOptions": {
       "baseUrl": "./",
       "paths": {
         "@app/*": ["src/app/*"]
       }
     }
   }
   

可以直接用@app 前缀来引用服务

2. 创建身份验证服务

2.1 身份验证服务

在根目录下执行创建身份验证服务的代码
用来保存用户登录状态

ng generate service base/authService/auth

修改auth.service.ts

import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class AuthService {
  private isLoggedIn = false;

  constructor() { }

  login() {
    this.isLoggedIn = true;
  }

  logout() {
    this.isLoggedIn = false;
  }

  isAuthenticated(): boolean {
    return this.isLoggedIn;
  }
}

2.2 路由守卫服务

在根目录下执行创建路由守卫服务的代码
用于检查用户是否已登录。如果用户未登录,则重定向到登录页面。

ng generate service base/authService/authGuard

修改authGuard.service.ts

import { Injectable } from '@angular/core';
import { CanActivate, Router } from '@angular/router';
import { AuthService } from './auth.service';

@Injectable({
  providedIn: 'root'
})
export class AuthGuard implements CanActivate {

  constructor(private authService: AuthService, private router: Router) { }

  canActivate(): boolean {
    if (this.authService.isAuthenticated()) {
      return true;
    } else {
      this.router.navigate(['/login']);
      return false;
    }
  }
}

2.3 配置路由app.routes.ts

import { Routes } from '@angular/router';
import { HomeComponent } from './admin/home/home.component';
import { LoginComponent } from './admin/login/login.component';
import {AuthGuard} from './base/authService/auth-guard.service';
export const routes: Routes = [
  { path: '', component: HomeComponent, canActivate: [AuthGuard] },
  { path: 'home', component: HomeComponent, canActivate: [AuthGuard] },
  { path: 'login', component: LoginComponent },
  { path: '**', redirectTo: '', pathMatch: 'full' } ,// 添加通配符路由,访问不存在的路径时重定向到主页
];

2.4 更新 app.config.server.ts (如果有的话,18不需要添加)

import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
import { provideServerRendering } from '@angular/platform-server';
import { appConfig } from './app.config';
import {AuthGuard} from './base/authService/auth-guard.service';

const serverConfig: ApplicationConfig = {
  providers: [
    provideServerRendering(),
    AuthGuard
  ]
};

export const config = mergeApplicationConfig(appConfig, serverConfig);

2.5 在login里添加登录事件

编辑login.component.ts文件

import { Component } from '@angular/core';
import { Router } from '@angular/router';
import { AuthService } from '@app/base/authService/auth.service';
@Component({
  selector: 'app-login',
  imports: [],
  templateUrl: './login.component.html',
  styleUrl: './login.component.css'
})
export class LoginComponent {
  constructor(private authService: AuthService, private router: Router) { }

  login() {
    this.authService.login();
    this.router.navigate(['/']);
  }
}

在login.component.html添加登录按钮

<button (click)="login()">Login</button>

点击登录后直接跳转到指定页面

3.


http://www.kler.cn/a/455548.html

相关文章:

  • 功能测试和接口测试
  • Springboot高并发乐观锁
  • 【ES6复习笔记】Map(14)
  • 如何计算相位差
  • 【火猫DOTA2】VP一号位透露队伍不会保留原阵容
  • Vue开源项目Pure Admin二次开发:实现前后端柱状图
  • Chromium GN 目标指南 - view_example 表单示例 (八)
  • elasticsearch安全认证
  • R 和 Origin 完成细菌 OTU 表、土壤理化性质数据的微生物 Beta 多样性分析
  • 多因子模型连载
  • 零信任安全体系研究
  • 抖音生活服务商系统源码怎么搭建?
  • gesp(二级)(16)洛谷:B4037:[GESP202409 二级] 小杨的 N 字矩阵
  • 面试场景题系列:设计限流器
  • elementUI——upload限制图片或者文件只能上传一个——公开版
  • 新浪微博大数据面试题及参考答案(数据开发和数据分析)
  • 加强版第十七章空间色彩转换
  • 水电站视频智能监控系统方案设计与技术应用方案
  • 高频生活场景带动低频金融服务,美团企业版点燃场景金融建设引擎
  • Network Slice | Android 网络切片流程简介和日志分析
  • 【模电刷题复习--填空】
  • 04软件测试需求分析案例-用户登录
  • Word批量更改公式字体为Times New Roman
  • 领域自适应
  • 掌握Docker命令与Dockerfile实战技巧:快速构建高效容器化应用
  • 网络攻防环境搭建