在 ASP.NET Core 中进行打包 (Bundling) 和紧缩 (Minification)
在 ASP.NET Core 中进行打包 (Bundling) 和紧缩 (Minification)
这篇文章讲介绍在 ASP.NET Core 中进行打包和紧缩操作。 对于 JavaScript 代码和 CSS 代码的打包和紧缩可以提高 ASP.NET Core Web 应用的性能。
什么是打包 (bundling) ?
打包时将多个文件合并为单个文件的过程。例如,我们可以将多个小型的 JavsScript 文件合并为单个 JavaScript 文件以提高下载的性能,对于 CSS 也是如此。更少的文件数量意味着更少的 HTTP 请求数量,可以提高页面加载的性能。
什么是紧缩 (BundlerMinifier) ?
紧缩是在不影响功能的前提下,删除不需要的内容,例如 JavaScript 中的注释,或者将长的变量名称替换为更短的名称的过程。它会删除注释,额外的空白,以及将长的变量名称转换为更短的名称。
内置的 BundlerMinifier 工具
BundlerMinifier 是内置于 VS 2019 中,以扩展形式存在的工具。它可以完全与 ASP.NET Core 项目集成。来处理对于 JavaScript 和 CSS 的打包和紧缩。
VS 2022 中的版本:https://marketplace.visualstudio.com/items?itemName=Failwyn.BundlerMinifier64
Step 1
在 VS 2019 或者 2022 的菜单中选择 Extensions,然后点击 Manage Extensions 菜单项,这样会弹出管理扩展的窗口。

Step 2
在右边的搜索栏中输入 Bundler ,在找到之后,点击下载并安装。

它会要求你关闭 Visual Studio,然后就会启动安装过程。在它提示你修改的时候,点击修改就可以完成。
Step 3
现在重新启动 Visual Studio,打开你的 ASP.NET Core 项目,打开 wwwroot 文件夹,选择准备进行紧缩的文件,右键之后,选择 Bunder & Minifier,选择 Minify File。它就会创建与你的文件同名的紧缩版本,并在项目中生成一个 bundleconfig.json 文件


其中内容为:
[
{
"outputFileName": "wwwroot/css/style.min.css",
"inputFiles": [
"wwwroot/css/style.css"
]
}
]
这个 bundleconfig.json 文件是标准的 JSON 文件,非常易于理解。在该文件中,每个打包的输出文件名称使用 outputFileName 定义,对应的 inputFiles 表示用来打包的源文件数组。每个数组对应一个输出文件。还可以通过 bundleconfig.json 文件来控制紧缩的过程,包括重命名本地的 JavaScript 文件以及是否为 JavaScript 生成 SourceMap 文件。
如果你不是在 JavaScript 或者 CSS 文件上右键,而是在 bundleconfig.json 文件上右键,那么你会得到更多的功能。

如果你选择了 Enable bundle on build 功能,那么 Visual Studio 就会下载并安装对应的 NuGet 包,如果你还没有安装的话。

