在打包项目的时候提早编译好应用,打包好以后能够直接启动,而不是把编译器打包在应用中用的时候再编译。生产环境使用。css
浏览器中启动并编译全部的组件和模块,动态运行应用程序。开发过程当中使用。html
告诉Angular怎么建立或改变HTML 元素。
分为三类:前端
监听或修改其它 HTML 元素、特性 (attribute)、属性 (property)、组件的行为的命令,一般用做修改 HTML 属性(样式等)。 如ngClass、ngStyle。react
监听或者修改元素的结构,删除或者增长dom。如ngIf这个“条件化元素”指令,ngFor这个“重复器”指令。express
一个网页中一切皆能够视为组件。
一个按钮或者一个表格均可以是一个组件,其实组件就至关于汽车零件,一个零件由各类材料(html、css、js等构成),它只维护自身的逻辑。bootstrap
就是把一个组件的部分文件放在一个index.ts一块儿抛出去供别的地方引用。后端
├─login
│ ├─login.component.ts
│ ├─login.service.ts
│ ├─login.directive.ts
│ ├─ index.ts
... index.ts里面引入 login.component.ts等文件浏览器
export * from './login.component.ts';
export * from './login.service.ts';
复制代码
别的地方引用缓存
import { loginComponent, LoginService } from '../login';
复制代码
直接写组件的文件夹会默认寻找下面的index.tsbash
Angular 模块一样能够把组件、服务指令等放在一块儿抛出去。
实际上,是装饰 (decoration) 的同义词。
几乎都是指的数据绑定 (data binding) 和将 HTML 对象属性绑定到数据对象属性的行为。
有时也会指在“令牌”(也称为键)和依赖提供商 (provider) 之间的依赖注入 (dependency injection) 绑定。 这种用法不多,并且通常都会在上下文中写清楚。
把后台数据展现出来,把用户操做转换为数据获取到。
You launch an Angular application by "bootstrapping" it using the application root NgModule (AppModule).
经过应用程序根 Angular 模块来启动 Angular 应用程序。 启动过程标识应用的顶级“根”组件 (component),也就是应用加载的第一个组件。 更多信息,见设置。
你能够在同一个index.html中引导多个应用,每一个应用都有它本身的顶级根组件。
首字母小写,其余字母或缩写首字母大写。又叫小写驼峰式命名法 (lower camel case) 。
函数、属性和方法命名通常用在这个写法。
每一个单词或缩写都以大写开头,也称大写驼峰式命名法。
类名通常用这个写法。
使用中线 (-) 分隔每一个单词,也称为烤串命名法 kebab-case。
指令的选择器(例如my-app)和文件名(例如hero-list.component.ts)一般是用中线命名法来命名。
在多个词之间用下划线(_)分隔。也叫下划线命名法。
用一个不恰当的词语:人模狗样。
其实就是把一个未知的东西打扮一下让Angular知道它是什么。
@component告诉Angular它是组件,@input告诉Angular它是输入数据,@Injectable告诉Angular它是服务。
须要的东西(依赖)直接从提供者(providers)那里拿过来用,不须要就不带提供者玩。
Angular 依赖注入系统 (Dependency Injection System)中的一个对象, 它能够在本身的缓存中找到一个命名的“依赖”或者利用已注册的提供商 (provider) 建立这样一个依赖。
依赖注入系统依靠提供商来建立依赖的实例。 它把一个查找令牌和代码(有时也叫“配方”)关联到一块儿,以便建立依赖值。
JavaScript统称,有多个JavaScript版本。最新批准的 JavaScript 版本是ECMAScript 2016(也称“ES2016”或“ES7”)。
简写: ES6 语言
缩写: ES2015 语言
“ECMAScript 5”的简写,大部分现代浏览器使用的 JavaScript 版本。
别的组件传过来的数据,数据值会从模板表达式等号右侧的数据源流入这个属性 。它和输出属性通常用做父子组件传递信息。
别人(父组件)眼里的我:
// 等号右侧往左侧流入
<me [receiver]='别的传来的'></me>
复制代码
其实我(子组件)是这样的
@Component({
selector: 'me'
...
})
..
@input() receiver : string;
ngOnChanges(){
console.log("传过来的数据",this.receiver); // 打印出来‘别的传来的’
}
复制代码
经过触发父组件的事件进行传递数据。 事件流从这个属性流出到模板表达式等号的右边的接收者。
子组件ts
@Output() sendHero: EventEmitter<any> = new EventEmitter();
ngOnInit() {
this.sendHero.emit('timo');
}
复制代码
父组件:
html:
<me (sendHero)="getHero($event)"></me>
ts:
getHero(hero :string){
console.log("传递过来的是哪一个召唤师",hero); //传递过来的是提莫
}
复制代码
把变量插入html中。 ts:
public me = '万年青桐五';
复制代码
html:
<div>我是{{me}},求带飞。</div> // 我是万年青桐五,求带飞。
复制代码
不一样时候能够作什么事情。好比20分钟才能够打大龙。
模块是一个内聚的代码块,具备单一用途。就像前端和后端是两个模块,若是想要交流的话经过接口(Angular里面是引用)。
在接口请求的时候会用到,将异步数据转化为数据流,自身也能够生成一些自定义的数据流。它是引自的RxJS(Reactive Extensions for JavaScript),一个第三方包。
一个能够把米作成米饭的函数,管道起到一个转换的做用。
Angular内置一些管道:DatePipe、UpperCasePipe、LowerCasePipe、CurrencyPipe和PercentPipe。 也能够自定义管道。
如: 假设
ts:
birthday = 1510156800000;
html:
<p> {{ birthday | date:"yy/MM/dd" }} </p>
转换后:
<p> 2017/11/9 </p>
复制代码
经过组件中代码构建 Angular 表单的一种技术。 另外一种技术是模板驱动表单。 构建响应式表单时:
动态表单很是强大、灵活,它在复杂数据输入的场景下尤为好用,例如动态的生成表单控制器。
经过配置不一样的路由,加载不一样的组件或模块,组合成不一样的页面。
一个带有路由插座 ( RouterOutlet ) 的 Angular 组件。
那什么是路由插座?其实能够理解为咱们平时用的插排,每一个孔都是一个路由,插上这个孔的电器是路由对应的组件。这个插座加上插上的电器才是咱们想要的组件。
路由插座怎么用?里面的过程是什么样的?看下面。
文件形如:
├─list
│ ├─list.component.ts
│ ├─list.routes.ts
│ ├─lol
│ │ ├─ lol.component.ts // 里面包含了html,css等
list.component.ts
@Component({
..
template: ' <h1>拥有路由插座的组件</h1> <router-outlet></router-outlet> '
})
复制代码
list.routes.ts
import { ListComponent } from './list.component';
import { LolComponent } from './lol/lol.component';
export const listRoutes = [{
path: 'list',
component: ListComponent,
children: [
{
path: 'lol',
component: LolComponent
}
}]
复制代码
首先是匹配到list路由,这时候发现list的html里面有路由插座(router-outlet),就去找子路由,根据子路由把对应的组件插入到路由插座的位置。
是指Angular的框架源码,它根据不一样功能分红不一样模块的包,每一个包都有必定的做用范围。以@angular开头。
分红模块的好处是不用的话就不须要引入这个包,好比我不写动画就不用引入@angular/animations这个包。
题外话:和本主题无关的其余几个包的做用:
服务用于封装不与任何特定视图相关的数据和逻辑,或者用于在组件之间共享数据和逻辑。通常用于接口请求或传递数据。
其实就是个html
@Component({
template: `<div>其实就是个html</div>`
})
复制代码
html里面的表达式。Angular会 执行这个表达式获得值,并把它赋值给绑定目标的属性,这个绑定目标多是 HTML 元素、组件或指令。
<div [property]="1+1"></div>
复制代码
把一种形式的 JavaScript(例如 TypeScript)转换成另外一种形式的 JavaScript(例如 ES5)的过程。
视图是屏幕中一小块,用来显示信息并响应用户动做,例如点击、移动鼠标和按键。