Easy Tutorial
❮ Angularjs2 Architecture Angularjs2 Tutorial ❯

Angular 2 TypeScript Environment Configuration

This section uses TypeScript to create Angular applications, which is the official recommendation. The examples in this tutorial will also be written in TypeScript.

TypeScript is a free and open-source programming language developed by Microsoft. It is a superset of JavaScript, extending its syntax.

If you are not familiar with TypeScript, you can refer to the following resources:

Before starting, you need to ensure that you have npm installed. If you haven't installed npm or are unfamiliar with it, you can check our tutorial: NPM Introduction.

Due to the slow access to the npm official mirror in China, I use the Taobao npm mirror. The installation method is as follows:

$ npm install -g cnpm --registry=https://registry.npmmirror.com

After execution, we can use the cnpm command to install modules:

$ cnpm install

Step 1: Create and Configure the Project

Create Directory

$ mkdir angular-quickstart
$ cd angular-quickstart

Create Configuration Files

An Angular project requires the following configuration files:

Create the following files in the angular-quickstart directory with the following code:

package.json File:

{
  "name": "angular-quickstart",
  "version": "1.0.0",
  "scripts": {
    "start": "tsc && concurrently \"npm run tsc:w\" \"npm run lite\" ",
    "lite": "lite-server",
    "postinstall": "typings install",
    "tsc": "tsc",
    "tsc:w": "tsc -w",
    "typings": "typings"
  },
  "license": "ISC",
  "dependencies": {
    "@angular/common": "2.0.0",
    "@angular/compiler": "2.0.0",
    "@angular/core": "2.0.0",
    "@angular/forms": "2.0.0",
    "@angular/http": "2.0.0",
    "@angular/platform-browser": "2.0.0",
    "@angular/platform-browser-dynamic": "2.0.0",
    "@angular/router": "3.0.0",
    "@angular/upgrade": "2.0.0",
    "core-js": "^2.4.1",
    "reflect-metadata": "^0.1.3",
    "rxjs": "5.0.0-beta.12",
    "systemjs": "0.19.27",
    "zone.js": "^0.6.23",
    "angular2-in-memory-web-api": "0.0.20",
    "bootstrap": "^3.3.6"
  },
  "devDependencies": {
    "concurrently": "^2.2.0",
    "lite-server": "^2.2.2",
    "typescript": "^2.3.4",
    "typings":"^1.3.2"
  }
}

tsconfig.json File:

{
  "compilerOptions": {
    "target": "es5",
{
  "module": "commonjs",
  "moduleResolution": "node",
  "sourceMap": true,
  "emitDecoratorMetadata": true,
  "experimentalDecorators": true,
  "removeComments": false,
  "noImplicitAny": false
}

typings.json file:

{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160725163759",
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
    "node": "registry:dt/node#6.0.0+20160909174046"
  }
}

systemjs.config.js file:

/**
 * System configuration for Angular samples
 * Adjust as necessary for your application needs.
 */
(function (global) {
  System.config({
    paths: {
      // paths serve as alias
      'npm:': 'node_modules/'
    },
    // map tells the System loader where to look for things
    map: {
      // our app is within the app folder
      app: 'app',
      // angular bundles
      '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
      '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
      '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
      '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
      '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
      '@angular/http': 'npm:@angular/http/bundles/http.umd.js',
      '@angular/router': 'npm:@angular/router/bundles/router.umd.js',
      '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',
      // other libraries
      'rxjs': 'npm:rxjs',
      'angular2-in-memory-web-api': 'npm:angular2-in-memory-web-api',
    },
    // packages tells the System loader how to load when no filename and/or no extension
    packages: {
      app: {
        main: './main.js',
        defaultExtension: 'js'
      },
      rxjs: {
        defaultExtension: 'js'
      },
      'angular2-in-memory-web-api': {
        main: './index.js',
        defaultExtension: 'js'
      }
    }
  });
})(this);

Next, we use the cnpm command to install the dependencies:

$ cnpm install

After successful execution, a node_modules directory will be generated under the angular-quickstart directory, which contains the modules required for this example. We can take a look at the project's directory structure:


Step 2: Create the Application

We organize the Angular application into functional blocks of code using NgModules.

Angular itself is split into several independent Angular modules, so we only need to import the required parts of Angular into our application.

Every Angular application requires at least one root module, which in this example is AppModule.

Next, we create an app directory under the angular-quickstart directory:

$ mkdir app
$ cd app

Then, create the app.module.ts file under the app directory with the following code:

app.module.ts File:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';

@NgModule({
  imports: [ BrowserModule ]
})
export class AppModule { }

Since QuickStart is a web application running in the browser, the root module needs to import BrowserModule from @angular/platform-browser and add it to the imports array.

Create a Component and Add it to the Application

Every Angular application has at least one root component, which in this example is AppComponent. The app.component.ts file contains the following code:

app.component.ts File:

import { Component } from '@angular/core';
@Component({
  selector: 'my-app',
  template: '<h1>My First Angular Application</h1>'
})
export class AppComponent { }

Code Analysis:

Next, reopen the app.module.ts file, import the new AppComponent, and add it to the declarations and bootstrap fields of the NgModule decorator:

app.module.ts File:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';

@NgModule({
  imports: [ BrowserModule ],
  declarations: [ AppComponent ],
  bootstrap: [ AppComponent ]
})
export class AppModule { }

Step 4: Start the Application

Next, we need to tell Angular how to start the application.

Create the main.ts file under the angular-quickstart/app directory with the following code:

main.ts File:

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app.module';

const platform = platformBrowserDynamic();
platform.bootstrapModule(AppModule);

The above code initializes the platform, allowing your code to run, and then starts your AppModule on that platform.


Define the Host Page for the Application

Create the index.html file under the angular-quickstart directory with the following code:

index.html File:

<html>
<head>
    <title>Angular 2 Example - tutorialpro.org(tutorialpro.org)</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="styles.css">
    <!-- 1. Load libraries -->
    <!-- Polyfills 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>
    <my-app>Loading...</my-app>
  </body>
</html>

Here are some noteworthy points:

Adding Some Styles

We can set the styles we need in the styles.css file in the angular-quickstart directory:

styles.css File:

/* Master Styles */
h1 {
  color: #369;
  font-family: Arial, Helvetica, sans-serif;
  font-size: 250%;
}
h2, h3 {
  color: #444;
  font-family: Arial, Helvetica, sans-serif;
  font-weight: lighter;
}
body {
  margin: 2em;
}

Step 6: Compile and Run the Application

Open a terminal window and enter the following command:

npm start

Visit http://localhost:3000/, the browser displays the result:

This completes the creation of our first Angular2 application, with the final directory structure being:

The source code used in this article can be downloaded in the following way, excluding the node_modules and typings directories.

Source Code Download ```

❮ Angularjs2 Architecture Angularjs2 Tutorial ❯