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

无限动力营销型网站建设/sem投放是什么意思

无限动力营销型网站建设,sem投放是什么意思,外行学网页制作与网站建设从入门到精通,如何设计网页版面一、引言 在前端开发领域,Angular 是一个强大且流行的框架。它由 Google 维护,基于 TypeScript,采用模块化设计,提供了组件化开发、依赖注入、路由、表单处理等丰富功能,旨在帮助开发者构建高效、可维护的单页应用程序…

一、引言

在前端开发领域,Angular 是一个强大且流行的框架。它由 Google 维护,基于 TypeScript,采用模块化设计,提供了组件化开发、依赖注入、路由、表单处理等丰富功能,旨在帮助开发者构建高效、可维护的单页应用程序(SPA),提升开发效率和用户体验。

二、安装 Angular

  1. 安装 Node.js 和 npm:Angular 依赖 Node.js 和 npm 运行。从 Node.js 官方网站下载并安装它们。
  2. 安装 Angular CLI:使用命令npm install -g @angular/cli安装 Angular CLI,安装完成后可用ng --version检查版本。

三、创建 Angular 项目

  1. 使用 Angular CLI 创建项目:ng new my-app,Angular CLI 会自动创建项目结构并安装依赖项。
  2. 运行项目:进入项目目录,执行cd my-app后再运行ng serve,开发服务器启动后可在浏览器中通过http://localhost:4200访问应用程序。

四、Angular 项目结构

1.项目目录结构

  1. e2e/:端到端测试目录。
  2. node_modules/:项目依赖的第三方模块。
  3. src/:项目源代码目录。
  4. .angular-cli.json:Angular CLI 的配置文件。
  5. package.json:项目的包管理文件。
  6. tsconfig.json:TypeScript 的配置文件。

2.主要文件介绍

  1. app.module.ts:定义应用程序的模块。
  2. app.component.ts:定义应用程序的根组件。
  3. index.html:应用程序的入口文件。
  4. main.ts:应用程序的启动文件。

五、Angular 组件

1.组件概念

  • 组件是包含 HTML 模板、TypeScript 代码和 CSS 样式的独立单元,负责显示数据、处理用户输入和与其他组件交互。

2.创建组件

  • 使用ng generate component my-component可创建新组件,Angular CLI 会在src/app/下创建包含模板、代码和样式文件的文件夹。

3.组件模板

  • 定义组件外观和布局,可使用 Angular 的模板语法显示数据、绑定事件和使用指令。例如:
<div><h1>{{title}}</h1><p>{{description}}</p><button (click)="onClick()">Click me</button>
</div>

4.组件类

用 TypeScript 文件定义组件行为和逻辑,可定义属性、方法和生命周期钩子。例如:

import { Component } from '@angular/core';@Component({selector: 'app-my-component',templateUrl: './my-component.component.html',styleUrls: ['./my-component.component.css']
})
export class MyComponent {title = 'My Component';description = 'This is my component.';onClick() {console.log('Button clicked!');}
}

六、Angular 模块

  1. 模块概念:在 Angular 中,模块是组织代码的方式,将相关组件、服务、指令等组合在一起,形成独立功能单元,提高代码可维护性和可扩展性,方便复用。
    • declarations:声明模块中包含的组件、指令和管道。
    • imports:导入其他模块以使用其中功能。
    • providers:提供服务,可在模块中的组件注入使用。
    • exports:导出模块中的部分内容供其他模块使用。
  2. 模块代码示例:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MyComponent } from './my-component/my-component.component';@NgModule({declarations: [MyComponent],imports: [CommonModule],exports: [MyComponent]
})
export class MyModule { }

七、Angular 路由配置方法

1.路由概念

  • 路由是 Angular 应用程序的导航机制,定义不同 URL 路径和对应的组件,让用户通过 URL 访问不同页面。

2.配置路由

  • 使用RouterModule.forRoot()方法配置路由。例如:
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './home/home.component';
import { AboutComponent } from './about/about.component';const routes: Routes = [{ path: '', component: HomeComponent },{ path: 'about', component: AboutComponent }
];@NgModule({imports: [RouterModule.forRoot(routes)],exports: [RouterModule]
})
export class AppRoutingModule { }

3.路由参数

  • 可在路由中定义参数,在组件中通过注入ActivatedRoute服务获取参数值。例如:
