Angular2 - Criando uma aplicação no Asp.Net 4.5

  • Rafael Miceli
  • 28 Jul 2016

Minha recomendação quando a este post é cautela. Pois caso você vá criar uma aplicação Green Field com AspNet recomendo que use o AspNet Core.

Se você tiver uma aplicação legada, ou não quer migrar para o novo AspNet Core por algum motivo neste post vou mostrar como você criar uma aplicação Angular2 e serve a mesma com AspNet. Com essa aplicação vamos evoluindo o código e vamos fazendo coisas bem diferentes nela.

Configurando Angular 2

Vamos criar uma aplicação que nos mostre as matérias de escola que temos para cursar, nada muito fancy. Também vou fazendo comparações com o Angular 1 mostrando o que mudou de lá para cá.

Lembrando que o repositório deste exemplo vai estar disponível no Github

Passo 1

Primeiro crie uma aplicação web empty e na raiz da mesma crie 4 arquivos, esse são:

index.html

<!DOCTYPE html>
<html>

<head>
  <base href="/">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">  
</head>

<body>
  <h1>Ola!</h1>
</body>

</html>s

tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "system",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false
  },
  "compileOnSave": true,
  "exclude": [
    "node_modules",
    "typings/main",
    "typings/main.d.ts"
  ]
}

typings.json

{
  "ambientDependencies": {
    "es6-shim": "github:DefinitelyTyped/DefinitelyTyped/es6-shim/es6-shim.d.ts#7de6c3dd94feaeb21f20054b9f30d5dabc5efabd"
  }
}

package.json

{
    "name": "IdeasWihOlive",
    "version": "0.0.1",
    "author": "Rafael Miceli",
    "description": "Package for Blog Test",
    "scripts": {
        "start": "concurrently \"npm run tsc:w\" \"npm run lite\" ",
        "tsc": "tsc",
        "tsc:w": "tsc -w",
        "lite": "lite-server",
        "typings": "typings",
        "postinstall": "typings install"
    },
    "license": "ISC",
  "dependencies": {
    "angular2": "2.0.0-beta.15",
    "systemjs": "0.19.26",
    "es6-shim": "^0.35.0",
    "reflect-metadata": "0.1.2",
    "rxjs": "5.0.0-beta.2",
    "zone.js": "0.6.10",
    "bootstrap": "^3.3.6"
  },
    "devDependencies": {
        "concurrently": "^2.0.0",
        "lite-server": "^2.2.0",
        "typescript": "^1.8.10",
        "typings": "^0.7.12"
    },
    "repository": {}
}

O index.html é aonde nossa aplicação vai inicializar

Mais detalhes sobre o tsconfig.json e o typings.json no post futuro de TypeScript.

O package.json é o arquivo aonde gerenciamos os pacotes que nossa aplicação front-end que no caso é nosso Angular 2

Passo 2

Vamos inicializar o Angular 2 em nosso index.html, para isso nosso index.html vai fica da seguinte maneira:

index.html

<!DOCTYPE html>
<html>

<head>
  <base href="/">

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

  <!-- IE required polyfills, in this exact order -->
  <script src="node_modules/es6-shim/es6-shim.min.js"></script>
  <script src="node_modules/systemjs/dist/system-polyfills.js"></script>
  <script src="node_modules/angular2/es6/dev/src/testing/shims_for_IE.js"></script>

  <!-- Angular polyfill required everywhere -->
  <script src="node_modules/angular2/bundles/angular2-polyfills.js"></script>

  <script src="node_modules/systemjs/dist/system.src.js"></script>
  <script src="node_modules/rxjs/bundles/Rx.js"></script>
  <script src="node_modules/angular2/bundles/angular2.dev.js"></script>
  <script src="node_modules/angular2/bundles/router.dev.js"></script>
  <script src="node_modules/angular2/bundles/http.dev.js"></script>

  <script>
    System.config({packages:{
      api: {format: 'register',defaultExtension: 'js'},
      app: {format: 'register',defaultExtension: 'js'}
    }});
    System.import('app/main')
          .then(null, console.error.bind(console));
  </script>

</head>

<body>
  <h1>Olá</h1>
</body>

</html>

Anteriormente com Angular 1 você precisava utilizar ng-app para indicar que sua aplicação estava usando o Angular e também inicializar o mesmo. Havia uma forma de inicializar o Angular 1 diretamente pelo Javascript.

Com o Angular 2 existe apenas a forma de inicializar pelo Javascript.

Passo 3

Vamos criar nosso ponto de entrada da nossa aplicação Angular 2, ou seja, nosso “Main”. Para isso criamos uma pasta chamada app na raiz do nosso projeto e os seguintes arquivos dentro dessa pasta:

main.ts

import {bootstrap}    from 'angular2/platform/browser';
import {AppComponent} from './app.component';

bootstrap(AppComponent);

app.component.ts

import {Component} from 'angular2/core';

@Component({
    selector: 'materias',
    template: '<h1>Matérias para cursar</h1>',
})
export class AppComponent {     
}

Dentro do main.ts importamos a função bootstrap que vem de angular2/platform/browser, e também nosso Appcomponent que está no caminho ./app.component, que vai ser nosso Root Component

Após importar ambos, chamamos a função bootstrap para inicializarmos nosso AppComponent.

Para finalizar precisamos atualiza nosso index.html, aonde estava a tag: <h1>Olá</h1> vamos substituir pela tag:

<materias>Iniciando...</materias>

Pronto, uma aplicação Angular 2 rodando.

No próximo Post vamos entender melhor o AppComponent e os Components do Angular.

comentarios com Disqus Disqus