【2024年最受欢迎Angular课程】零基础自学的前端框架完整版教程

news/2024/12/14 13:43:50/文章来源:https://www.cnblogs.com/KooTeam/p/18606620

【2024年最受欢迎Angular课程】零基础自学的前端框架完整版教程

https://www.bilibili.com/video/BV1FZ42127cd/ 1

-10 15+ 19

01、angular介绍

angular.cn

ng serve --open

vite...

angular 11

2.2 主要特性
1.Angular CLI 可以快速搭建框架,创建module,service,class,directive等
2.具有webipack的功能,代码分割,按需加载:
3.代码打包压缩:
4.模块测试:
5.热部署,有改动立即重新编译,不用刷新浏览器;而且速度很快
6.有开发环境,测试环境,生产环境的配置,不用自己操心;
7.sass,less的预编译Angular CLI都会自动识别后缀来编译;
8.typescript的配置,Angular CLI在创建应用时都可以自己配置;
9.在创建好的工程也可以做一些个性化的配置,webpack的具体配置还不支持,未来可能会增加;
10.Angular CLI创建的工程结构是最佳实践,生产可用

ng g c xx 创建组件

<div [style.width]="'300px'">
<div [style.width.px]="'300'">
<div [style]="'color:#fff;'">{'color':'red'}    <div [ngClass]="{'color':'red'}   ">  ngStyleinput.#use+ <input #use>(click)="fun($events)"  (input)[ngSwitch] *ngSwitchCases*ngif="flag"[ngIf]='flag'-ng-template use*ngFor="let color of colors let i=index let odd=odd"/ item of arr
<div [class]="{'flag':true}" [class]='xx' [class.h3-dom]="trues" [id]="'box'"/>
3.3.7 模板引用变量  #use  类似ref
模板变量可以帮助你在模板的另一部分使用这个部分的数据。使用模板变量
你可以执行某些任务,比如响应用户输入或微调应用的表单
在模板中,要使用井号#来声明一个模板变量,下列模板变量#userName语法在<input>元素上声明了一个名为userName的变量
<input#userName placeholder="请输入用户名"/>
可以在组件模板中的任何地方引用某个模板变量
<button(click)="calluserName(userName.value)">call</button>
export class AppComponent{
calluserName(v){
console.1og(v)
}}

双向数据 [(ngModel)]= 引入

02、Angular CLI安装和使用
03、项目解构介绍
04、组件介绍以及创建方式讲解
05、模板讲解
06、插值语法
07、属性绑定
08、条件判断
09、循环语句
10、事件绑定
11、模板引用变量
12、数据双向绑定ngModel
13、动态表单控件

14、动态表单控件组

注册响应式表单模块
要使用响应式表单控件,就要从@angular/forms包中导入 ReactiveFormsModule,并把它添加到你的NgModule的imports数组中。

<input type="text" [formControl]="age">
<button (click)="changeAge()">change age</button>
<p>{{age.value}}</p>age:FormControl=new FormControl(18)
changeAge(){this.age.setValue(19)}
@Component({selector: 'app-foo',imports: [NgIf,FormsModule,NgFor,ReactiveFormsModule],templateUrl: './foo.component.html',styleUrl: './foo.component.scss'
})
import {FormsModule,FormControl,ReactiveFormsModule} from '@angular/forms';

15、表单验证

import { FormGroup, FormControl } from '@angular/forms';

分组 里面分别new control

[formGroup] forControlNmae

16、自定义表单验证

input #name="ngModel" require
{{name.valid}}

import { FornGroup, FormBuilder,Validators } from '@angular/forms';

实现自定义表单验证

17、Angular管道

3.3.12管道管道的作用就是传输。不同的管道具有不同的作用。(其实就是处理数据)angular中自带的pipe函数管道功能日期管道,格式化日期DatePipe将输入数据对象经过JSON.stringifyo方法转换后输出对象的字符串JsonPipe将文本所有小写字母转换成大写字母UpperCasePipe将文本所有大写字母转换成小写字母LowerCasePipeDecimalPipe将数值按照特定的格式显示文本将数值进行货币格式化处理CurrentcyPipe将数组或者字符串裁剪成新子集SlicePipe将数值转百分比格式PercentPipepipe用法·{输入数据|管道:管道参数]}}(其中是管道操作符)·链式管道{{输入数据|date|uppercase}}·管道流通方向自左向右,逐层执行体田脚王加

