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 添加包定义与配置文件

往项目目录下添加下列包定义与配置文件:

  1. package.json 列出hellworld 程序的依赖,并定义了一些有用的脚本。

{

"name":
"ng2-helloworld",

"version": "1.0.0",

"description": "hello
world",

"scripts": {

"start": "tsc &&
concurrently \"npm run tsc:w\" \"npm run lite\" ",

"lite":
"lite-server",

"tsc": "tsc",

"tsc:w": "tsc -w"

},

"license": "ISC",

"dependencies": {

"@angular/common":
"2.0.0-rc.4",

"@angular/compiler":
"2.0.0-rc.4",

"@angular/core":
"2.0.0-rc.4",

"@angular/forms":
"0.2.0",

"@angular/http":
"2.0.0-rc.4",

"@angular/platform-browser":
"2.0.0-rc.4",

"@angular/platform-browser-dynamic": "2.0.0-rc.4",

"@angular/router":
"3.0.0-beta.1",

"systemjs":
"0.19.27",

"core-js": "^2.4.0",

"reflect-metadata":
"^0.1.3",

"rxjs":
"5.0.0-beta.6",

"zone.js": "^0.6.12",

"bootstrap": "^3.3.6"

},

"devDependencies": {

"concurrently":
"^2.0.0",

"lite-server":
"^2.2.0",

"typescript":
"^1.8.10"

}

}

  1. tsconfig.json 是 TypeScript 的编译器配置文件。

{

"compilerOptions": {

"target": "es5",

"module": "commonjs",

"moduleResolution":
"node",

"sourceMap": true,

"emitDecoratorMetadata": true,

"experimentalDecorators": true,

"removeComments": false,

"noImplicitAny": false

}

}

  1. systemjs.config.js 是 SystemJS 的配置文件,本程序采用SystemJS作为模块加载器。

/**

* System configuration for Angular 2 samples

* Adjust as necessary for your application
needs.

*/

