asp.net vNext 对于构建asp.net 程序带来了一些重大的改变,让我们开发asp.net 程序的时候更加的方便和高效。

  • 1,可以很容易的去管理客户端的包比如jquery,bootstrap,angular。
  • 2,能够自动的完成less 的编译,javascript 的压缩和单元测试。
  • 3,在web 开发社区有非常丰富的工具生态系统。

vs 2015 中有一些自动化的编译工具来支持一些第三方的工具,

  • 1,Bower,可以看作是web 应用的包管理工具,bower 可以安装和恢复客户端的包,包括javascript 和css 的库。一些服务端的包比如像mvc 6 的 框架,我们可以用Nuget来管理。
  • 2,Grunt和Gulp, 这两个是基于javascript 的能够自动完成日常开发任务的工具,Asp.net vNext 工程模板就是用的Grunt。
  • 3 npm(Node Package Manager),npm 就是一个包管理工具,是用node.js 开发的,Bower ,Grunt,Gulp 都是用的npm。

首先新建一个ASP.NET 5.0 started web 程序,有如下的目录结构。其中:

  • 1,project.json,是项目的工程文件,Nuget依赖的包都会列在这。
  • 2,package.json,列出npm 的包。
  • 3,bower.json,列出bower 包。
  • 4,grunfile.json,配置grunt 任务。

接下来就说说这些:
1 静态文件(static files)和wwwroot
wwwwroot 是asp.net vNext 新添加的文件夹。包括程序的html 文件,css文件,图片以及js 文件,wwwroot 位于网站的根目录,

http://localhost/ 就会指向它,静态文件的url 都是相对与这个文件夹的。代码文件应该放在wwwroot 文件夹之外,wwwroot 文件夹为代码文件和

静态文件划分了清晰的界限。
一些静态文件需要通过编译预处理来创建:
1,CoffeeScript 或则 TypeScript去编译成javascript。
2,less或者sass文件编译成css 文件。
3,压缩和javascript 文件连接。
4,优化图片。
这些编译应该在wwwroot 文件夹之外处理的。在project.json文件中我们可以任意命名wwwroot 文件夹。

2通过Bower 来管理客户端的包

