添加 BuildBundlerMinifier NuGet 包
在项目根目录创建 bundleconfig.json 文件,用于配置要压缩和捆绑的文件
[
{
"outputFileName": "wwwroot/css/site.min.css",
"inputFiles": [
"wwwroot/css/site.css"
],
"minify": {
"enabled": true,
"renameLocals": true
}
},
{
"outputFileName": "wwwroot/js/site.min.js",
"inputFiles": [
"wwwroot/js/site.js"
],
"minify": {
"enabled": true,
"renameLocals": true
}
},
{
"outputFileName": "wwwroot/js/page-loader.min.js",
"inputFiles": [
"wwwroot/js/page-loader.js"
],
"minify": {
"enabled": true,
"renameLocals": true
}
},
{
"outputFileName": "wwwroot/js/back-to-top.min.js",
"inputFiles": [
"wwwroot/js/back-to-top.js"
],
"minify": {
"enabled": true,
"renameLocals": true
}
},
{
"outputFileName": "wwwroot/js/collapsible-panel.min.js",
"inputFiles": [
"wwwroot/js/collapsible-panel.js"
],
"minify": {
"enabled": true,
"renameLocals": true
}
},
{
"outputFileName": "wwwroot/js/bundle.min.js",
"inputFiles": [
"wwwroot/js/site.js",
"wwwroot/js/page-loader.js",
"wwwroot/js/back-to-top.js"
],
"minify": {
"enabled": true,
"renameLocals": true
}
}
]
@{
// 获取当前页面路径
var currentPage = ViewContext.RouteData.Values["page"]?.ToString() ?? "";
var isPublicNotes = currentPage.StartsWith("/PublicNotes");
var isPrivacy = currentPage.StartsWith("/Privacy");
// 判断是否为开发环境
var isDevelopment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Development";
var cssFile = isDevelopment ? "~/css/site.css" : "~/css/site.min.css";
}
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - 个人研习知识记录笔记</title>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="~/lib/bootstrap-icons/bootstrap-icons.min.css" />
<link rel="stylesheet" href="@cssFile" asp-append-version="true" />
<link rel="stylesheet" href="~/WebNote.styles.css" asp-append-version="true" />
@await RenderSectionAsync("Styles", required: false)
</head>
<body>
<!-- 添加全局加载指示器 -->
<div id="page-loader" class="page-loader">
<div class="loader-container">
<div class="spinner-border text-primary" role="status">
<span class="visually-hidden">加载中...</span>
</div>
<p class="mt-3">页面加载中,请稍候...</p>
</div>
</div>
<!-- 现有布局内容,包装在一个容器内以控制显示 -->
<div id="page-content" class="page-content d-none">
<!-- 页面内容 -->
</div>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
@if (isDevelopment)
{
<script src="~/js/site.js" asp-append-version="true"></script>
<script src="~/js/page-loader.js" asp-append-version="true"></script>
<script src="~/js/back-to-top.js" asp-append-version="true"></script>
}
else
{
<!-- 在生产环境中使用捆绑和压缩的JS文件 -->
<script src="~/js/bundle.min.js" asp-append-version="true"></script>
}
@await RenderSectionAsync("Scripts", required: false)
</body>
</html>