(function (global) {

// map tells the System loader where to
look for things

var map = {

'app': 'app', // 'dist',

'@angular': 'node_modules/@angular',

'rxjs': 'node_modules/rxjs'

};

// packages tells the System loader how to
load when no filename and/or no extension

var packages = {

'app': { main: 'main.js',
defaultExtension: '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:
'index.js', defaultExtension: 'js' };

}

// Bundled (~40 requests):

function packUmd(pkgName) {

packages['@angular/' + pkgName] = { main:
'/bundles/' + pkgName + '.umd.js', defaultExtension: 'js' };

}

// Most environments should use UMD; some
(Karma) need the individual index files

var setPackageConfig =
System.packageWithIndex ? packIndex : packUmd;

// 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 }
from '@angular/core';

@Component({

selector: 'app',

template:'<h1>hello
world</h1>'

})

export class
AppComponent {

}

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 }
from '@angular/platform-browser-dynamic';

import { AppComponent
} from './app’;

bootstrap(AppComponent)

.then(success =>
console.log(`Bootstrap success`))

.catch(error => console.log(error));

我们引入了两样东西来启动本应用:

  1. Angular 的浏览器 bootstrap(引导) 函数
  2. 应用的根组件: AppComponent 。

然后,调用 bootstrap 函数,并且把 AppComponent 传进去。启动函数与应用程序是两个相互分离的关注点。

6. 创建宿主页面

在ng2-helloworld 创建一个文件 index.html 作为Angular程序的宿主页面。

<html>

<head>

<title>hello world</title>

<meta charset="UTF-8">

<meta name="viewport"
content="width=device-width, initial-scale=1">

<!-- 1. Load libraries -->

<!-- Polyfill(s) for older browsers
-->

<script
src="node_modules/core-js/client/shim.min.js"></script>

<script
src="node_modules/zone.js/dist/zone.js"></script>

<script
src="node_modules/reflect-metadata/Reflect.js"></script>

<script
src="node_modules/systemjs/dist/system.src.js"></script>

<!-- 2. Configure SystemJS -->

<script
src="systemjs.config.js"></script>

<script>

System.import('app').catch(function(err){
console.error(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 入门的更多相关文章

  1. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  2. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  3. Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数

    上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...

  4. Angular2入门系列教程4-服务

    上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...

  5. Angular2入门系列(五)———— 路由参数设置

    Angular2入门系列(五)---- 路由参数设置路由配置: { path: '', component: CarProFile, children: [ { path: 'add', compon ...

  6. Angular2 入门详解

    AngularJS 2 快速入门 npm是什么?   npm其实是Node.js Package Manager的简称,是Node.js包管理工具(package manager) 安装Node.js ...

  7. Angular2入门系列教程3-多个组件,主从关系

    上一篇 Angular2项目初体验-编写自己的第一个组件 好了,前面简单介绍了Angular2的基本开发,并且写了一个非常简单的组件,这篇文章我们将要学会编写多个组件并且有主从关系 现在,假设我们要做 ...

  8. Angular2入门系列教程2-项目初体验-编写自己的第一个组件

    上一篇 使用Angular-cli搭建Angular2开发环境 Angular2采用组件的编写模式,或者说,Angular2必须使用组件编写,没有组件,你甚至不能将Angular2项目启动起来 紧接着 ...

  9. Angular2入门系列教程1-使用Angular-cli搭建Angular2开发环境

    一直在学Angular2,百忙之中抽点时间来写个简单的教程. 2016年是前端飞速发展的一年,前端越来越形成了(web component)组件化的编程模式:以前Jquery通吃一切的田园时代一去不复 ...

随机推荐

  1. 我也来写:数据库访问类DBHelper

    一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以 ...

  2. 转 android 从底部弹出一个popuwindow,渐入渐出效果。我这里是用在购物车需要选择购买选项的操作。

    最近要改客户端,需要实现一个从底部弹出的popuwindow,像我这种渣渣android技术,能整出popuwindow但是整不出动画,百度之,记录一下. 从下面这个地址转的 http://blog. ...

  3. 音乐播放器 EasyMusic (一)

    EasyMusic 一. 代码获取 github 上链接为 https://github.com/VincentWYJ/EasyMusic, 感兴趣的朋友可以同步下来看, 欢迎提出宝贵意见或建议. 1 ...

  4. java certificate 工具 portecle.sourceforge.net

    https://sourceforge.net/projects/portecle/?source=directory 当需要处理java证书的时候这个是个好工具.省得敲命令了.

  5. RedHat/Centos修改root密码

    Linux主机忘记密码,只要你能接触物理主机都可以修改root密码的!   Redhat6.x 5.x  / Centos6.x  5.x 01.开机-空格/enter 02.e-编辑模式 CentO ...

  6. 微信小程序之明源商城系列-01-商城介绍及开发准备

    1,效果展示 数据来自于写的一个小爬虫爬了明源商城部分的数据.由于价格的保密性,下列产品价格和真实的都不同. 1.1 主页及开发文件结构 1.2  产品的详细页面 1.2  产品分类页面 1.3 产品 ...

  7. CIDR详解和ip最长地址前缀匹配

    1.CIDR是什么 无类域间路由(CIDR)编址方案 摒弃传统的基于类的地址分配方式,允许使用任意长度的地址前缀,有效提高地址空间的利用率. 就是一个ip加一个网络掩码,不过这个掩码不是之前只有3个值 ...

  8. TAC Alpha版本 冲冲冲!!!

    第1天 第2天 第3天 第4天 第5天 第6天 第7天 第8天 第9天 第10天 测试随笔 冲刺总结

  9. Node实践之二

    先从一个简单的demo说起,用cmd打开命令提示符,输入echo Hello,大家是不是看到终端上显示出了Hello字样,事实上这就是一个简单的事件. 回到正题,相信提到node.js,免不了让人想起 ...

  10. mysql5.7导入csv文件

    环境: Windows10企业版X64 mysql5.7免安装版(从5.6版本开始,官方不再提供64位的msi版本) 运行mysqld.exe启动mysql进程. 用root登录mysql: mysq ...