Angular2入门教程之模块和组件详解


Posted in Javascript onMay 28, 2017

本文呢主要给大家介绍的关于Angular2模块和组件的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍:

一、初步了解模块和组件

之前给大家介绍了构建工程,这篇文章简单讲述一下Angular2中的模块和组件。

Angular2入门教程之模块和组件详解

app文件夹下有五个文件,其中,app.component.spec.ts应该是和模块测试有关的文件,目前不用管它。剩下的四个文件就是典型的模块+组件的文件组成模式。

Angular2应用由模块和组件构成,每个模块这样明明name.module.ts,组件则是name.component.ts。

这几个文件的关系是从属关系:

|--app.module.ts(模块)
 |--app.component.ts(组件)
  |--app.component.html(HTML模板)
  |--app.component.css(CSS样式表)

一个模块可以有多个组件,一个组件也可以有多个样式表,但只有一个HTML模板。

1.1组件的含义

Angular2中的组件,就是我们自定义的一段HTML代码,给他取个名字,就可以当作HTML的标签使用了。假如组件的名字是my-app,那么就可以这样使用:

<div>
 <my-app><my-app>//可以像原生标签一样添加属性,而且组件能接收的属性更丰富
   //标签里面也可以放内容
</div>

组件其实是一个类,它定义了一系列方法和属性,并且把HTML模板封装起来。它的意义是,你可以把它当做一个独立的隔离的盒子,并利用其中的方法和属性进行盒子内部的操作,以及和外界的父组件、兄弟组件交互。

1.2模块的含义

模块就是将一系列的组件还有指令、服务整合封装到一起,提供一个完整的功能。模块可以被外部模块引用。

二、模块详解和根模块

2.1 根模块

每个应用会有一个根模块,按照约定,它的类名叫做AppModule,被放在app.module.ts文件中。应用启动时,就会加载这个模块。

每个根模块会有一个根组件,默认就是app.component.ts,名字是app-root。

查看项目目录中的index.html,会发现有<app-root>Loading...</app-root>这样的代码,就是在加载这个根模块。

2.2 模块详解

下面是app.module.ts的代码。

import { BrowserModule } from '@angular/platform-browser';//每个在浏览器中运行
//的应用的根模块都需要引入BrowserModule
import { NgModule } from '@angular/core';//每个模块都需要引入的核心库中的NgModule
import { FormsModule } from '@angular/forms';//表单模块,在应用中使用表单时引入
import { HttpModule } from '@angular/http';//http模块,当需要进行http远程请求时引入

import { AppComponent } from './app.component';//自己创建的组件

@NgModule({
 declarations: [
 AppComponent
 ],
 imports: [
 BrowserModule,
 FormsModule,
 HttpModule
 ],
 providers: [],
 bootstrap: [AppComponent]
})
export class AppModule { }

Angular2用TypeScript组织代码的方式大致就像这个文件一样。

1、在顶部使用import语句,导入模块或者组件需要使用的外部模块。

在模块中需要使用自己创建的组件或者其他服务、指令,也需要import。

2、import语句之后,使用@NgModule()语句描述本模块的元数据。

  • declarations:声明属于本模块的组件,每个组件必须在且仅在一个模块中声明。
  • imports:引入买本模块中用到的模块,该模块是处于import语句引入的模块中。
  • providers:声明模块中使用的服务的提供者,暂时还没有用到。
  • bootstrap:根模块中的引导组件,应用启动过程中,会创建这个数组中的组件并插入到HTML中,一般只有一个引导组件。

3、最后,使用export语句,创建模块的类并暴露出去。

模块、组件只有暴露出去,其他的模块才能引用。

三、组件详解

import { Component } from '@angular/core'; //所有组件必须引入

@Component({
 selector: 'app-root',
 templateUrl: './app.component.html',
 styleUrls: ['./app.component.css']
})
export class AppComponent {
 title = 'app works! 你已经完成了第一步';
}

1、import语句导入需要的模块。

