本文将用最简约的语言介绍angular的基本概念及相关快捷指令等,便于开发者快速入门学习以及日常工作中的使用。(ps:笔记内容源于b站学习资源观后整理及个人总结。)
Angular是Google开发的开源web前端框架。
作为三大框架之首,是现在网上使用量最大的框架。
基于typescript,和react,vue相比更适合中大型企业级项目。
必备基础 html,css,js,es6。
//查看node.js版本
node -v
//查看npm版本(自动安好)
npm -v
//二选一即可,建议安装cnpm代替npm。
npm install -g@angular/cli
cnpm install -g@angular/cli
// 安好后可以查看angular版本
ng -v
cd angular1
//二选一
ng new angulardemo01
ng n angulardemo01
之后的两步直接选N , SCSS即可。
系统自动安装依赖,也可以ctr+c结束自行安装:cnpm install。
安好后cd到对应目录下。
cd c://
cd angular1
cd angulardemo01
//三选一
Ng serve --open
ng s --o
npm start
(1)创建组件class:
@component({
selector:'app-myc01',
templateUrl:'./myc01.component.html', //或template:'',
styleUrls:['./myc01.component.css']
})
export class myc01Component{}
(2)在某个模块中注册组件class:
//app.module.ts
declarations:[AppComponent,myc01Component]
(3)使用已经注册过的组件:(任意一个dom里,除了自己)
//app.component.html
<myc01>myc01>
//任选其一
ng generate component 组件名
ng g component 组件名
ng g c 组件名
//上述不好用,可如下任选其一。npx可用于执行当前项目中node_modules/.bin目录下的可执行文件。
npx ng generate component 组件名
npx ng g component 组件名
(click)="zengjia()"
<any *ngFor="let 临时变量 of 数据">
<any *ngFor="let 临时变量 of 数据; let i=index;">
<any *ngFor="let 临时变量 of 数据; index as i">
//如果布尔表达式为false,则当前元素从dom树上删除
<any *ngIf="布尔表达式">
<any *ngIf="布尔表达式;else ELSE块的编号">…any>
<ng-template #ELSE块的编号>
<any>…any>
ng-template>
详见之前写的文章: 巧用angular指令系统——样式绑定(ngClass和 ngStyle的使用详解)
详见之前写的文章: 巧用angular指令系统——样式绑定(ngClass和 ngStyle的使用详解)
注意:
//app.module.ts:
@NgModule({
imports:[BrowserModule,FormsModule]
})
ng g directive 指令名
angular预定义指令分三类:
(1)组件指令:NG中component继承自Directive。是一种特殊的指令。
(2) 结构型指令:会影响dom树结构,必须使用星号开头,如*ngFor,*ngIf。
(3) 属性型指令:不会影响dom树结构,只是影响元素外观或行为,必须用[ ]括起来,如[ngClass],[ngStyle]。
function(oldVal){ 处理 return newVal }
{{ e.salary | 过滤器名}}
(1)创建管道class,实现转换功能。管道执行过滤任务的是一个固定的函数,transform(val){ }。
@Pipe({name:'sex'})
export class SexPipe{
transform(val){return…}
}
(2)在模块中注册管道
//app.module.ts
declarations:[SexPipe]
(3)在模板视图中使用管道
{{e.empSex|sex}}
<p [title]="empSex|sex">
说明:管道的transform方法除了val还可以接受其他参数,调用管道时用冒号为这些参数赋值,例如:{{e.empSex|sex:'en'}}
创建管道对象的简便工具:ng g pipe 管道名
预定义管道:
lowercase :转换为小写 {{ename|lowercase}}
uppercase :转换为大写 {{ename|uppercase}}
titlecase :转换为首字母大写{{ename|titlecase}}
slice:只显示字符串的一部分。如下从索引0开始不包括索引3{{ename|slice:0:3}}
json:把js对象序列化为JSON字符串:{{obj | json}}
number:把数字转换为具有指定整数位和小数位的字符串{{ num | number}}
{{ e.salary | number:'4.1-4'}}
//含义:整数至少四位,小数点后至少一位最多四位
currency:将数字转换为货币格式字符串:货币符号+三位一逗号+二位小数。
{{ e.salary | currency}}
{{ e.salary | currency:'$'}}
date:把数字转换为日期字符串
{{ num | date:'yyyy-MM-dd HH:mm:ss' }}
Service:服务,angular认为:组件 是与用户交互的一种对象,其中的内容都应该与用户操作有关系的;而与用户操作无关的内容都应该剥离出去,放在“服务对象”中,为组件服务;例如:日志记录,计时统计 ,数据服务器的访问……
所有的服务对象都是“可被注入的”
1.创建服务对象
export class LogService{}
2.声明服务提供者
方式一:创建的服务对象是“单例的”——不论多少个组件使用该服务,只创建一个服务。 常用,保证服务中没有属性,该方式是可行的,否则有覆盖问题。
//根模块级服务对象
@injectable({providedin:'root'})
方式二:(等同方式一)
//app.module.ts
providers:[LogService]
方式三:每个组件对应的服务对象都是新建出来的。 在当前组件中声明,仅用于当前组件的服务提供
@injectable()
export class LogService{}
---------------------------------
@Component({
...
providers:[LogServce] //组件级服务对象
})
export class LoginComponent{}
3.在组件中声明依赖,服务提供者就会自动注入进来,组件直接使用服务对象即可.
服务对象都是在某个组件中使用。
export class xxComponent{
constructor(log:LogService){
//此处的log变量就会被注入为LogService的实例
}
}
简化工具:ng g service 服务名
以上就是今天要讲的内容,本文仅仅简单介绍了angular的使用与一些概念,扎实的掌握还需要日积月累的学习与实践的经验总结,让我们一起加油,小伙伴们有什么问题与质疑欢迎留言一起讨论哟!