const routes: Routes = [{ path: 'user/:id', component: UserComponent }
];import { Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router';@Component({selector: 'app-user',templateUrl: './user.component.html',styleUrls: ['./user.component.css']
})
export class UserComponent {constructor(private route: ActivatedRoute) {}ngOnInit() {this.route.params.subscribe(params => {const id = params['id'];console.log(id);});}
}

4.路由导航守卫

  • 可控制用户导航行为,如在用户未登录时阻止访问某些页面。Angular 提供多种导航守卫,如CanActivateCanActivateChildCanDeactivate等。例如:
import { Injectable } from '@angular/core';
import { CanActivate, Router } from '@angular/router';@Injectable({providedIn: 'root'
})
export class AuthGuard implements CanActivate {constructor(private router: Router) {}canActivate(): boolean {if (isLoggedIn()) {return true;} else {this.router.navigate(['/login']);return false;}}
}
  • 在路由配置中使用导航守卫
const routes: Routes = [{ path: 'dashboard', component: DashboardComponent, canActivate: [AuthGuard] }
];

5.懒加载模块

  • 对于大型应用程序,可使用懒加载模块提高性能,只有在用户访问特定路由时才加载模块。
  • 创建懒加载模块:
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { LazyComponent } from './lazy.component';const routes: Routes = [{ path: '', component: LazyComponent }
];@NgModule({imports: [RouterModule.forChild(routes)],declarations: [LazyComponent]
})
export class LazyModule { }
  • 在主路由配置中使用懒加载模块:
const routes: Routes = [{ path: '', component: HomeComponent },{ path: 'about', component: AboutComponent },{ path: 'lazy', loadChildren: () => import('./lazy.module').then(m => m.LazyModule) }
];

八、Angular 服务

1.服务概念

  • 服务是可复用代码块,可封装业务逻辑、数据访问等通用功能,在不同组件间共享。

2.创建服务

  • 使用ng generate service my-service创建服务,Angular CLI 会在src/app/下创建服务的 TypeScript 文件。

3.注入服务

  • 在组件中通过依赖注入获取服务实例。例如:
import { Component } from '@angular/core';
import { MyService } from './my-service.service';@Component({selector: 'app-my-component',templateUrl: './my-component.component.html',styleUrls: ['./my-component.component.css']
})
export class MyComponent {constructor(private myService: MyService) { }
}

4.使用服务

  • 服务可提供数据存储、网络请求等功能。例如:
import { Injectable } from '@angular/core';@Injectable({providedIn: 'root'
})
export class MyService {private data: string[] = [];addData(item: string) {this.data.push(item);}getData() {return this.data;}
}
  • 在组件中使用服务:
import { Component } from '@angular/core';
import { MyService } from './my-service.service';@Component({selector: 'app-my-component',templateUrl: './my-component.component.html',styleUrls: ['./my-component.component.css']
})
export class MyComponent {constructor(private myService: MyService) { }addItem() {const newItem = 'New item';this.myService.addData(newItem);console.log(this.myService.getData());}
}

九、Angular 表单处理

1.模板驱动表单

  • 通过在模板中使用表单指令实现表单验证和提交。例如:
<form #myForm="ngForm" (ngSubmit)="onSubmit(myForm)"><input type="text" name="username" ngModel required><input type="password" name="password" ngModel required><button type="submit">Submit</button>
</form>
  • 在组件中处理表单提交:
import { Component } from '@angular/core';@Component({selector: 'app-my-component',templateUrl: './my-component.component.html',styleUrls: ['./my-component.component.css']
})
export class MyComponent {onSubmit(form: any) {if (form.valid) {console.log(form.value);} else {console.log('Form is invalid');}}
}

2.响应式表单

  • 在组件类中创建表单模型实现表单验证和提交。例如:
import { Component } from '@angular/core';
import { FormGroup, FormControl, Validators } from '@angular/forms';@Component({selector: 'app-my-component',templateUrl: './my-component.component.html',styleUrls: ['./my-component.component.css']
})
export class MyComponent {myForm = new FormGroup({username: new FormControl('', Validators.required),password: new FormControl('', Validators.required)});onSubmit() {if (this.myForm.valid) {console.log(this.myForm.value);} else {console.log('Form is invalid');}}
}
  • 在模板中绑定表单模型:
<form [formGroup]="myForm" (ngSubmit)="onSubmit()"><input type="text" formControlName="username"><input type="password" formControlName="password"><button type="submit">Submit</button>
</form>

十、Angular 状态管理

1.状态管理概念

  • 在复杂应用程序中,多个组件可能需要共享和同步数据状态,状态管理用于管理应用程序状态,确保数据一致性和可维护性。

