如何在ASP.NET 5上搭建基于TypeScript的Angular2项目

一、前言

就在上月,公司的一个同事建议当前的前端全面改用AngularJs进行开发,而我们采用的就是ASP.NET 5项目,原本我的计划是采用TypeScript直接进行Angular2开发。所以借用这段时间来写下如何在ASP.NET 5下搭建基于TypeScript的Angualr2的项目,下面我们就进入正题。

二、环境配置

如果读者直接按照Angular.io上的方式搭建是无法通过的,所以下面我们的教程基本跟Angular.io上的类似,只是其中的配置会有所不同,并且也会多出一些步骤。

1.创建一个空的ASP.NET 5项目

读者必须安装有VS2015,通过“文件”-》“新建”-》“项目”,然后选中如下图中的项目:

其中项目名称读者可以随意取一个,如果读者不想考虑可以命名为“AngularWeb”。接着我们点击确定,继续选中这个:

这样一个空的ASP.NET 5项目就搭建完成了。

2.加载Angular2

因为默认的空项目是没有npm的配置文件,所以我们要新建一个,首先我们右击项目添加一个项,如下图所示(不需要修改文件名)

新建好了之后我们可以看到依赖项下就有npm了,这个时候我们右击这个npm,然后按照如下图所示点击箭头所指的那个项:

打开之后我们在其中输入一下内容:

{
  "name": "angular2-quickstart",
  "version": "1.0.0",
  "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.13",
    "systemjs": "0.19.25",
    "es6-shim": "^0.35.0",
    "reflect-metadata": "0.1.2",
    "rxjs": "5.0.0-beta.2",
    "zone.js": "0.6.6"
  },
  "devDependencies": {
    "concurrently": "^2.0.0",
    "lite-server": "^2.1.0",
    "typescript": "^1.8.9",
    "typings": "^0.7.11",
    "gulp": "^3.9.1"
  }
}

这部分基本和Angular.io上一样,添加完这些内容后保存下,vs2015会自动会恢复npm引用。

3.TypeScript配置

跟新建npm配置文件一样,我们还需要新建一个TypeScript的配置文件,这个时候我们依然还是右击项目通过新建项来创建,如下图所示,对应的文件名不需要更改:

新建完成之后我们打开这个文件,然后输入以下的内容,用来配置TS,这样才能保证我们开发过程中能够使用的到Angular模块以及其他的模块,具体的内容如下所示:

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

读者注意了,其中我们采用的是system的模块管理,如果这里改用了其他的值就会导致运行的时候出现某些函数不存在。配置完以上的还没有结束,我们还需要依赖其他的配置,这个时候我们依然按照上面的部分新建TypeScript配置文件,只是这个时候我们需要修改下对应的文件名,改成“typings.json”,然后讲一下内容复制到其中:

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

当然这一步骤也是官方所需要的,到此为止关于TypeScript的配置就结束了。

4.Gulp配置

因为我们开发的项目都在wwwroot下,但是我们需要引用TypeScript编译好的js文件,而这个过程我们不能通过手动的方式,所以我们需要借用gulp来自动化这一步骤,下面我们新建一个gulp配置文件:

文件名依然是默认,然后在其中输入以下内容,主要就是负责将node_module中我们需要的文件复制到wwwroot下的libs文件夹中:

/// <binding AfterBuild=‘moveToLibs‘ />
var gulp = require(‘gulp‘);

