Angular2 入门
1. 说明
该文档为Angular2的入门文档,可以根据该文档的内如做出一个“helloworld”类型的Angualr2入门程序,通过该文档可以初步了解Angular2的相关知识以及开发流程,同时搭建一套可用的开发环境。
环境:
node v6.2.2
typescript v1.8.2
angular2 rc4
visual studio code
2. 环境安装
如果机器上还木有node环境,请安装最新的node环境。
3. 创建并配置
3.1 创建项目目录
创建一个文件夹 名称为 ng2-helloworld
3.2 添加包定义与配置文件
往项目目录下添加下列包定义与配置文件:
- package.json 列出hellworld 程序的依赖,并定义了一些有用的脚本。
|
{ "name": "version": "1.0.0", "description": "hello "scripts": { "start": "tsc && "lite": "tsc": "tsc", "tsc:w": "tsc -w" }, "license": "ISC", "dependencies": { "@angular/common": "@angular/compiler": "@angular/core": "@angular/forms": "@angular/http": "@angular/platform-browser": "@angular/platform-browser-dynamic": "2.0.0-rc.4", "@angular/router": "systemjs": "core-js": "^2.4.0", "reflect-metadata": "rxjs": "zone.js": "^0.6.12", "bootstrap": "^3.3.6" }, "devDependencies": { "concurrently": "lite-server": "typescript": } } |
- tsconfig.json 是 TypeScript 的编译器配置文件。
|
{ "compilerOptions": { "target": "es5", "module": "commonjs", "moduleResolution": "sourceMap": true, "emitDecoratorMetadata": true, "experimentalDecorators": true, "removeComments": false, "noImplicitAny": false } } |
- systemjs.config.js 是 SystemJS 的配置文件,本程序采用SystemJS作为模块加载器。
|
/** * System configuration for Angular 2 samples * Adjust as necessary for your application */ (function (global) { // map tells the System loader where to var map = { 'app': 'app', // 'dist', '@angular': 'node_modules/@angular', 'rxjs': 'node_modules/rxjs' }; // packages tells the System loader how to var packages = { 'app': { main: 'main.js', 'rxjs': { defaultExtension: 'js' } }; var ngPackageNames = [ 'common', 'compiler', 'core', 'forms', 'http', 'platform-browser', 'platform-browser-dynamic', 'router' ]; // Individual files (~300 requests): function packIndex(pkgName) { packages['@angular/' + pkgName] = { main: } // Bundled (~40 requests): function packUmd(pkgName) { packages['@angular/' + pkgName] = { main: } // Most environments should use UMD; some var setPackageConfig = // Add package entries for angular packages ngPackageNames.forEach(setPackageConfig); var config = { map: map, packages: packages }; System.config(config); })(this); |
3.3 安装依赖包
npm install 来安装对应的依赖包
安装完成以后就可以开始写代码了
4. 创建应用文件
在ng2-helloworld 创建一个文件夹 app,在app文件夹下创建文件app.ts如下所示:
|
import { Component } @Component({ selector: 'app', template:'<h1>hello }) export class } |
AppComponent
是应用的根组件,每个
Angular 应用都至少有一个根组件 ,它是放用户界面的容器。 组件是 Angular 应用程序中最基本的模块,组件通过它所关联的模板,控制视图。
一个组件包括三个基本部分:
l 一个或多个 import 语句来引入所需的文件。
l 一个 @Component 装饰器 来告诉 Angular ,使用哪个模板,以及怎样创建这个组件。
l 一个 组件类 来通过它的模板控制一个视图的外观和行为。
(1). 导入
Angular 应用都是模块化的,它们由很多职责明确的文件组成。 Angular 本身也是模块化的。它包括一系列的库模块,这些模块包括了一系列相关的特性,以便拿来构建应用程序。
当需要一个模块中的某些东西时,引入 (import) 它。 在这里,我们导入了 Angular 2 核心库,以便组件代码访问 @Component 装饰器。
(2). @Component
Component
是一个 装饰器函数
,它接受一个 元数据对象 作为参数。 通过给这个函数加上 @ 前缀,并使用
metadata 对象调用它,能够把 元数据 关联到组件类上。这些元数据会告诉 Angular 如何创建和使用组件类。
这里的这个元数据对象有两个字段:一个 selector ,一个 template 。
selector:指定了一个简单的 CSS 选择器,用于指出放置此组件的 HTML 元素。在此
template:指定了此组件的模板。 它用一种增强的 HTML 形式写成,用来告诉
Angular 如何渲染此组件的视图。模板中只有一行 HTML :“ My First
Angular App ”。模板还可以包含更加复杂的语法,准确来说,一个Angular应用就是一个组件树。
(3). Component
类
文件的最底下,是一个空的,什么也不做的类,叫做 AppComponent 。
打算构建一个真实的应用时,通过添加属性和应用逻辑来扩展这个类。导出 AppComponent,以便在应用的其它地方 导入。
5. 创建启动文件
在app 文件夹创建一个文件 main.ts
,用来启动Angular程序
|
import { bootstrap } import { AppComponent bootstrap(AppComponent) .then(success => .catch(error => console.log(error)); |
我们引入了两样东西来启动本应用:
- Angular 的浏览器 bootstrap(引导) 函数
- 应用的根组件: AppComponent 。
然后,调用 bootstrap 函数,并且把 AppComponent 传进去。启动函数与应用程序是两个相互分离的关注点。
6. 创建宿主页面
在ng2-helloworld 创建一个文件 index.html 作为Angular程序的宿主页面。
|
<html> <head> <title>hello world</title> <meta charset="UTF-8"> <meta name="viewport" <!-- 1. Load libraries --> <!-- Polyfill(s) for older browsers <script <script <script <script <!-- 2. Configure SystemJS --> <script <script> System.import('app').catch(function(err){ </script> </head> <!-- 3. Display the application --> <body> <app>Loading...</app> </body> </html> |
这段儿 HTML 值得注意的有:
l 引入JavaScript 库,首先引入 es6-shim ,它会给全局对象 window 打上补丁,使其支持 ES2015(ES6) 的必备特性。然后是 Angular 中使用的zone.js 和 reflect-metadata ,最后是用于模块加载的 SystemJS 库。
l 配置 SystemJS ,以便引入和运行刚才写的 main 文件。
l <body> 中的 <app> 标签是引入根应用程序组件。
7. 构建并运行
打开终端窗口,并输入如下命令:
npm
start
这个命令运行两个并行的 node 进程
TypeScript
编译器,运行在监视
(watch) 模式
一个名叫 lite-server 的静态服务器,它把 index.html 加载到浏览器中
Angular2 入门的更多相关文章
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...
- Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数
上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...
- Angular2入门系列教程4-服务
上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...
- Angular2入门系列(五)———— 路由参数设置
Angular2入门系列(五)---- 路由参数设置路由配置: { path: '', component: CarProFile, children: [ { path: 'add', compon ...
- Angular2 入门详解
AngularJS 2 快速入门 npm是什么? npm其实是Node.js Package Manager的简称,是Node.js包管理工具(package manager) 安装Node.js ...
- Angular2入门系列教程3-多个组件,主从关系
上一篇 Angular2项目初体验-编写自己的第一个组件 好了,前面简单介绍了Angular2的基本开发,并且写了一个非常简单的组件,这篇文章我们将要学会编写多个组件并且有主从关系 现在,假设我们要做 ...
- Angular2入门系列教程2-项目初体验-编写自己的第一个组件
上一篇 使用Angular-cli搭建Angular2开发环境 Angular2采用组件的编写模式,或者说,Angular2必须使用组件编写,没有组件,你甚至不能将Angular2项目启动起来 紧接着 ...
- Angular2入门系列教程1-使用Angular-cli搭建Angular2开发环境
一直在学Angular2,百忙之中抽点时间来写个简单的教程. 2016年是前端飞速发展的一年,前端越来越形成了(web component)组件化的编程模式:以前Jquery通吃一切的田园时代一去不复 ...
随机推荐
- 我也来写:数据库访问类DBHelper
一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以 ...
- 转 android 从底部弹出一个popuwindow,渐入渐出效果。我这里是用在购物车需要选择购买选项的操作。
最近要改客户端,需要实现一个从底部弹出的popuwindow,像我这种渣渣android技术,能整出popuwindow但是整不出动画,百度之,记录一下. 从下面这个地址转的 http://blog. ...
- 音乐播放器 EasyMusic (一)
EasyMusic 一. 代码获取 github 上链接为 https://github.com/VincentWYJ/EasyMusic, 感兴趣的朋友可以同步下来看, 欢迎提出宝贵意见或建议. 1 ...
- java certificate 工具 portecle.sourceforge.net
https://sourceforge.net/projects/portecle/?source=directory 当需要处理java证书的时候这个是个好工具.省得敲命令了.
- RedHat/Centos修改root密码
Linux主机忘记密码,只要你能接触物理主机都可以修改root密码的! Redhat6.x 5.x / Centos6.x 5.x 01.开机-空格/enter 02.e-编辑模式 CentO ...
- 微信小程序之明源商城系列-01-商城介绍及开发准备
1,效果展示 数据来自于写的一个小爬虫爬了明源商城部分的数据.由于价格的保密性,下列产品价格和真实的都不同. 1.1 主页及开发文件结构 1.2 产品的详细页面 1.2 产品分类页面 1.3 产品 ...
- CIDR详解和ip最长地址前缀匹配
1.CIDR是什么 无类域间路由(CIDR)编址方案 摒弃传统的基于类的地址分配方式,允许使用任意长度的地址前缀,有效提高地址空间的利用率. 就是一个ip加一个网络掩码,不过这个掩码不是之前只有3个值 ...
- TAC Alpha版本 冲冲冲!!!
第1天 第2天 第3天 第4天 第5天 第6天 第7天 第8天 第9天 第10天 测试随笔 冲刺总结
- Node实践之二
先从一个简单的demo说起,用cmd打开命令提示符,输入echo Hello,大家是不是看到终端上显示出了Hello字样,事实上这就是一个简单的事件. 回到正题,相信提到node.js,免不了让人想起 ...
- mysql5.7导入csv文件
环境: Windows10企业版X64 mysql5.7免安装版(从5.6版本开始,官方不再提供64位的msi版本) 运行mysqld.exe启动mysql进程. 用root登录mysql: mysq ...