2、使用@Component()来描述本组件的元数据。

  • selector:创建的组件的名字,就像HTML标签的名字一样
  • templateUrl: HTML模板,使用相对路径,./表示这个组件文件所在的当前目录,
  • styleUrls:HTML模板使用的样式表,可以有多个。

3、最后,使用export创建组件的类并暴露出去。在类中,可以创建属性和方法。

四、应用启动过程

整个应用的启动流程:加载根模块,加载所需的其他模块,创建引导组件,显示组件内容。

注意:我觉得学习Angular2很好的方法之一就是去看官方教程,有中文版的,很方便。看完前面的开发指南部分就足以了解Angular2的大致原理了,当然官方教程有的地方概念可能很模糊,有地方不了解的同学,可以留言交流,谢谢大家对三水点靠木的支持。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助。

Javascript 相关文章推荐
JavaScript闭包函数访问外部变量的方法
Aug 27 Javascript
使用mouse事件实现简单的鼠标经过特效
Jan 30 Javascript
JavaScript修改作用域外变量的方法
Mar 25 Javascript
网页瀑布流布局jQuery实现代码
Oct 21 Javascript
ES6中Math对象的部分扩展
Feb 20 Javascript
JS获取子、父、兄节点方法小结
Aug 14 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
May 07 Javascript
Angularjs中的$apply及优化使用详解
Jul 02 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
Apr 20 Javascript
浅析vue插槽和作用域插槽的理解
Apr 22 Javascript
vue.js实现照片放大功能
Jun 23 Javascript
JavaScript利用html5新方法操作元素类名详解
Nov 27 Javascript
关于Angular2 + node接口调试的解决方案
May 28 #Javascript
对象不支持indexOf属性或方法的解决方法(必看)
May 28 #Javascript
设置cookie指定时间失效(实例代码)
May 28 #Javascript
Mac系统下Webstorm快捷键整理大全
May 28 #Javascript
获取url中用&amp;隔开的参数实例(分享)
May 28 #Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
May 28 #Javascript
js每隔两秒输出数组中的一项(实例)
May 28 #Javascript
You might like
实现分十页分向前十页向后十页的处理
2006/10/09 PHP
PHP fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
jquery.AutoComplete.js中文修正版(支持firefox)
2010/04/09 Javascript
JQuery入门——事件切换之hover()方法应用介绍
2013/02/05 Javascript
JS对HTML标签select的获取、添加、删除操作
2013/10/17 Javascript
JS实现遮罩层效果的简单实例
2013/11/12 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
JavaScript动态添加style节点的方法
2015/06/09 Javascript
js 定义对象数组(结合)多维数组方法
2016/07/27 Javascript
微信小程序 action-sheet底部菜单详解
2016/10/27 Javascript
AngularJS控制器之间的通信方式详解
2016/11/03 Javascript
jquery 仿锚点跳转到页面指定位置的实例
2017/02/14 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
Vue.js点击切换按钮改变内容的实例讲解
2018/08/22 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
简单说说如何使用vue-router插件的方法
2019/04/08 Javascript
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
2019/06/17 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
2020/03/07 Javascript
vue自定义树状结构图的实现方法
2020/10/18 Javascript
ReactRouter的实现方法
2021/01/25 Javascript
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
[01:04:39]OG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
pytorch 把MNIST数据集转换成图片和txt的方法
2018/05/20 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
django基于存储在前端的token用户认证解析
2019/08/06 Python
淘宝秒杀python脚本 扫码登录版
2019/09/19 Python
在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
2020/08/07 Python
Python unittest生成测试报告过程解析
2020/09/08 Python
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
纽约家具、家居装饰和地毯店:ABC Carpet & Home
2017/06/21 全球购物
JPA面试常见问题
2016/11/14 面试题
大学生实习自我鉴定
2013/12/11 职场文书
企业委托书范本
2014/09/13 职场文书
自荐信大全
2019/03/21 职场文书
python3实现Dijkstra算法最短路径的实现
2021/05/12 Python