类似 vue2 的过滤器 nest的管道

{{data | date}}

ng g p pipes/test 自定义创建管道

18、组件生命周期以及属性传递

3.2.2 组件生命周期
Angular会按以下顺序执行钩子方法,你可以用它来执行以下类型的操作。

ngonchanges ()
ngonInitO
ngDocheck()
ngAfterContentInitO
ngAfterContentCheckedO
ngAfterviewInitO
ngAfterviewCheckedO
ngOnDestroy

传值
<app-title [title]='xxx'>title compontent @input()title?:stringhtml {{title}}

19、组件交互

@Input
父组件通过“@Input'给子组件绑定属性设置输入类数据

@Output父组件给子组件传递一个事件,子组件通过@output 弹射触发事件

相当vue $emit

parent
export class AppComponent {title = 'app';print(){console.log(this.title)}
}
<app-foo [title]="'xx'" (print)="print()"></app-foo>child
@Output() print:EventEmitter<string>=new EventEmitter()changeTitleFun=()=>{this.print.emit('title')}
<button (click)="changeTitleFun()">parent</button>

@ViewChild()
通过“Viewchild"获取子组件实例,获取子组件数据

parent
print(){console.log(this.title)this.children.add()}@ViewChild('child') children:any;
<app-foo #child [title]="'xx'" (print)="print()"></app-foo>

20、Angular服务的讲解

3.4服务
angular中,把从组件内抽离出来的代码叫服务,服务的本质就是函数官方认为组件不应该直接获取或保存数据,它们应该聚焦于展示数据,而把数据访问的职责委托给某个服务。而服务就充当着数据访问,逻辑处理的功能。把组件和服务区分开,以提高模块性和复用性。通过把组件中和视图有关的功能与其他类型的处理分离开,可以让组件类更加精简、高效。
使用命令ng g s xx创建一个服务,通过@Injectable()装饰器标识服务。

访问获取保存数据 业务逻辑

ng g s xxx/xx

s

@Injectable()

模块过来各个模块 组装起来


21、依赖注入

服务手动...加入app

组件 用在construtor 加入

服务 类似 vuex

22、路由基础以及路由配置

<a [routerLink]="['/foo']">foo</a>
RouterLink标签
export const routes: Routes = [{path: 'foo',component:FooComponent,// children/}
];
imports: [RouterOutlet,FooComponent,RouterLink],

<!--路由组件渲染的位置-->

path:'' 默认 path:"**" 全部

23、通配路由配置以及路由执行机制讲解
24、路由嵌套

import Router

this.router.navigate(['/home'])

高亮 routerlinkActive 同 react

25、路由传参

query
this.router.snapshot.queryParams['name']<a [routerLink]="['/foo',88]" [queryParams]="{'name':'koo'}">foo</a>params
export const routes: Routes = [{path: 'foo/:id',component:FooComponent,// children/}
];<a [routerLink]="['/foo',88]">foo</a>constructor(private http: HttpClient,private appService: AppService,private router:ActivatedRoute) this.router.params.subscribe(params=>{console.log(params['id'],111111111)})

http://fastmock.site/#/

26、案例巩固

自带http axios

01_vue社区生鲜团购功能介绍
02_项目的环境搭建
03_相关文件的配置
04_vue项目框架结构介绍
05_路由定义
06_组件的引用
07_引入外部css文件
08_底部导航结构
09_底部导航样式
10_模似后端返回数组对象处理数据
11_首页头部展示
12_首页头部样式

13_require动态引入图片

require('xx') 在data

14_vue实现轮播图
15_轮播图小圆点的展示
16_导航栏的展示
17_导航栏通过数据动态处理
18_优惠券模块结构定义
19_优惠券模块样式
20_商品展示区结构分析
22、Vue2 VS Vue3 差异化对比--速度更快
23、Vue2 VS Vue3 差异化对比--体积减小
24、Vue2 VS Vue3 差异化对比--更易维护
25、Vue2 VS Vue3 差异化对比--原生支持度更高

https://www.bilibili.com/video/BV1864y1i7n8

路由守卫

用CanActivate来处理导航到某路由的情况
用CanActivateChild来处理导航到某子路由的情况
用CanDeactivate来处理从当前路由离开的情况
用Resolve在路由激活之前获取路由数据
用CanLoad来处理异步导航到某特性模块的情况

路由守卫使用步骤
1 创建:ng g gurd auth

同理 会 同样其他 http 路由等....少用....ds用查看做

qjdgh ...跳重

http-拦截器..

守卫+http拦截器做 login拦截

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/852500.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA bean json互转换插件

插件安装步骤:File->Settings->Plugins—>查找所需插件—>Install 或 File->Settings->Plugins—>Install plug from disk —>选择下载好的插件安装 一般插件安装后重启idea即可生效。 一、Java bean 转换 json 的插件 java-bean-to-json 下面详细安装…

转载:【AI系统】计算图的调度与执行

在前面的内容介绍过,深度学习的训练过程主要分为以下三个部分:1)前向计算、2)计算损失、3)更新权重参数。在训练神经网络时,前向传播和反向传播相互依赖。对于前向传播,沿着依赖的方向遍历计算图并计算其路径上的所有变量。然后将这些用于反向传播,其中计算顺序与计算图…

