ASP.NET 5系列教程 (五):在Visual Studio 2015中使用Grunt、Bower开发Web程序
基于Visual Studio 2015,你可以:
- 方便的管理前端包,如jQuery, Bootstrap, 或Angular。
- 自动运行任务,如LESS、JavaScript压缩、JSLint、JavaScript单元测试等。
- 方便的获得Web开发者生态圈的工具包。
为了实现这些场景,Visual Studio 2015已经内置了一些流行的第三方工具包:
- Bower:Web包管理器,Bower可以帮你安装前端包,包括JavaScript、CSS类库。对于服务器端包,请通过NuGet包管理。
- Grunt and Gulp:Grunt和Gulp是基于JavaScript的运行任务。如你未用过类似功能,可以认为这是一个自动调度运行的app,ASP.NET 5工程模板使用的是Grunt运行任务。
- npm (Node Package Manager). npm是一个node包管理器,最初被用于Node.js包管理。上面说的Bower、Grunt、Gulp用到了npm。
启动Visual Studio 2015,新建一个ASP.NET 5.0的工程,选择文件-> 新建工程->Visual C#->Web->ASP.NET Web应用程序:
在新建工程对话框,选择ASP.NET 5.0 Starter Web
创建一个ASP.NET MVC 6 app,工程文件结构如下:
该工程下,包括如下重要的配置文件:
- Project.json. 主工程文件,NuGet 包依赖清单.
- package.json. npm包清单.
- bower.json. Bower包清单.
- gruntfile.js. 配置Grunt任务.
静态文件和wwwroot
wwwroot 文件夹在ASP.NET 5.0中是新增的,工程中所有的静态文件存放于此。且客户端可直接访问这些文件,包括HTML文件、CSS文件、Images文件、JavaScript文件。wwwroot文件夹是网站的根目录,如这个域名http://hostname/
指向wwwroot文件夹。
代码应该存放在wwwroot外,包括C#文件、Razor文件,既wwwroot文件夹用于实现代码文件、静态文件的隔离。
- 编译CoffeeScript or TypeScript 文件为JavaScript.
- 编译LESS or Sass 文件为CSS.
- 压缩JavaScript.
- 优化image文件.
以上的操作会把wwwroot文件夹外的代码文件进行编译,然后拷贝到wwwroot文件夹下,这样前端即可访问。可通过任务调度自动执行这些步骤。
{
"webroot": "wwwroot",
"version": "1.0.0-*",
// ...
}
使用Bower来进行前端包管理
下面我们看看如何在Visual Studio 2015 中使用Bower进行前端包管理,在本节中,我们天津RequireJs类库给app。
打开bower.json,在dependencies节添加requirejs入口。
"dependencies": {
"bootstrap": "~3.0.0",
"jquery": "~1.10.2",
"jquery-validation": "~1.11.1",
"jquery-validation-unobtrusive": "~3.2.2",
"requirejs": "^2.1"
},
备注:bower版本语法模式是”major.minor.patch”. 在^2.1中,字符'^’指定最小版本号。'~1.10.2' 用于指定最小为1.10.2版本,或者任何1.10的最新补丁。 更多细节,请查看Github:https://github.com/npm/node-semver.
在Visual Studio 2015下,可使用智能感知获得可用包的列表:
也可以获得包版本号的智能提示
现在安装最新包,在解决方案视图,点击Dependencies,然后在Bower文件夹上右击单击Restore Packages.
可通过Output 窗体查看安装的细节。 包被安装到bower_components文件夹。
Visual Studio会自动加载对应版本的包在您的解决方案中。这样包文件就不用上传到源码管理下。
使用Grunt运行任务调度
使用gruntfile.js 文件来定义Grunt任务,默认的工程模板包括了这样的任务,如Bower包管理器。
下面我们使用Grunt来添加LESS处理、编译过程。
在工程下,创建一个文件夹assets。
在assets文件夹上右键,选择Add > New Item. 在新建项对话框中,选择LESS Style Sheet文件,命名为“site.less”.
粘贴如下代码到site.less文件
@base: teal;
body {
background-color: @base;
}
使用@base 变量用于定义颜色值,这个变量被用于LESS的特性。
- 安装task,创建一个Grunt task或者复用一个存在的.
- 在Grunt文件中配置task.
- 绑定task到Visual Studio编译任务中
在package.json文件中,配置grunt-contrib库。
{
"version": "0.0.0",
"name": "MyApp",
"devDependencies": {
"grunt": "^0.4.5",
"grunt-bower-task": "^0.4.0",
// Add this:
"grunt-contrib-less": "^0.12.0"
}
}
在输入的时候,同样会看到可用包列表:
同样可智能感知出版本号:
在解决方案,点击Dependencies > NPM,你可以看到grunt-contrib-less已经被列出来,但是目前尚未安装。
点击右键,Restore Packages。
安装完成的gruntfile.js 文件如下所示:
module.exports = function (grunt) {
grunt.initConfig({
bower: {
install: {
options: {
targetDir: "wwwroot/lib",
layout: "byComponent",
cleanTargetDir: true
}
}
},
// Add this JSON object:
less: {
development: {
options: {
paths: ["Assets"],
},
files: { "wwwroot/css/site.css": "assets/site.less" }
},
}
}); grunt.registerTask("default", ["bower:install"]); grunt.loadNpmTasks("grunt-bower-task");
// Add this line:
grunt.loadNpmTasks("grunt-contrib-less");
};
initConfig方法
使用initConfig方法来配置Grunt任务。每个Grunt插件有他自己的配置项集合。如,我们可以配置grunt-contrib-less编译为assets/site.less文件,然后拷贝到wwwroot/css/site.css.
loadNpmTasks方法
从Grunt插件中加载任务,工程模板默认通过这个来加载grunt-bower-task。下面添加一个grunt-contrib-less。
在解决方案视图,选择gruntfile.js 右键Task Runner Explorer
通过选择任务名称“less”,点击Run运行:
output窗口运行如下:
打开/wwwroot/css/site.css文件,可看到编译后的CSS文件如下:
body {
background-color: #008080;
}
运行程序,背景色已经被真实颜色修改了:
配置自动运行:通过Bindings > After Build 即可配置自动运行。
理解了本节在Visual Studio 2015中使用Grunt、Bower开发Web程序的内容,能帮助大家更好的进行开发过程。那么在开发过程中,有哪些开发工具可以利用?ComponentOne Studio for ASP.NET 是ASP.NET平台上的一整套完备的开发工具包,包含的Web窗体控件、MVC scaffolding模板以及HTML5/JavaScript页面组件,仅通过几行代码就可以在系统中实现丰富的功能。
原文链接:Manage Client-Side Web Development in Visual Studio 2015, Using Grunt and Bower
ASP.NET 5系列教程 (五):在Visual Studio 2015中使用Grunt、Bower开发Web程序的更多相关文章
- 在 Visual Studio 2013 中使用 Grunt, Bower 和 NPM
在 Visual Studio 2015 中提供了对于 Grunt 和 Gulp 的内置支持,在 Visual Studio 2013 中怎么办呢?微软将 2015 中的特性作为几个独立的扩展发布出来 ...
- 在Visual Studio 2015 中添加SharePoint 2016 开发模板
前言 SharePoint 2016已经发布很久了,然而,默认安装VS2015以后,却没有SharePoint 2016的开发模板.其实问题很简单,和VS2012开发SharePoint 2013一样 ...
- Visual Studio 2015中使用gdb远程调试linux程序
VS的debug功能非常强大,相比而言linux上的图形化调试一直不是很好用. 如果可以使用VS来调试linux程序,应该是一件比较愉快的事情. 这在2015中变得可能,因为从2015开始VS支持An ...
- Xamarin.Forms教程下载安装Visual Studio 2015
Xamarin.Forms教程下载安装Visual Studio 2015 下载安装Visual Studio 2015 Visual Studio 2015是微软提供的IDE,其中集成了Window ...
- ASP.NET5之客户端开发:Grunt和Gulp构建工具在Visual Studio 2015中的高效的应用
Grunt和Gulp是Javascript世界里的用来做自动压缩.Typescript编译.代码质量lint工具.css预处理器的构建工具,它帮助开发者处理客户端开发中的一些烦操重复性的工作.Grun ...
- [.net 面向对象程序设计进阶] (27) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git
[.net 面向对象程序设计进阶] (26) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git 本篇导读: 接上两篇,继续Git之旅 分布式版本控制系统 ...
- Visual Studio 2015 和 Apache Cordova 跨平台开发入门(一)
基于 Windows 10 的 Visual Studio 2015 跨平台的应用开发主要分为基于Visual Studio 安装 Xamarin 扩展的跨Android.iOS 和 Windows的 ...
- Grunt和Gulp构建工具在Visual Studio 2015中的高效的应用
Grunt和Gulp构建工具在Visual Studio 2015中的高效的应用 Grunt和Gulp是Javascript世界里的用来做自动压缩.Typescript编译.代码质量lint工具.cs ...
- Visual Studio 2015 和 Apache Cordova 跨平台开发入门
原文:Visual Studio 2015 和 Apache Cordova 跨平台开发入门(一) 基于 Windows 10 的 Visual Studio 2015 跨平台的应用开发主要分为基于V ...
随机推荐
- gulp插件autoprefixer
gulp的autoprefixer插件可以根据我们的设置帮助我们自动补全浏览器的前缀(如:-moz.-ms.-webkit.-o) 1)首先安装gulp,不知道怎么安装请看这里 2)安装autopre ...
- MYSQL常用内置函数详解说明
函数中可以将字段名当作变量来用,变量的值就是该列对应的所有值:在整理98在线字典数据时(http://zidian.98zw.com/),有这要一个需求,想从多音字duoyinzi字段值提取第一个拼音 ...
- mount: unknown filesystem type 'ntfs'
mount: unknown filesystem type 'ntfs' 问题描述 # mount –t ntfs /dev/sdc1 /mnt/usb2 mount: unknown filesy ...
- makfile
1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之 ...
- [OSI]网络7层模型的理解
应用层:HTTP 应用层 表现层:编码 表现层 会话层:端口 会话层 传输层:TCP/UDP 协议 传输层 网络层:IP 标记 +-- 网络层 --+ 网络层 数据链路层:计算机Mac地址标记 | ...
- win10+vs2015+opencv3.0 x86/x64配置(debug+release)
最近做一些图像识别的项目,用到了opencv,opencv3.1没有x86版本,所以只能用opencv3.0来完成,下面介绍一下在window10下vs2015 配置opencv3.0的过程(x86和 ...
- nio加强服务端并发
究了一下Android推送,方式很多,比如用框架或者用第三方服务,在此并不讨论个中优劣.抱着学习的态度,本人不太喜欢用一些现成的东西,所以自己动手实现了一套简单的推送机制.使用TCP长连接,完成服务器 ...
- LinuxMM--Memory Pressure
Memory pressure定义在操作系统中,用户分配.文件缓存.网卡包缓冲区等等都会消耗内存.一旦出现内存紧张就会导致memory pressure.引发当某个任务需要请求内存时就有可能引发mem ...
- First class ,6 examples anlaysisi
http://www.fgm.cc/learn/ First class ,6 examples anlaysisi <!DOCTYPE html> <!-- To change t ...
- java JFrame修改左上角的图片
直接案例: