.NET CORE 1.0, MVC6 & ANGULARJS2 -启动
表的内容: ASP的设置环境概述。net从。net Core 1.0开始。探索初始模板(空)如何添加mvc6 angularjs2 使用包管理器(NPM)管理客户端依赖关系。使用类型脚本使用任务运行器引导 构建和运行应用程序 1. 设置环境 先决条件:需要以下先决条件。 Visual Studio 2015 asp。1.0网络核心 Visual Studio 2015:如果你已经安装了Visual Studio 2015的副本,你可以用update 3更新Visual Studio 2015。 或 免费下载Visual Studio Community 2015。 net核心下载: 你可以下载其中一项: net核心SDK 工具。net Core 1.0.0—VS 2015工具预览2(使用。net Core运行时运行应用程序) 我们都准备好了要走。在深入我们的主题之前,让我们先来概述一下ASP.Net。 2. 在ASP.Net上概述 让我们区分两种。 net框架: 仅在Windows平台上开发和运行。构建在。net框架运行时上。支持(MVC, Web API &依赖注入(DI)。MVC,Web Api控制器是分开的。 ,。Net核心: 开源的。发达,在跨平台上运行。构建在。net核心运行时上也是在。net框架上。动态编译的工具。内置依赖注入(DI)。MVC,Web Api控制器是统一的,从相同的基类继承。智能工具(Bower, NPM, Grunt &)杯)。命令行工具。 3.从。net Core 1.0开始 让我们用Visual Studio 2015 >创建一个新项目;文件比;新比;项目 选择空模板,点击>好的。 Visual Studio将创建一个新的asp.net项目。Net Core空项目。 现在我们将逐个研究所有初始文件。 4. 探索初始模板 标记从解决方案探险家正在一个一个地探索。 首先我们知道program.cs文件。好,让我们集中注意力。 程序。cs:这里我们有一段代码样本,让我们来解释一下。 隐藏,复制Code
namespace CoreMVCAngular { public class Program { public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .Build(); host.Run(); } } }
. usekestrel():定义web服务器。ASP。NET Core支持IIS和IIS Express中的托管。 HTTP服务器: Microsoft.AspNetCore.Server。红隼microsoft.aspnetcore.server(跨平台)。WebListener (windows) . usecontentroot (Directory.GetCurrentDirectory()):用于指定应用程序根目录路径的应用程序基本路径。 . useiisintegration():用于在IIS和IIS Express中托管。 . usestartup<Startup>():指定启动类。 .Build():构建将托管应用程序的IWebHost管理传入的HTTP请求。 启动。cs:这是每个。net核心应用程序的入口点,提供应用程序所需的服务。 隐藏,复制Code
namespace CoreMVCAngular { 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 http://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { } // 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) { } } }
正如你所看到的,有两种方法,一种是配置服务&另一个是配置。在Configure方法中,指定了三个参数。 IApplicationBuilder定义了一个类,它提供了配置应用程序请求的机制。 我们可以使用“Use”扩展方法将MVC(中间件)添加到请求管道中,稍后我们将使用它。 ConfigureServices是一个公共方法,配置为使用多个服务。 项目。json:这里列出了我们的应用程序依赖项的名称。的版本。该文件还管理运行时、编译设置。 依赖:所有的应用依赖,如果需要,我们可以添加新的依赖,智能感知将帮助包括名称和。的版本。 保存更改后,它会自动从NuGET恢复依赖关系。 这里是我更改的代码片段。 隐藏,复制Code
"dependencies": { "Microsoft.NETCore.App": { "version": "1.0.0", "type": "platform" }, "Microsoft.AspNetCore.Diagnostics": "1.0.0", "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", "Microsoft.Extensions.Logging.Console": "1.0.0", "Microsoft.AspNetCore.Mvc": "1.0.0" },
要卸载,请访问解决方案资源管理器>右键单击package >卸载包 工具:本部门管理及管理。列表命令行工具,我们可以看到IISIntegration。默认情况下添加的工具是一个包含dotnet publish iis命令的工具,用于在iis上发布应用程序。 隐藏,复制Code
"tools": { "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final" },
框架:正如我们最初看到的,我们的应用程序默认运行在。net核心平台上,带有运行时代码 隐藏,复制Code
"frameworks": { "netcoreapp1.0": { "imports": [ "dotnet5.6", "portable-net45+win8" ] } },
构建选项:在构建应用程序时传递给编译器的选项。 隐藏,复制Code
"buildOptions": { "emitEntryPoint": true, "preserveCompilationContext": true },
RuntimeOptions:在应用程序运行时管理服务器垃圾收集。 隐藏,复制Code
"runtimeOptions": { "configProperties": { "System.GC.Server": true } },
PublishOptions:定义发布应用程序时要包含/排除到输出文件夹的文件/文件夹。 隐藏,复制Code
"publishOptions": { "include": [ "wwwroot", "web.config" ] },
脚本:脚本是对象类型,它指定在构建或发布应用程序期间运行的脚本。 隐藏,复制Code
"scripts": { "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] }
5. 添加MVC6 是时候添加MVC6了。在。net Core 1.0 MVC中Webapi是统一的,成为继承相同基类的单一类。 让我们将MVC服务添加到应用程序中。开放的项目。json添加新的依赖项。在依赖项部分中添加两个依赖项。 隐藏,复制Code
"Microsoft.AspNetCore.Mvc": "1.0.0", "Microsoft.AspNetCore.StaticFiles": "1.0.0" //Serving static file
单击Save。 它将开始恢复pa自动ckages。 现在让我们在启动类的配置方法中添加MVC(midleware)来请求管道。 隐藏,复制Code
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { loggerFactory.AddConsole(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } //app.UseStaticFiles(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); }
在ConfigureServices方法中,需要添加框架服务。我们添加了services.AddMvc(); 隐藏,复制Code
public void ConfigureServices(IServiceCollection services) { services.AddMvc(); }
MVC文件夹结构: 让我们在示例应用程序中添加MVC文件夹结构。我们已经在视图文件夹中添加了视图文件。控制器文件夹中的MVC控制器,就像旧的MVC应用程序。 在这里,您可能会注意到views文件夹“_ViewImports”中有一个新文件。cshtml”,该文件负责设置项目中的视图可以访问的名称空间,这之前是由web完成的。配置文件在views文件夹中。 差不多做完了。让我们用欢迎消息修改视图内容。现在运行应用程序,可以看到主页上出现了欢迎消息。 输出: 6. AngularJS2 AngularJS2是一个用于应用程序开发的现代客户端JavaScript框架。这个JavaScript框架是全新的。基于TypeScript编写。 我们将遵循以下步骤来学习如何安装到我们的应用程序: 使用包管理器(NPM)管理客户端依赖关系。使用类型脚本使用任务运行器引导 客户端依赖:我们需要为Node Package Manager(NPM)添加一个json配置文件。单击add祝辞新项目在端-端比;npm配置文件,然后单击Ok。 打开新添加的npm配置文件并修改初始设置。 隐藏,复制Code
{ "version": "1.0.0", "name": "asp.net", "private": true, "Dependencies": { "angular2": "2.0.0-beta.9", "systemjs": "0.19.24", "es6-shim": "^0.33.3", "rxjs": "5.0.0-beta.2" }, "devDependencies": { "gulp": "3.8.11", "gulp-concat": "2.5.2", "gulp-cssmin": "0.1.7", "gulp-uglify": "1.2.0", "rimraf": "2.2.8" } }
在依赖部分,我们需要添加AngularJS2与其他依赖,这里他们是什么: 是一个库,提供了对旧环境的兼容性。Rxjs:提供多种格式的更模块化的文件结构。SystemJS:启用系统。直接导入TypeScript文件。 正如你所看到的,有两种不同类型的对象,一种是用于生产目的的依赖。另一个是与开发相关的devDependencies,如gulp是运行不同的任务。 单击save,它将自动恢复。在依赖项部分中,我们有所有需要的包。 在这个应用程序中,我们添加了另一个名为Bower的包管理器,单击add >新项目在端-端比;配置文件,然后单击Ok。 与NPM相比, 鲍尔: 管理html, css, js组件加载最小的资源加载与平面依赖 NPM: 递归加载嵌套依赖管理NodeJS模块 打开配置文件,然后在特定版本的依赖项部分添加所需的依赖项。 保存JSON文件后,它将自动恢复该包在我们的项目。这里你可以看到我们添加了Jquery &。引导包与鲍尔包管理器。 现在让我们添加一个gulp配置文件来运行task。单击Add祝辞新项目在然后客户端选择要包含的gulp json文件。 Gulp.json 隐藏,收缩,复制Code
/* This file in the main entry point for defining Gulp tasks and using Gulp plugins. Click here to learn more. http://go.microsoft.com/fwlink/?LinkId=518007 */ "use strict"; var gulp = require("gulp"); var root_path = { webroot: "./wwwroot/" }; //library source root_path.nmSrc = "./node_modules/"; //library destination root_path.package_lib = root_path.webroot + "lib-npm/"; gulp.task("copy-systemjs", function () { return gulp.src(root_path.nmSrc + '/systemjs/dist/**/*.*', { base: root_path.nmSrc + '/systemjs/dist/' }).pipe(gulp.dest(root_path.package_lib + '/systemjs/')); }); gulp.task("copy-angular2", function () { return gulp.src(root_path.nmSrc + '/angular2/bundles/**/*.js', { base: root_path.nmSrc + '/angular2/bundles/' }).pipe(gulp.dest(root_path.package_lib + '/angular2/')); }); gulp.task("copy-es6-shim", function () { return gulp.src(root_path.nmSrc + '/es6-shim/es6-sh*', { base: root_path.nmSrc + '/es6-shim/' }).pipe(gulp.dest(root_path.package_lib + '/es6-shim/')); }); gulp.task("copy-rxjs", function () { return gulp.src(root_path.nmSrc + '/rxjs/bundles/*.*', { base: root_path.nmSrc + '/rxjs/bundles/' }).pipe(gulp.dest(root_path.package_lib + '/rxjs/')); }); gulp.task("copy-all", ["copy-rxjs", 'copy-angular2', 'copy-systemjs', 'copy-es6-shim']);
要运行该任务,请右键单击Gulp。json文件重新加载。 右键点击复制-所有&单击Run。 任务运行,就像你看到的那样。 在解决方案资源管理器中复制所有必需的包。我们还需要为es6-shim(键入文件夹)输入类型定义,否则会导致错误——“无法找到name 'Promise'”。 引导与打印稿 tsConfig.json 隐藏,复制Code
{ "compilerOptions": { "noImplicitAny": false, "noEmitOnError": true, "removeComments": false, "sourceMap": true, "target": "es5", //add this to compile app component "emitDecoratorMetadata": true, "experimentalDecorators": true, "module": "system", "moduleResolution": "node" }, "exclude": [ "node_modules", "wwwroot/lib" ] }
noImplicitAny:在隐含的“any”类型的表达式和声明上引发错误。 noEmitOnError:如果报告了任何错误,则不发出输出。 目标:指定ECMAScript目标版本:‘es5’(默认)、‘es5’或‘es6’。 实验者:启用对ES7装饰器的实验支持。 这里有更多关于编译器选项的细节。 在wwwroot文件夹中为。ts文件创建一个app文件夹。 在解决方案资源管理器中,您可以添加如下文件。 在主。ts代码片段,引导AngularJS导入组件。 隐藏,复制Code
import {bootstrap} from 'angular2/platform/browser'; import {AppComponent} from './app.component'; import {enableProdMode} from 'angular2/core'; enableProdMode(); bootstrap(AppComponent);
Component:从Angular 2库中导入组件函数,使用“导出”,这意味着app组件类可以从其他组件中导入。 隐藏,复制Code
import {Component} from 'angular2/core'; @Component({ selector: 'core-app', template: '<h3>Welcome to .NET Core 1.0 + MVC6 + Angular 2</h3>' }) export class AppComponent { }
MVC视图:是时候更新我们的布局了。结合图书馆。 现在我们将添加引用到我们的布局页面。 隐藏,复制Code
<!DOCTYPEhtml> <html> <head> <metaname="viewport"content="width=device-width"/> <title>@ViewBag.Title</title> <scriptsrc="~/lib-npm/es6-shim/es6-shim.js"></script> <scriptsrc="~/lib-npm/angular2/angular2-polyfills.js"></script> <scriptsrc="~/lib-npm/systemjs/system.src.js"></script> <scriptsrc="~/lib-npm/rxjs/Rx.js"></script> <scriptsrc="~/lib-npm/angular2/angular2.js"></script> </head> <body> <div> @RenderBody() </div> @RenderSection("scripts", required: false) </body> </html>
Index.cshtml 隐藏,复制Code
@{ ViewData["Title"] = "Home Page"; } <core-app> <div> <p><imgsrc="~/img/ajax_small.gif"/> Please wait ...</p> </div> </core-app> @section Scripts { <script> System.config({ packages: { 'app': { defaultExtension: 'js' } }, }); System.import('app/main').then(null, console.error.bind(console)); </script> }
要做的另一件事是启用静态文件服务。将此行添加到启动配置方法中。 隐藏,复制Code
app.UseStaticFiles();
7. 构建和运行应用程序 最后构建,运行应用程序 这里我们可以看到我们的应用程序使用AngularJS2 希望这能有所帮助:) 本文转载于:http://www.diyabc.com/frontweb/news17332.html