参考资料
在 ASP.NET Core 中进行打包 (Bundling) 和紧缩 (Minification)的更多相关文章
- 将 ASP.Net Core WebApi 应用打包至 Docker 镜像
将 ASP.Net Core WebApi 应用打包至 Docker 镜像 运行环境为 Windows 10 专业版 21H1, Docker Desktop 3.6.0(67351),Docker ...
- ASP.NET Core 中的那些认证中间件及一些重要知识点
前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...
- Asp.net Core中使用Session
前言 2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年. 元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Cor ...
- 在ASP.NET Core中使用百度在线编辑器UEditor
在ASP.NET Core中使用百度在线编辑器UEditor 0x00 起因 最近需要一个在线编辑器,之前听人说过百度的UEditor不错,去官网下了一个.不过服务端只有ASP.NET版的,如果是为了 ...
- ASP.NET Core中的依赖注入(1):控制反转(IoC)
ASP.NET Core在启动以及后续针对每个请求的处理过程中的各个环节都需要相应的组件提供相应的服务,为了方便对这些组件进行定制,ASP.NET通过定义接口的方式对它们进行了"标准化&qu ...
- ASP.NET Core中的依赖注入(2):依赖注入(DI)
IoC主要体现了这样一种设计思想:通过将一组通用流程的控制从应用转移到框架之中以实现对流程的复用,同时采用"好莱坞原则"是应用程序以被动的方式实现对流程的定制.我们可以采用若干设计 ...
- ASP.NET Core中的依赖注入(3): 服务的注册与提供
在采用了依赖注入的应用中,我们总是直接利用DI容器直接获取所需的服务实例,换句话说,DI容器起到了一个服务提供者的角色,它能够根据我们提供的服务描述信息提供一个可用的服务对象.ASP.NET Core ...
- ASP.NET Core中的依赖注入(4): 构造函数的选择与服务生命周期管理
ServiceProvider最终提供的服务实例都是根据对应的ServiceDescriptor创建的,对于一个具体的ServiceDescriptor对象来说,如果它的ImplementationI ...
- ASP.NET Core 中文文档 第二章 指南(4.6)Controller 方法与视图
原文:Controller methods and views 作者:Rick Anderson 翻译:谢炀(Kiler) 校对:孟帅洋(书缘) .张仁建(第二年.夏) .许登洋(Seay) .姚阿勇 ...
- ASP.NET Core 中文文档 第三章 原理(1)应用程序启动
原文:Application Startup 作者:Steve Smith 翻译:刘怡(AlexLEWIS) 校对:谢炀(kiler398).许登洋(Seay) ASP.NET Core 为你的应用程 ...
随机推荐
- Android UsbDeviceManager 代码分析
USBDeviceManager是一个Android系统中用于管理USB设备的类,它是系统服务之一.其主要功能是控制USB设备的连接和断开,以及管理USB设备的权限和状态.下面是对USBDeviceM ...
- mongo对文档中数组进行过滤的三种方法
前言 在mongo中数据类型有很多种,常见的包括: 数据类型 例子 描述 String { "x" : "foot" } 字符串.存储数据常用的数据类型.在 M ...
- 装有docker的虚拟机环境ping宿主机失败
当我用docker network create 创建了一个网络后 [root@localhost ~]# docker network create kong-net 5c035564f9b4649 ...
- NetCore项目发布对前端项目进行打包合并发布
在某个小项目中, api使用asp.net core 3.x 编写, UI页面则使用Vuejs. 正常情况下, 项目右键的发布只会发布api项目,而不会管Vuejs的项目. 所以通过简单的改造,在发布 ...
- webpack配置 alias用于方便引用文件
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- 揭秘!KubeSphere 背后的“超级大脑”:etcd 的魅力与力量
作者:尹珉,KubeSphere Ambassador & Contributor,KubeSphere 社区用户委员会杭州站站长. 1. 开篇:揭开神秘面纱,etcd 如何驱动 KubeSp ...
- 云原生爱好者周刊:GitHub 官方文档终于开源了!
云原生一周动态要闻: API 在 Kubernetes 1.22 中被删除 ContainIQ 公开发布 - Kubernetes 本地实时监控! Sophos 收购 Capsule8 开源项目推荐 ...
- Curve 分布式存储在 KubeSphere 中的实践
Curve 介绍 Curve 是网易开发的现代存储系统,目前支持文件存储 (CurveFS) 和块存储 (CurveBS).现在它作为一个沙盒项目托管在 CNCF. Curve 是一个高性能.轻量级操 ...
- dotnet core微服务框架Jimu介绍
jimu是一个基于.Net6.0 简单易用的微服务框架,参考了很多开源库以及想法,使用了大量的开源库(如 DotNetty, consul.net, Flurl.Http, Json.net, Log ...
- C++之OpenCV入门到提高004:Mat 对象的使用
一.介绍 今天是这个系列<C++之 Opencv 入门到提高>得第四篇文章.这篇文章很简单,介绍如何使用 Mat 对象来实例化图像实例,了解它的构造函数和常用的方法,这是基础,为以后的学习 ...