gulp.task(‘moveToLibs‘, function (done) {
    gulp.src([
      ‘node_modules/angular2/bundles/js‘,
      ‘node_modules/angular2/bundles/angular2.*.js*‘,
      ‘node_modules/angular2/bundles/angular2-polyfills.js‘,
      ‘node_modules/angular2/bundles/http.*.js*‘,
      ‘node_modules/angular2/bundles/router.*.js*‘,
      ‘node_modules/es6-shim/es6-shim.min.js*‘,
      ‘node_modules/angular2/es6/dev/src/testing/shims_for_IE.js‘,
      ‘node_modules/systemjs/dist/*.*‘,
      ‘node_modules/jquery/dist/jquery.*js‘,
      ‘node_modules/bootstrap/dist/js/bootstrap*.js‘,
      ‘node_modules/rxjs/bundles/Rx.js‘
    ]).pipe(gulp.dest(‘./wwwroot/libs/‘));

    gulp.src([
      ‘node_modules/bootstrap/dist/css/bootstrap.css‘
    ]).pipe(gulp.dest(‘./wwwroot/libs/css‘));
});

这样我们需要用到gulp的部分就结束了。

5.项目配置

为了网站能够正常使用,所以我们还需要对项目本身进行一些调整,首先我们打开project.json文件,在其中加入一个新的模块,并且加上一些自动化脚本:

这样我们的项目就配置完成了,读者可以生成下项目,如果没有错误我们就继续往下走,如果读者出现了无法解决的问题可以在下方留言。

三、示例开发

如果读者完成了上面的初始化工作,我们就可以完成一个小的工程来验证我们的环境是否单间成功了,首先我们打开wwwroot文件夹,在其中新一个app文件夹。

1.app.component.ts开发

在app文件夹中新建该文件,然后在其中输入一下内容:

import {Component} from ‘angular2/core‘;

@Component({
    selector: ‘my-app‘,
    template: ‘<h1>My First Angular 2 App</h1>‘
})
export class AppComponent { }

这样我们就完成了一个组件的开发。

2.main.ts开发

在app文件夹中新建该文件,我们的入口文件夹将使用以下文件,并且其中会使用到我们上面创建的那个组件。

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

bootstrap(AppComponent);

3.style.css开发

为了能够让我们的结果具有比较良好的样式,所以这里我们在wwwroot下新建该样式文件,然后在其中输入以下内容:

/* 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;
}
body, input[text], button {
  color: #888;
  font-family: Cambria, Georgia;
}

4.index.html开发

我们在wwwroot下新建该文件,我们将在其中使用以上开发的内容,并且显示最终的效果,具体的内容如下所示:

<html>
<head>
    <title>Angular 2 QuickStart</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="styles.css">
    <script src="libs/es6-shim.min.js"></script>
    <script src="libs/system-polyfills.js"></script>
    <script src="libs/shims_for_IE.js"></script>
    <script src="libs/angular2-polyfills.js"></script>
    <script src="libs/system.js"></script>
    <script src="libs/Rx.js"></script>
    <script src="libs/angular2.dev.js"></script>

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

<body>
    <my-app>Loading...</my-app>
</body>
</html>

如果libs下没有自动将我们需要的js文件复制到其中,我们可以通过cmd调整当项目的根目录下通过“gulp moveToLibs”命令手动执行。

最终效果:

时间: 2024-11-04 01:38:13

如何在ASP.NET 5上搭建基于TypeScript的Angular2项目的相关文章

Mac 上搭建基于 Hexo + GitHub 个人博客

环境配置 本人电脑系统:macOS Node.js 生成静态页面.安装Node.js Git 用于将本地 Hexo 内容提交到 Github.Xcode自带Git(前提:macOS已经安装了Xcode),若没有,可以参考 Hexo官网上的安装方法. 安装 Hexo 当 Node.js 和 Git 都安装好后,就可以正式安装 Hexo 了,终端执行如下命令: $ sudo npm install -g hexo 输入管理员密码(Mac 登陆密码)即可开始安装. 注: sudo:linux系统管理指

解决基于TypeScript 的 RN项目相对路径引入组件的问题

一.前言 在开发RN项目时,经常会要使用这样的方式(../../../)来引入组件,感觉非常繁琐,如果项目结构层级比较多,引入的头部更加分不清. 那有没有一种方案和vue项目一样,经过配置后简写路径,在引入的时候,直接使用,例如vue项目中 @ 符号表示 src目录. 经过百度后,发现还是有这种类似的配置. 但尝试过网上的几种方案,都没起作用,主要是由于我的项目是基于 RN(0.59.5) + TypeScript搭建的. 二.尝试过的错误方案 1. 在文件夹中加入 package.json 例

K8s在LinuxONE上搭建 基于RHEL7 操作系统(一)

一.介绍 Kubernetes 是当前炙手可热的技术,它已然成为可开源界的PASS管理平台的标准,当下文章对大多数是对X86平台搭建Kubernetes平台,下面笔者进行在LinuxONE上搭建开源的Kubernetes平台.搭建K8S 平台主流的有两种方法, 第一种是基于二进制的搭建,通过一步一步的搭建可以加深对K8S各个服务的理解. 官方推荐的自动化部署工具 kubeadm本次使用官方推荐的Kubeadm 的搭建方法, kubedm 把K8S 自身的服务都被K8S自身的pod,除此之外事先的

在Fedora 21上搭建Jenkins+SonarQube的Maven项目自动化测试平台

自动化测试是敏捷开发模型下的一大助力,有了它,测试及开发团队能及时的掌控软件质量和迭代周期,能更好的为软件产品服务,促进软件质量的提升和提高开发的效率. 好处很多,我就不一一说明了. 最近,公司将要开发新产品(分校系统),为了避免敏捷开发下无序,沟通不畅,质量不高等等缺点,决定上自动化测试平台,解放测试团队,让其专注于更多的业务理解工作,也从另一个方面规范所有程序员的开发. 好了,废话不多说,上硬货. 准备阶段 首先需要下载SonarQube和Jenkins.另外,还要先安装好MySQL数据库和

使用ntopng,在Linux上搭建基于Web的网络流量监控系统

Ntopng 简介: Ntopng是原ntop下一代版本,用于网络流量实时监控显示.Ntopng类似于RMON远端网络监控代理,具有内置的Web服务能力,使用redis键值服务按时间序列存储统计信息.你可以在任何指定的监控服务器上安装ntopng,只需使用任一web浏览器,就能实时访问服务器上的流量报告了. Ntopng 常用功能说明: 根据许多协议对网络流量进行排序: 显示网络流量和IPv4/v6的活动主机: 显示主机的地理位置: 显示IP的各种协议流量分布: 根据源/目的IP流量分析和排序:

在CentOS上搭建基于Nodejs的Ghost博客

Ghost介绍 Ghost 是基于 Node.js 构建的开源博客平台.Ghost 具有易用的书写界面和体验,博客内容默认采用Markdown 语法 书写.Ghost 的目标是取代臃肿的 Wordpress. 搭建Ghost博客系统 1.本机测试环境 [[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [[email protected] ~]# uname -r 3.10.0-5

在 Windows 上搭建基于Android Studio 3.2 的 Flutter 开发环境

1.安装和配置好Android Studio 3.2 (Android Studio 的安装路径为:D:\Android\Android Studio:Android SDK路径为:D:\Android\sdk)2.去flutter官网下载其最新可用的安装包,点击下载(https://flutter.io/sdk-archive/#windows) :3.解压 flutter_windows_v1.0.0-stable.zip 到D:\android(解压后路径为:D:\android\flut

使用IDEA快速搭建基于Maven的SpringBoot项目

迫于好久没写博客心慌慌,随便写个简单版的笔记便于查阅. 新建项目 新建项目 然后起名 继续next netx finish. 首先附上demo的项目结构图 配置pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001

odoo10.0在odoo12.0环境的基础上搭建环境

在前边的文章中,讲述了如何搭建12.0的环境,现由业务的需要需要在此基础上搭建基于python2.7的10.0版本. 第一步,安装python2.7 sudo apt-get install python2.7 第二步,安装python-dev sudo apt-get install python-dev 第三步,安装python2.7对应的虚拟环境 vitualenv -p python2.7 odoo-10.0 第四步,安装odoo10.0的依赖 pip install -r odoo-1