因为工做须要初识了Angular,因为我的在学习一门新语言的时候喜欢买一本相关的书籍本身钻研,还记得本身的第一本Angular书籍是关于Angular2的学习,自此正式踏入Angular的学习。
书写这篇文章的主要目的是想以此文章几年本身学习Angular的历程和本身的一些感想,若是这篇文章能为你提供些许帮助也是极好的,废话很少说,正式进入正文。css
搭建开发环境html
首先你须要安装node.js https://nodejs.org/en/download/
根据本身的操做系统选择相应的版本安装
安装Angular-cli工具,这个工具能够帮助你快速构建Angular项目,生成项目所须要的组件
这里经过npm在控制台安装node
npm install -g @angular/cli
至此总体开发环境搭建完成jquery
生成你的第一个Angular项目
打开控制台,利用ng命令生成Angular项目npm
ng new my-app
如下是我生成的一个初始Angular项目结构json
以初始Angular项目来梳理组件,模块,模板的概念bootstrap
在咱们的Angular初始项目中生成一个app.component.ts的文件,这个就是咱们的组件,如下就是我在这个文件的基础上所对组件牵扯到的一系列知识的整理,若是有不对的地方欢迎指出☺数组
// 从angular核心模块中引入Component装饰器 import { Component } from '@angular/core'; /* 这段代码中的@Components就是一个装饰器,它用来告知Angular框架来如何处理一个Typescript类。 它包含多个属性,这些属性值叫作元数据。Angular会根据元数据渲染组件,并执行组件逻辑。 简单的说就是咱们能够看到这段代码的后三行定义了一个AppComponent类,它看着就是一个普通的ts类, 可是咱们须要告诉Angular这个类是一个组件,这就须要用装饰器将这些元数据附加到类上。元数据会告 诉Angular图和将这个Typescript类处理成一个组件。 */ @Component({ /* 元数据 selector: 'app-root': 这段代码表示这个组件能够经过app-root这个html标签来调用。打开项目根目录下的index.html 能够看到里面有这样一行代码 <app-root></app-root> 这其实就是调用了咱们的这个组件 templateUrl: './app.component.html' : 既然已经知道了怎么调用组件,这行代码就是用来讲明组件显示的内容是什么。文件路径就是这个 组件对应的模板,模板用来定义组件的外观 打开app.component.html代码以下 <h1> {{title}} </h1> styleUrls: ['./app.component.css'] : 这个和上面的相似,表示组件的css */ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) /* 控制器 AppComponent实际上是一个很简单的ts类,可是在这里他是这个组件的控制器,咱们这个组件全部相关的 业务逻辑都在这个控制器里书写,包含了组件的全部属性和方法,控制器和模板进行双向数据绑定也就是 模板中的{{变量名}},这里的两个花括号就是双向数据绑定的格式 */ export class AppComponent { }
模块:浏览器
/* 主模块 */ /* import数组 引入项目须要的指令 例如须要常常须要的ngif等指令 ngif等指令都在CommonModule类中 引入项目须要的类 不要在import数组中引入ngmodule类型以外的类 若是有两个同名的指令 能够在指令后面添加 as 别名 另外再给同名指令添加一个别名,就能够了 BrowserModule:每一个在浏览器中运行的应用都须要引用这个指令 */ import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; /* 必须在Ngmodule类中声明每个用到的组件 不要在declarations添加组件,指令和管道之外的类型 */ @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }