详解在ASP.NET Core中使用Angular2以及与Angular2的Tok

Angular2是对Angular1的一次彻底的,破坏性的更新。

相对于Angular1.x,借用某果的广告语,唯一的不同,就是处处都不同。

•首先,推荐的语言已经不再是Javascript,取而代之的TypeScript,(TypeScript = ES6 + 类型系统 + 类型注解), TypeScriipt的类型系统对于开发复杂的单页Web app大有帮助,同时编译成javascript后的执行效率也比大多数手写javascript要快。有兴趣的同学可以查阅官方文档:英文传送门 |中文传送门

•得益于彻底重构,性能相对于Angular1.x有了大幅提升,也更适合再全平台部署。

•Angular2是基于Component的,Component可以理解为是1.x时代的Controller + $Scope + view

•View的很多语法也做了更新,比如<li ng-repeat="movie in vm.movies"></li> 变成了 <li *ngFor="let movie of movies"></li>

关于Angular2,强烈建议查阅官方文档:英文传送门| 中文传送门

注意:本文章属于Step by step + Code Sample教程,且篇幅较长,建议下载本Sample并跟着本文进度自己重做一遍本例,下载完整代码并分析代码结构才有意义,下载地址:How to authorization Angular 2 app with asp.net core web api

1.前期准备

•推荐使用VS2015 Update3或更新的版本完成本示例,下载地址:https://www.jb51.net/softjc/446184.html

•你需要安装.NET Core开发环境,这里提供VS版: https://www.jb51.net/softs/472362.html

•安装Node.js 版本5.0.0或以上,(在本例中,这个主要是编译TypeScript用的)下载地址:Node.js and NPM

•NPM 3.0.0或以上,默认NPM会随着Node.js一并安装完毕。(在本例中,这个主要是下载各种Angular的各个包用的,参考VS中的Nuget)

2.创建项目

在VS中新建项目,项目类型选择 ASP.NET Core Web Application(.Net Core),输入项目名称为:CSAuthorAngular2InASPNetCore,Template选择为Empty.

3.在项目中整合Angular2

3.1.配置Startup.cs

注:添加下面的代码时IDE会报代码错误,这是因为还没有引用对用的包,进入报错的这一行,点击灯泡,加载对应的包就可以了。

详解在ASP.NET Core中使用Angular2以及与Angular2的Tok

(图文无关)

在ConfigureServices中添加如下代码

services.AddMvc();

这里是添加MVC服务

在Configure中添加如下代码

app.UseStaticFiles(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}"); });

第一句是启用静态文件,第二句是应用MVC模式并添加路由配置。

完整的代码应该是这个样子

public class Startup { // This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit ?LinkID=398940 public void ConfigureServices(IServiceCollection services) { services.AddMvc(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { app.UseStaticFiles(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}"); }); } }

3.2.添加控制器以及视图

3.2.1.在项目根目录下添加Controllers目录,并在其中添加一个控制器HomeController.cs,默认代码即可。

3.2.2.在项目跟目录下创建Views目录,在Views目录中新建目录Home, 最后在Home目录中新建视图Index.cshtml,内容应该是这样:

<html> <head> <title>Angular QuickStart</title> <base href="https://www.jb51.net/"> <meta charset="UTF-8"> <meta content="width=device-width, initial-scale=1"> <!-- 1. Load libraries --> <!-- Polyfill(s) for older browsers --> <script src="https://www.jb51.net/node_modules/core-js/client/shim.min.js"></script> <script src="https://www.jb51.net/node_modules/zone.js/dist/zone.js"></script> <script src="https://www.jb51.net/node_modules/reflect-metadata/Reflect.js"></script> <script src="https://www.jb51.net/node_modules/systemjs/dist/system.src.js"></script> <!-- 2. Configure SystemJS --> <script src="https://www.jb51.net/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>

现在运行项目的话你仅仅能看到一个Loading,再控制台中你还能看到错误,这是因为我们还没有配置Angular。让我们前往wwwroot目录。

3.3.在项目的wwwroot目录中添加如下结构:

3.3.1搭建Angular2基础环境

•package.json

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjyzyy.html