在ASP.NET MVC3中(从那时开始),我们拥有了对js和css等文件的捆绑(Bundling)和压缩(Minification)的能力,这是ASP.NET性能优化工作的一部分。
想一下很久以前,我们在mvc2的时代,我们使用这样的方式引入js和css文件:
<script type="text/javascript" src="@Url.Content("~/Script/Script.js")"></script>Why
刚开始没有什么问题,而随着我们项目的越来越大,需要引入的资源文件越来越多的时候,我们就难免会遇到以下这些问题:
- 需要在Production环境将这些文件替换为压缩版本(e.g jQuery.xxx.min.js)
- CSS文件需要借助其他工具去压缩
- 引入的文件越来越多,难以管理
- 大量的资源文件导致浏览器加载缓慢
而在ASP.NET MVC3空出世后,我们就再也不需要受到以上这些困扰了。
首先,当我们开启了Optimizations开关后,当Web.config文件中的System.Web/Compilation@debug设置为false的时候(在生产环境下,需要设置为false),我们在浏览器端获取到的资源文件将会是经过压缩和捆绑的。这样做的好处是:
- 减少了服务器端的流量,给服务器退烧(通过压缩)
- 自动缓存资源文件,服务器端不更改的话,不会重新加载(通过缓存机制)
- 由于大多浏览器限制了对一个host同时连接数量,所以加快了网站访问速度(通过捆绑)
以下是一个简单的示例,我这里用一个新建的ASP.NET MVC项目进行演示:
在新建一个MVC项目后,打开App_Start/BundleConfig.cs文件,可以看到一个静态的RegisterBundles方法,这个方法和RegisterRoutes方法一样,都是在应用程序在首次加载的时候调用的,也就是说,所有的捆绑和压缩的操作都会在应用程序加载的时候执行一次,以后会直接引用它,而当在应用程序启动后,人工干预了某个在捆绑中注册了的资源文件,MVC也只会去重新加载和压缩这一部分。
在这个RegisterBundles方法体内,可以设置BundleTable.EnableOptimizations静态属性,这个静态属性默认是设置为True的,也就是当网站在生产环境下,会对css和js等文件进行捆绑和压缩,而在开发模式下不会执行这些操作,当然你也可以通过设置为False组织它这种行为,
在方法体内,可以通过调用BundleCollection参数的Add方法增加我们要捆绑的文件:
bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include( "~/Scripts/bootstrap.js", "~/Scripts/respond.js"));
这里的”~/bundles/bootstrap“是一个虚拟的路径,当我们在View文件中引用的时候,实际加载的是"~/Scripts/bootstrap.js"和"~/Scripts/respond.js"两个文件,Include方法的参数为一个字符串类型的参数组,所以我们可以添加任意多个的文件,在View文件中使用如下方式进行应用:
@Scripts.Render("~/bundles/bootstrapr")
捆绑机制同时也支持CDN
var jqueryCdnPath = "http://libs.baidu.com/jquery/1.9.0/jquery.min.js"; bundles.Add(new ScriptBundle("~/bundles/jquery", jqueryCdnPath).Include( "~/Scripts/jquery-{version}.js"));Focus came
而这篇文章要说的重点是,直接使用这种捆绑和压缩的机制完成LESS的编译,虽然我们也可以使用LESSCSS在浏览器端编译less,但是并不能得到编译过的CSS文件,而很多时候我们需要得到它,判断是不是我们预想的那样。
更多关于LESS的介绍以及LESS的优势,参见这里
首先,我们需要添加dotless程序包:
之后,我在项目中Content目录下,添加一个StyleSheet1.less,代码如下:
@color:#F7F7F7;body{ background-color:@color;}
这时候,您并不需要去担心IIS会对less后缀的文件返回404,因为最终输出到客户端的是一个经过编译的CSS文件。
在BundleRegister方法中,添加如下代码:
var lessbundle = new Bundle("~/bundles/less").Include("~/Content/*.less"); lessbundle.Transforms.Add(new LessTransform()); lessbundle.Transforms.Add(new CssMinify()); bundles.Add(lessbundle);
在代码第一行,我们添加了对Content目录下所有后缀为less文件的捆绑,第二行添加了LESS的转换功能,这个功能就是由dotless提供的,第三行添加了对这一捆绑提供压缩的功能,这样我们在Production环境下,就会得到编译并且压缩的css代码;
在生产环境下,浏览器得到的源码中会找到类似以下的代码:
<link href="/bundles/less?v=vnAgv976RJi72MAy6iBw7DhQ9yxBbhXMXY0yOqNN5BU1" rel="stylesheet"/>
打开这个路径,会得到已经编译过的CSS代码:
body{background-color:#f7f7f7}而在Production环境下,回更近一步,将css中的空白字符去掉,使CSS文件更小,因为我的示例实际上就一样,所以看不出来差别。
这篇文章就到这里了,最近工作的事很闹心啊,做技术人的洁癖和敏感,很他妈要命!

HTML、CSS和JavaScript在Web开发中的作用分别是:1.HTML定义网页结构,2.CSS控制网页样式,3.JavaScript添加动态行为。它们共同构建了现代网站的框架、美观和交互性。

HTML的未来充满了无限可能。1)新功能和标准将包括更多的语义化标签和WebComponents的普及。2)网页设计趋势将继续向响应式和无障碍设计发展。3)性能优化将通过响应式图片加载和延迟加载技术提升用户体验。

HTML、CSS和JavaScript在网页开发中的角色分别是:HTML负责内容结构,CSS负责样式,JavaScript负责动态行为。1.HTML通过标签定义网页结构和内容,确保语义化。2.CSS通过选择器和属性控制网页样式,使其美观易读。3.JavaScript通过脚本控制网页行为,实现动态和交互功能。

HTMLISNOTAPROGRAMMENGUAGE; ITISAMARKUMARKUPLAGUAGE.1)htmlStructures andFormatSwebContentusingtags.2)itworkswithcsssforstylingandjavascript for Interactivity,增强WebevebDevelopment。

HTML是构建网页结构的基石。1.HTML定义内容结构和语义,使用、、等标签。2.提供语义化标记,如、、等,提升SEO效果。3.通过标签实现用户交互,需注意表单验证。4.使用、等高级元素结合JavaScript实现动态效果。5.常见错误包括标签未闭合和属性值未加引号,需使用验证工具。6.优化策略包括减少HTTP请求、压缩HTML、使用语义化标签等。

HTML是一种用于构建网页的语言,通过标签和属性定义网页结构和内容。1)HTML通过标签组织文档结构,如、。2)浏览器解析HTML构建DOM并渲染网页。3)HTML5的新特性如、、增强了多媒体功能。4)常见错误包括标签未闭合和属性值未加引号。5)优化建议包括使用语义化标签和减少文件大小。

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

HTML的作用是通过标签和属性定义网页的结构和内容。1.HTML通过到、等标签组织内容,使其易于阅读和理解。2.使用语义化标签如、等增强可访问性和SEO。3.优化HTML代码可以提高网页加载速度和用户体验。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

记事本++7.3.1
好用且免费的代码编辑器

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

WebStorm Mac版
好用的JavaScript开发工具

SublimeText3 Linux新版
SublimeText3 Linux最新版