zoukankan      html  css  js  c++  java
  • 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 }
    View Code

      二、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 });
    View Code

      三、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 }
    View Code

      四、现在我们依次看一下用到的几个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);
    View Code

      六、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>
    View Code

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

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


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

  • 相关阅读:
    Win32K里的死循环
    Oracle 经常使用命令小结
    ImageView 会盖掉ScrollView的OnTouchListener,监听Activity的手势
    怎样安装pip--python的包管理工具
    设计模式-模板方法
    django中怎样生成非HTML格式的内容。
    SharePoint 2013 设置自己定义布局页
    Android读写JSON格式的数据之JsonWriter和JsonReader
    基于Linux 3.0.8 Samsung FIMC(S5PV210) 的摄像头驱动框架解读(一)
    BZOJ-1923-外星千足虫-SDOI2010
  • 原文地址:https://www.cnblogs.com/du-blog/p/5861064.html
Copyright © 2011-2022 走看看