我们可以在bower.json 文件中添加require.js 在dependencies 区域:

       "dependencies": {
"bootstrap": "~3.0.0",
"jquery": "~1.10.2",
"jquery-validation": "~1.11.1",
"jquery-validation-unobtrusive": "~3.2.2",
"requirejs": "^2.1"

添加的时候会有只能提示。右键点击bower再点击restore package 就可以在输出窗口 看到我们我们安装的包了。

vs 会自动的还原解决方案所有的包。因而,如果我们检查我们项目中的源代码的时候 ,可以排除bower_components 文件夹。

3 使用Grunt来运行任务

gruntfile.js 文件定义了Grunt 任务,项目的模板包括一个可以运行bower 管理工具 的任务。我们可以添加一个less 文件。首先创建一个assets文件

然后右键文件夹add>new items > 选择less style sheet 命名为site.less

代码是:

@base: red;  body {  background-color: @base; }

这段代码的意思是设置页面的背景颜色是红色。默认情况下vs 不会做任何的处理,那 么我们就需要添加grunt 任务,步骤是:

  • 1 安装这个任务,我们可以写一个grunt 任务。
  • 2 在grunt 文件中设置这个任务。
  • 3 在vs 编译的时候绑定这个任务。

我们可以在package.json 中去添加这个任务。在devDependencies 区域中

然后在gruntfile.js 文件中写下如下代码:

 module.exports = function (grunt) {
grunt.initConfig({
bower: {
install: {
options: {
targetDir: "wwwroot/lib",
layout: "byComponent",
cleanTargetDir: false
}
}
},
less: {
development: {
options: {
paths: ["Assets"],
},
files: { "wwwroot/css/site.css": "assets/site.less" }
},
} }); // This command registers the default task which will install bower packages into wwwroot/lib
grunt.registerTask("default", ["bower:install"]); // The following line loads the grunt plugins.
// This line needs to be at the end of this this file.
grunt.loadNpmTasks("grunt-bower-task"); grunt.loadNpmTasks("grunt-contrib-less");
};

接下来我们就可以运行这个任务了,右键 gruntfile.js 然后选择Task Runner  Exploer 我们可以看到:
   

点击less 任务 成功。

就可以看到/wwwroot/css/site.css 已经有less 编译的代码了:

页面效果:

好了,本文就到此为止。以后我还会分享关于Asp.net vNext 的有关知识。

Asp.net vNext 学习之路(三)的更多相关文章

  1. Asp.net vNext 学习之路(二)

    View component(视图组件)应该是MVC6 新加的一个东西,类似于分部视图.本文将演示在mvc 6中 怎么添加视图组件以及怎么在视图中注入一个服务. 本文包括以下内容: 1,创建一个新的a ...

  2. Asp.net vNext 学习之路(一)

    概述 asp.net vNext 也叫 asp.net 5.0,意思是微软推出的下一个版本的asp.net.可以说是微软对asp.net的一个比较重大的重新设计, asp.net vNext是一 个比 ...

  3. Asp.net vNext 学习3

    Asp.net vNext 学习之路(三) asp.net vNext 对于构建asp.net 程序带来了一些重大的改变,让我们开发asp.net 程序的时候更加的方便和高效. 1,可以很容易的去管理 ...

  4. Asp.net vNext 学习1

    Asp.net vNext 学习之路(一) 概述 asp.net vNext 也叫 asp.net 5.0,意思是微软推出的下一个版本的asp.net.可以说是微软对asp.net的一个比较重大的重新 ...

  5. 学习之路三十九:新手学习 - Windows API

    来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大. 经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解. 文中所有的消息常量,API,结构体都整理出来了 ...

  6. Redis——学习之路三(初识redis config配置)

    我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息.     ...

  7. [整理]ASP.NET vNext学习资源

    http://www.hanselman.com/blog/IntroducingASPNETVNext.aspx http://blogs.msdn.com/b/dotnet/archive/201 ...

  8. zigbee学习之路(三):按键的控制

    一.前言 通过前一次的实验,相信大家都已经对cc2530程序的编写有了一定的认识,这次我们来操作和实验的是cc2530上的按键模块. 二.原理分析 我们先来看一下按键的原理图: 根据原理图我们可以得出 ...

  9. 学习之路三十二:VS调试的简单技巧

    这段时间园子里讲了一些关于VS的快捷键以及一些配置技巧,挺好的,大家一起学习,一起进步. 这段时间重点看了一下关于VS调试技巧方面的书,在此记录一下学习的内容吧,主要还是一些比较浅显的知识. 1. 调 ...

随机推荐

  1. day4 数组学习

    java提供的数组排序操作:java.util.Arrays.sort(数组名): java提供的数组复制:system.arraycopy(源数组名称,源数组开始点下标,目标数组名称,目标数组开始下 ...

  2. jquery php ajax多图片上传.上传进度,生成缩略图

    本例用到其他2个php class.upload.php和 functions.php还有css和js以及img文件 下载地址为www.freejs.net/demo/91/down.zip 演示 J ...

  3. 20155233 2016-2017-2 《Java程序设计》第6周学习总结

    20155233 2016-2017-2 <Java程序设计>第6周学习总结 学习目标 理解流与IO 理解InputStream/OutPutStream的继承架构 理解Reader/Wr ...

  4. 【leetcode 简单】 第九十六题 最长回文串

    给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: 假设字符串的长度不 ...

  5. MySQL Sakila样本数据库

    Sakila样本数据库介绍 Sakila样本数据库是MySQL官方提供的一个模拟DVD租赁信息管理的数据库,提供了一个标准模式,可作为书中例子,教程.文章.样品,等等,对学习测试来说是个不错的选择. ...

  6. Linux MySQl 5.7.17 MySQL ERROR 1366(HY000):Incorrect string value 解决方法

    MySQL ERROR 1366(HY000):Incorrect string value,在往数据库中插入中文的时候会出现. 这也就是编码问题,网上大部分都是说设置下配置文件中的设置,而可悲的是在 ...

  7. 31 Godoc: documenting Go code 编写良好的文档关于godoc

    Godoc: documenting Go code  编写良好的文档关于godoc 31 March 2011 The Go project takes documentation seriousl ...

  8. Python_oldboy_自动化运维之路(八)

    本节内容: 列表生成式,迭代器,生成器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器,生成器 1.列表生成式 #[列表生成] #1.列 ...

  9. Python字符串(Str)详解

    字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串很简单,只要为变量分配一个值即可 字符串的格式 b = "hello itcast. ...

  10. find命令的使用

    在以.conf结尾的文件里面查找含有aaa字符串的那一行   ( -name后面可以写  "*.*"   即匹配所有的文件 ) find / -name "*.conf& ...