2.NgRx 状态管理库

  • NgRx 是流行的 Angular 状态管理库,基于 Redux 理念,提供可预测、可维护的方式管理应用程序状态,包含actions(定义动作)、reducers(根据动作更新状态)、effects(处理异步操作并触发动作)、selectors(从状态中选择特定数据)。例如:
  • 定义状态模型:
export interface AppState {counter: number;
}export const initialState: AppState = {counter: 0
};
  • 定义动作:
export const INCREMENT = 'INCREMENT';
export const DECREMENT = 'DECREMENT';export class IncrementAction implements Action {readonly type = INCREMENT;
}export class DecrementAction implements Action {readonly type = DECREMENT;
}
  • 定义 reducer:
import { AppState, initialState } from './app.state';
import { INCREMENT, DECREMENT } from './app.actions';export function reducer(state = initialState, action: any): AppState {switch (action.type) {case INCREMENT:return {...state, counter: state.counter + 1 };case DECREMENT:return {...state, counter: state.counter - 1 };default:return state;}
}
  • 在模块中配置 NgRx:
import { NgModule } from '@angular/core';
import { StoreModule } from '@ngrx/store';
import { reducer } from './app.reducer';@NgModule({imports: [StoreModule.forRoot({ appState: reducer })]
})
export class AppModule { }

十一、总结

本文介绍了 Angular 框架的基本概念、安装和使用方法,包括项目结构、组件、模块、路由配置、服务、表单处理和状态管理等方面。通过学习本文,可对 Angular 框架有初步了解,并能使用 Angular CLI 创建、开发和维护 Angular 应用程序。Angular 是功能强大的前端框架,若想深入学习,可参考 Angular 的官方文档和其他相关资源。

相关文章:

Angular 框架入门教程:从安装到路由、服务与状态管理详解

一、引言 在前端开发领域&#xff0c;Angular 是一个强大且流行的框架。它由 Google 维护&#xff0c;基于 TypeScript&#xff0c;采用模块化设计&#xff0c;提供了组件化开发、依赖注入、路由、表单处理等丰富功能&#xff0c;旨在帮助开发者构建高效、可维护的单页应用程序…...

【华为HCIP实战课程十八】OSPF的外部路由类型,网络工程师

一、外部路由类型: 上节讲的外部路由类型,无关乎COST大小,OSPF外部路由类型1优先于外部路由类型2 二、转发地址实验拓扑 我们再SW3/R5/R6三台设备运行RIP,SW3即运行RIP又运行OSPF SW3配置rip [SW3-rip-1]ver 2 [SW3-rip-1]network 10.0.0.0 AR5去掉ospf配置和AR6配置rip…...

oss 简单命令(已亲测)

1、 服务器本地文件复制到OSS指定目录 ./ossutil cp -r /opt/post/afc/afcServer/afcenter/logs/ oss://oss-name/ScBak/20230608/ -c /opt/post/ossconfig 2、在oss服务器上创建文件夹 ./ossutil mkdir oss://oss-name/ScBak/20230608/dam -c /opt/post/ossconfig 3、查…...

申请https证书

引入证书: 当服务器使用HTTPS之前都会申请一份证书&#xff0c;证书是为了证明服务端公钥的权威性&#xff0c;服务器向浏览器传输证书&#xff0c;浏览器再从证书里获取公钥&#xff0c;证书明文数据签名。 如何理解CA签发证书的过程 a.CA会有自己的公钥 和 私钥&#xff…...

trtexec 工具使用

本文介绍trtexec工具的使用&#xff0c;trtexec可以实现onnx模型导出trt模型、耗时分析和模型优化分析等功能&#xff0c;本节将对 trtexec的运用进行介绍。 1.trtexec trtexec是官方提供的命令行工具&#xff0c;主要用于一下三个方面 生成模型序列化文件&#xff1a;由ONNX文…...

10款具备强大数据报告功能的电脑监控工具,办公电脑怎么监控

数据报告功能是电脑监控软件的重要特性&#xff0c;它能够帮助管理者全面了解员工的工作行为、应用使用情况&#xff0c;并生成详细的生产力分析报告。以下是10款具备强大数据报告功能的监控工具推荐&#xff0c;帮助企业有效管理和提升工作效率。 1. 固信软件 固信软件不仅是…...

如何理解Linux中的进程名

目录 一&#xff1a;程序的概念二&#xff1a;进程的概念三&#xff1a;线程的概念四&#xff1a;Linux中的进程名 一&#xff1a;程序的概念 程序就是采用某种特定格式编写的文本文件&#xff0c;该文件可以给编译器或者解释器编译和解释。编写好的程序平时存放在硬盘中。 二…...

