zoukankan      html  css  js  c++  java
  • .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

  • 相关阅读:
    Spring中内置的一些工具类
    那些年遇到过的面试题
    ThreadPoolExecutor策略配置以及应用场景
    程序员如何谈加薪?
    日常工作中该注意哪些点?
    aarch64的系统上执行armhf程序
    挂载镜像
    pycharm折叠代码
    暴力破解分类
    weblogic常见漏洞
  • 原文地址:https://www.cnblogs.com/Dincat/p/13494114.html
Copyright © 2011-2022 走看看