转载:【AI系统】微分实现方式

上一篇文章简单了解计算机中常用几种微分方式。本文将深入介绍 AI 框架离不开的核心功能:自动微分。 而自动微分则是分为前向微分和后向微分两种实现模式,不同的实现模式有不同的机制和计算逻辑,而无论哪种模式都离不开雅克比矩阵,所以我们也会深入了解一下雅克比矩阵的原理…

React16

React16免费基础视频教程 https://www.bilibili.com/video/BV1g4411i7po P1 01_React免费视频课程介绍 https://jspang.com 2019 5年前 react16 16.8.6 https://react.dev/ P2 02_React简介和Vue的对比 P3 03_React开发环境的搭建 npm i -g create-react-app@3.0.0 create-reac…

Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the same

错误报在了forward里的Conv2d处。原因是函数写在forward里可能默认cpu,如果写在init构造函数里,就不需要再指定cuda。 修改为箭头指示就不再报错了。 【参考】 Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the same-CSDN博客

jquery半透明拖拽窗口插件

这是一款jquery半透明拖拽窗口插件。该插件可以在页面生成可以拖拽、最大化、最小化的浮动窗口。在线演示 下载使用方法 在页面中引入style.css、jquery和jquery-translucent.js文件。<link rel="stylesheet" type="text/css" href="style.css&quo…

Marvelous Designer高版本更改界面字体大小

打开软件 打开 设置/用户自定义 - 用户自定义选择用户界面 - 显示 - 自动规模不勾选 - 分辨率选择大重启软件即可

golang:第三方库:用jordan-wright/email发送邮件

一,安装第三方库: $ go get -u github.com/jordan-wright/email go: downloading github.com/jordan-wright/email v4.0.1-0.20210109023952-943e75fe5223+incompatible go: added github.com/jordan-wright/email v4.0.1-0.20210109023952-943e75fe5223+incompatible 二,代…

为了改一行代码,我花了10多天时间,让性能提升了40多倍---Pascal架构GPU在vllm下的模型推理优化

ChatGPT生成的文章摘要 这篇博客记录了作者在家中使用Pascal显卡运行大型模型时遇到的挑战和解决方案。随着本地大型模型性能的提升,作者选择使用vllm库进行推理。然而,作者遇到了多个技术难题,需要自行编译vllm和PyTorch,以支持Pascal架构的显卡。编译过程中,作者深入研究…

vxe-table 实现复选框分页跨页勾选

vxe-table 实现复选框分页跨页勾选 官网:https://vxetable.cn 当使用数据分页与复选框多页勾选时,可以通过 checkbox-config.reserve 启用<template><div><vxe-button status="success" @click="getSelectEvent">获取已选</vxe-but…