Angular2 Hello World 之 RC6

  angular2还没有发布正式版,确实有点不靠谱,变化太频繁,之前写的demo直接将js升级到最新版之后发现就不能用了……所以现在在写一篇demo——基于RC6。参考:http://web3.codeproject.com/Articles/1124864/ASP-NET-Core-and-Angular-Code-Venture-Part

  首先还是先创建一个ASP.NET Core Web Application空应用程序。还是在Startup.cs类中添加静态文件处理,下面说一下几处和上一篇中有区别的地方。

  一、NPM 配置文件——package.json,代码如下:

 1 {
 2   "version": "1.0.0",
 3   "name": "asp.net",
 4   "private": true,
 5   "dependencies": {
 6     "@angular/common": "2.0.0-rc.6",
 7     "@angular/compiler": "2.0.0-rc.6",
 8     "@angular/core": "2.0.0-rc.6",
 9     "@angular/platform-browser": "2.0.0-rc.6",
10     "@angular/platform-browser-dynamic": "2.0.0-rc.6",
11     "@angular/upgrade": "2.0.0-rc.6",
12
13     "core-js": "^2.4.1",
14     "reflect-metadata": "^0.1.3",
15     "rxjs": "5.0.0-beta.6",
16     "systemjs": "^0.19.37",
17     "typings": "^1.3.2",
18     "zone.js": "^0.6.12",
19     "moment": "^2.14.1"
20   },
21
22   "devDependencies": {
23     "gulp": "^3.9.1",
24     "typescript": "^1.8.10"
25   },
26   "scripts": {
27     "postinstall": "typings install dt~core-js --global"
28   }
29 }

  二、Gulp 配置文件——gulpfile.js,这次移动的js文件要多一些,代码如下:

 1 var gulp = require(‘gulp‘);
 2
 3 /// Define paths
 4 var srcPaths = {
 5     js: [
 6         ‘node_modules/core-js/client/shim.min.js‘,
 7         ‘node_modules/zone.js/dist/zone.js‘,
 8         ‘node_modules/reflect-metadata/Reflect.js‘,
 9         ‘node_modules/systemjs/dist/system.src.js‘,
10         ‘node_modules/typescript/lib/typescript.js‘,
11         ‘node_modules/moment/moment.js‘
12     ],
13     js_angular: [
14         ‘node_modules/@angular/**‘
15     ],
16     js_rxjs: [
17         ‘node_modules/rxjs/**‘
18     ]
19 };
20
21 var destPaths = {
22     js: ‘wwwroot/js/‘,
23     js_angular: ‘wwwroot/js/@angular/‘,
24     js_rxjs: ‘wwwroot/js/rxjs/‘
25 };
26
27 // Copy all JS files from external libraries to wwwroot/js
28 gulp.task(‘js‘, function () {
29     gulp.src(srcPaths.js_angular)
30         .pipe(gulp.dest(destPaths.js_angular));
31     gulp.src(srcPaths.js_rxjs)
32         .pipe(gulp.dest(destPaths.js_rxjs));
33     return gulp.src(srcPaths.js)
34         .pipe(gulp.dest(destPaths.js));
35 });

  三、TypeScript JSON配置文件——tsconfig.json,还是放在项目根目录下的typescript(用于存放ts文件)文件夹下,代码如下:

 1 {
 2   "compilerOptions": {
 3     "emitDecoratorMetadata": true,
 4     "experimentalDecorators": true,
 5     "module": "system",
 6     "moduleResolution": "node",
 7     "noImplicitAny": false,
 8     "noEmitOnError": false,
 9     "removeComments": false,
10     "target": "es5",
11     "outDir": "../wwwroot/app"
12   },
13   "exclude": [
14     "node_modules",
15     "wwwroot"
16   ]
17
18 }

  四、现在我们依次看一下用到的几个ts文件:

1 import {Component} from "@angular/core";
2
3 @Component({
4     selector: ‘angularjs2demo‘,
5     template: `<h1>AngularJS 2 Demo</h1><div>Hello ASP.NET Core! Greetings from AngularJS 2.</div>`
6 })
7
8 export class AppComponent { }  

app.component.ts

 1 import {NgModule} from "@angular/core";
 2 import {BrowserModule} from "@angular/platform-browser";
 3 import "rxjs/Rx";
 4
 5 import {AppComponent} from "./app.component";
 6
 7 @NgModule({
 8     // directives, components, and pipes
 9     declarations: [
10         AppComponent
11     ],
12     // modules
13     imports: [
14         BrowserModule
15     ],
16     // providers
17     providers: [
18     ],
19     bootstrap: [
20         AppComponent
21     ]
22 })
23 export class AppModule { }  

app.module.ts

1 import {platformBrowserDynamic} from "@angular/platform-browser-dynamic";
2 import {AppModule} from "./app.module";
3
4 platformBrowserDynamic().bootstrapModule(AppModule);

boot.ts

  五、systemjs.config.js,该文件在wwwroot目录中,代码如下:

 1 (function (global) {
 2     System.config({
 3         paths: {
 4             // paths serve as alias
 5             ‘npm:‘: ‘js/‘
 6         },
 7         // map tells the System loader where to look for things
 8         map: {
 9             // our app is within the app folder
10             app: ‘app‘,
11
12             // angular bundles
13             ‘@angular/core‘: ‘npm:@angular/core/bundles/core.umd.js‘,
14             ‘@angular/common‘: ‘npm:@angular/common/bundles/common.umd.js‘,
15             ‘@angular/compiler‘: ‘npm:@angular/compiler/bundles/compiler.umd.js‘,
16             ‘@angular/platform-browser‘: ‘npm:@angular/platform-browser/bundles/platform-browser.umd.js‘,
17             ‘@angular/platform-browser-dynamic‘: ‘npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js‘,
18
19             // angular testing umd bundles
20             ‘@angular/core/testing‘: ‘npm:@angular/core/bundles/core-testing.umd.js‘,
21             ‘@angular/common/testing‘: ‘npm:@angular/common/bundles/common-testing.umd.js‘,
22             ‘@angular/compiler/testing‘: ‘npm:@angular/compiler/bundles/compiler-testing.umd.js‘,
23             ‘@angular/platform-browser/testing‘: ‘npm:@angular/platform-browser/bundles/platform-browser-testing.umd.js‘,
24             ‘@angular/platform-browser-dynamic/testing‘: ‘npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic-testing.umd.js‘,
25
26             // other libraries
27             ‘rxjs‘: ‘npm:rxjs‘
28         },
29         // packages tells the System loader how to load when no filename and/or no extension
30         packages: {
31             app: {
32                 main: ‘./boot.js‘,
33                 defaultExtension: ‘js‘
34             },
35             rxjs: {
36                 defaultExtension: ‘js‘
37             }
38         }
39     });
40 })(this);

  六、index.html,该文件在wwwroot目录中,代码如下:

 1 <html>
 2 <head>
 3     <base href="/">
 4     <title>ASP.NET Core with Angular 2 RC Demo</title>
 5     <meta name="viewport" content="width=device-width, initial-scale=1">
 6     <!-- Step 1. Load libraries -->
 7     <!-- Polyfill(s) for older browsers -->
 8     <script src="js/shim.min.js"></script>
 9     <script src="js/zone.js"></script>
10     <script src="js/Reflect.js"></script>
11     <script src="js/system.src.js"></script>
12     <!-- Angular2 Native Directives -->
13     <script src="js/moment.js"></script>
14     <!-- Step 2. Configure SystemJS -->
15     <script src="systemjs.config.js"></script>
16     <script>
17       System.import(‘app‘).catch(function(err){ console.error(err); });
18     </script>
19 </head>
20 <!-- Step 3. Display the application -->
21 <body>
22     <!-- Application PlaceHolder -->
23     <angularjs2demo>Please wait...</angularjs2demo>
24 </body>
25 </html>

  至此,所有的升级已经完成,然后执行Gulp任务,编译解决方案,最后生成的目录结构如下图:

  现在可以检查一下我们修改的成果,如下图:

  angular2 RC6的demo已经弄完了,之后的东西慢慢研究!

时间: 2024-10-11 10:59:59

Angular2 Hello World 之 RC6的相关文章

angular2升级到rc6

之前做的小demo是RC4的,这一两个月官网就跟新到RC6了,当然就要紧跟步伐前进啦: 升级的过程是痛苦的,但结果是开心的. 看过RC4的童鞋应该会知道RC6改变了很多,来了一个釜底抽薪.新增了一个NgModule.模块管理. 就此RC6就形成了Module-component-router-service的一个整体.使整个条理更加清楚明白. module块的复用更加灵活. 先说一下升级吧,RC4没有Module的概念,所以首先为她添加根Module.然后为每一个component添加一个Mod

[Angular 2] 0. RC6: Start with Angular2

Create a index.html: <!DOCTYPE html> <html> <head> <title>Really Understanding Angular 2 - The Fundamentals</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel=&

Angular2 Hello World 之 2.0

最近angular2正式版发布了,现在就趁热接着记录一下2.0版的Hello World.据说由RC6升级到2.0代码改动不是很大,在写的时候也感觉改动不是很大,这次记录还是以asp.net core 空项目模板为基础,本着在此基础上添加最少的代码来实现Hello World,没用的代码全部清掉(用的时候再引入). 一.准备工作. 首先,创建一个asp.net core空项目,并在Startup.cs类中添加“静态文件支持”:然后,在项目根目录下添加NPM配置文件.Gulp配置文件和typesc

最新Angular2案例rebirth开源

在过去的几年时间里,Angular1.x显然是非常成功的.但由于最初的架构设计和Web标准的快速发展,逐渐的显现出它的滞后和不适应.这些问题包括性能瓶颈.滞后于极速发展的Web标准.移动化多平台应用,学习难度等. 所以Angular团队最终决定以全新方式构建Angular2框架.Angular2框架现在已经进入RC6版本,很快它就将进入最终发布版.Angular2带来了很多不错的特性,它们包括跨平台.高性能.高效开发,拥抱web标准等等. 由于在Angular中引入了render层隔离设计,所以

Angular2 Hello World 之 2.0.0-beta.14

公司现在采用angualrjs开发一些web应用,采用的是angular1,现在angular2已经差不多了,听说最近rc6已经出来了……其实感觉好慢啊!之前也做过一些anglar2的例子,但是没有记录下来,现在重新拾起来还费了半天劲儿!弄了半天总是报错,按着文件对比了半天也没有找打是哪里写错了……哎!最后发现是版本的问题,这次想把它记录下来,方便之后查看. 环境:Visual Studio 2015 Update 3+Asp.net core templates  一.创建一个 Asp.net

angular2开发01

angular2开发01 1. angular2 开发准备 1.1. 安装node 1.2. 安装npm 1.3. 运行qickStart 1 angular2 开发准备 开发环境是linux mint 17.3 64位 1.1 安装node node在linux的部署主要有三种方式,第一种方式,使用apt-get install nodejs安装,这种方式有缺点,安装后的版本太低(0.10),官网都已经到4.5了; 第二种就是自己下载源码,手动编译二进制,这种方式要求有点高,属于高级用 户方式

[Step-By-Step Angular2](1)Hello World与自动化环境搭建

随着rc(release candidate,候选版本)版本的推出,万众瞩目的angular2终于离正式发布不远啦!五月初举办的ng-conf大会已经过去了整整一个月,大多数api都如愿保持在了相对稳定的状态——当然也有router这样的例外,在rc阶段还在大面积返工,让人颇为不解——不过总得说来,现在学习angular2不失为一个恰当的时机. Google为angular2准备了完善的文档和教程,按理说,官网(https://angular.io)自然是学习新框架的最好教材.略显遗憾的是,在B

浅谈angular2与angularJS的区别

简介 大家好,今天给大家介绍一下angular,相信做过前端的小伙伴们都知道angular的大名,angularJS自2012年发布起就受到了大家的广泛关注.他首次提出了双向绑定概念让所有人都耳目一新,2016年angular2正式被发布,那么angular2到底有什么值得期待的地方呢,接下来讲一下angular2吸引人的地方. 1.1.1  angularJS的困境以及angular2的新特性 首先呢我们讨论一下angularJS的一些不足之处: 1.饱受诟病的性能问题 通过检查进行数据更新,

angular2系列教程(九)Jsonp、URLSearchParams、中断选择数据流

大家好,今天我们要讲的是http模块的第二部分,主要学习ng2中Jsonp.URLSearchParams.observable中断选择数据流的用法. 例子 例子的第一个程序,上节课已经讲过了.这节课我们学习第二个程序,从wiki的api中跨域获取数据,可实现300毫秒内中断和选择最近请求等炫酷功能,这些功能都来自于observable! 运行方法: 在http目录或者上级目录起个服务即可: http-server 没有则需要安装http-server: sudo npm install htt