微信红包设计流程讲解与实战分析

#1024程序员节 | 征文# 前言 微信红包作为大家耳熟能详的一种互动方式&#xff0c;其背后的技术支持包含多个方面。从用户发出红包到红包被抢完&#xff0c;涉及到的流程包括发红包、红包存储、红包拆分以及抢红包等。本文将详细介绍这一系列流程&#xff0c;并通过代码案例来…...

AI智能体:AI智能体(Agent)是什么?为什么要学?99%的人不知道!

为什么要学&#xff1f; 我们先搞清楚为什么&#xff1f; 最近看到 AI 创新力五问&#xff0c;我们日常生活中有使用 AI 来融入到我们的学习工作流嘛&#xff1f; 值得我们日常反省。 未来企业人才招聘测试AI创新力的五问&#xff1a; 您是否处于每天习惯使用 AI 的状态&am…...

NVR小程序接入平台/设备EasyNVR多个NVR同时管理的高效解决方案

在当今的数字化安防时代&#xff0c;视频监控系统的需求日益复杂和多样化。为了满足不同场景下的监控需求&#xff0c;一种高效、灵活且兼容性强的安防视频监控平台——NVR批量管理软件/平台EasyNVR应运而生。本篇探讨这一融合所带来的创新与发展。 一、NVR监测软件/设备EasyNV…...

APS开源源码解读: 排程工具 optaplanner II

上篇 排产&#xff0c;原则上也就是分配时间&#xff0c;分配资源&#xff1b;保证资源日历约束&#xff0c;保证工艺路线约束。我们看一下如何实现optaplanner 优化的 定义一个move, 一个move可能改变了分配到的资源&#xff0c;也可能改变了一个资源上的顺序。改变即意味着优…...

科技是把双刃剑,巧用技术改变财务预测

数字化和全球化的双向驱动&#xff0c;引领我国各行各业在技术革新的浪潮中不断扬帆。这一趋势不仅带来了前所未有的突破与创新&#xff0c;推进企业迈向数据驱动决策的新未来&#xff0c;同时也伴随着一些潜在的问题和挑战。科技的普及就像是一场革命&#xff0c;在财务管理领…...

vscode默认添加python项目的源目录路径到执行环境(解决ModuleNotFoundError: No module named问题)

0. 问题描述 vscode中编写python脚本&#xff0c;导入工程目录下的其他模块&#xff0c;出现ModuleNotFoundError: No module named 错误 在test2的ccc.py文件中执行print(sys.path) 查看路径 返回结果发现并无’/home/xxx/first_demo’的路径&#xff0c;所以test2下面的文…...

【每日刷题】Day143

【每日刷题】Day143 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 200. 岛屿数量 - 力扣&#xff08;LeetCode&#xff09; 2. LCR 105. 岛屿的最大面积 - 力扣&…...

基于Springboot智能学习平台的设计与实现

基于Springboot智能学习平台的设计与实现 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;idea 源码获取&#xff1a;https://download.csdn.net/downlo…...

黑马javaWeb笔记重点备份11:Web请求与响应

请求 SpringBoot内置Servlet 在Tomcat这类Web服务器中&#xff0c;是不识别我们自己定义的Controller的&#xff0c;但在tomcat中是可以识别 Servlet程序的。在SpringBoot进行web程序开发时&#xff0c;它内置了一个核心的Servlet程序 DispatcherServlet&#xff0c;称之为 核…...

H5对接海康硬盘录像机视频简单说明

开发过程中使用HTML5(通常是通过Web技术栈,如HTML、CSS、JavaScript)与海康威视(Hikvision)的硬盘录像机(DVR)进行视频对接,通常涉及以下步骤: 获取DVR的RTSP流地址:海康威视DVR支持RTSP协议,你可以通过DVR的管理界面获取每个摄像头的RTSP流地址。 使用视频播放器库…...

测试人必备的Linux常用命令大全...【全网最全面整理】

Linux常用命令大全&#xff08;非常全&#xff01;&#xff01;&#xff01;&#xff09; 最近都在和Linux打交道&#xff0c;感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制&#xff0c;当然&#xff0c;这也是很多人喜欢linux的原因&#xff0c…...

苹果AI落后两年?——深度解析苹果在AI领域的挑战与前景

