• 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已经弄完了,之后的东西慢慢研究!

  • 相关阅读:
    《感想都是碎片》
    我容易么我……
    elvish Template Library
    可以直接在C++里面写类似RSL的shader了
    全身和鞘内注射依那西普抑制糖尿病小鼠的触觉异常痛敏
    针对英夫利昔单抗或阿达木单抗的抗体存在与否决定转用依那西普的疗效
    全基因组关联研究发现TNF抑制剂治疗RA与7个位点的多态性有关
    依那西普治疗幼年型特发性关节炎的疗效
    强直性脊柱炎中的髋关节受累:流行病学和髋关节置换术的相关危险因素
    长期使用依那西普对幼年型特发性关节炎患儿生长的影响
  • 原文地址:https://www.cnblogs.com/du-blog/p/5861064.html
Copyright © 2020-2023  润新知