# 苹果AI落后两年&#xff1f;——深度解析苹果在AI领域的挑战与前景 近年来&#xff0c;人工智能&#xff08;AI&#xff09;领域的技术竞争日益激烈&#xff0c;各大科技巨头纷纷推出突破性的AI产品。然而&#xff0c;关于苹果公司在AI领域的表现&#xff0c;最近传出一些内…...

三菱PLC伺服-停止位置不正确故障排查

停止位置不正确时&#xff0c;请确认以下项目。 1)请确认伺服放大器(驱动单元)的电子齿轮的设定是否正确。 2&#xff09;请确认原点位置是否偏移。 1、设计近点信号(DOG)时&#xff0c;请考虑有足够为0N的时间能充分减速到爬行速度。该指令在DOG的前端开始减速到爬行速度&…...

Mybatis 批量操作存在则更新或者忽略,不存在则插入

Mybatis 批量操作新增&#xff0c;如果存在重复有下列2种处理方式&#xff1a; 1、存在则忽略代码示例&#xff1a; <insert id"insertDuplicateKeyIgnoreList">INSERT IGNORE INTO specs(status,type,code,name,create_time,create_by)VALUES<foreach col…...

「C/C++」C++ STL容器库 之 std::deque 双端队列容器

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「C/C」C/C程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…...

一招教你解决Facebook广告账号问题

这段时间&#xff0c;我们写了很多文章来探讨Facebook的广告账户问题&#xff1a;《Facebook被封号该怎么办》《Facebook二不限、三不限账号是什么》《Facebook海外户&#xff08;三不限&#xff09;和账单户该如何选择》《如何区分真假Facebook三不限海外户》相信看过这些文章…...

MySQL启动报错:InnoDB: Unable to lock ./ibdata1 error

MySQL启动报错&#xff1a;InnoDB: Unable to lock ./ibdata1 error 在OS X环境下MySQL启动时报错&#xff1a; 016-03-03T00:02:30.483037Z 0 [ERROR] InnoDB: Unable to lock ./ibdata1 error: 35 2016-03-03T00:02:30.483100Z 0 [Note] InnoDB: Check that you do not alr…...

Linux终端之旅: 打包和压缩

在 Linux 世界中&#xff0c;打包和压缩文件是管理系统资源、传输数据和备份的重要技能。通过命令行工具如 tar、gzip、zip 等&#xff0c;我们可以高效地将多个文件或目录打包为一个文件&#xff0c;并通过压缩减少其体积。接下来&#xff0c;我将记录学习如何利用这些工具&am…...

PDA手持机提升管理效率和准确性

在当今快节奏的商业世界中&#xff0c;管理效率和准确性是企业成功的关键因素。而 PDA 手持机的出现&#xff0c;为企业管理带来了革命性的变革&#xff0c;成为提升管理效率和准确性的有力武器。 PDA 手持机&#xff0c;即个人数字助理手持设备&#xff0c;集数据采集、存储、…...

C++ [项目] 愤怒的小鸟

现在才发现C游戏的支持率这么高&#xff0c;那就发几篇吧 零、前情提要 此篇为 制作,由于他没有CSDN,于是由我代发 一、基本介绍 支持Dev-C5.11版本(务必调为英文输入法),基本操作看游戏里的介绍,怎么做的……懒得说,能看懂就看注释,没有的自己猜,如果你很固执……私我吧 …...

群控系统服务端开发模式-市场分析

刚刚我把群控系统服务端开发模式的文档全部整理了一下&#xff0c;结果发现还缺市场分析这篇文档没有上传&#xff0c;不好意思啦。 一、前言 在互联网高速发展且稳定的时代&#xff0c;营销系统是自运营公司线上最好的系统。加上现在直播行业很火&#xff0c;引流很重要&#…...

智能听诊器革新宠物健康监测

在宠物健康护理领域&#xff0c;智能听诊器的引入标志着一个新时代的开启&#xff0c;它正成为宠物医疗保健的新宠。这款设备通过高精度传感器捕捉宠物的心跳和呼吸声&#xff0c;为宠物主人和兽医提供精确的健康数据。 智能听诊器的即时反馈功能&#xff0c;使得主人能够通过…...

2000-2023年上市公司绿色专利申请授权面板数据

2000-2023年上市公司绿色专利申请授权面板数据 1、时间&#xff1a;2000-2023年 2、来源&#xff1a;国家知识产权局、WPIO清单 3、指标&#xff1a;年份、股票代码、股票简称、行业名称、行业代码、省份、城市、区县、区县代码、上市状态、绿色专利申请总量、绿色发明专利申…...