瀏覽代碼

静态资源合并压缩

懒得勤快 5 年之前
父節點
當前提交
25cb881ebd

+ 96 - 0
src/Masuit.MyBlogs.Core/Extensions/MiddlewareExtension.cs

@@ -99,5 +99,101 @@ namespace Masuit.MyBlogs.Core.Extensions
             });
             return services;
         }
+
+        /// <summary>
+        /// 添加静态资源打包
+        /// </summary>
+        /// <param name="app"></param>
+        /// <returns></returns>
+        public static IApplicationBuilder UseBundles(this IApplicationBuilder app)
+        {
+            app.UseBundling(bundles =>
+            {
+                bundles.AddCss("/main.css")
+                    .Include("/Content/bootstrap.min.css")
+                    .Include("/fonts/icomoon.min.css")
+                    .Include("/Content/jquery.paging.css")
+                    .Include("/Content/common/reset.css")
+                    .Include("/Content/common/loading.css")
+                    .Include("/Content/common/style.css")
+                    .Include("/Content/common/articlestyle.css")
+                    .Include("/Content/common/leaderboard.css")
+                    .Include("/Content/microtip.min.css")
+                    .Include("/Assets/breadcrumb/style.css")
+                    .Include("/Assets/nav/css/style.css")
+                    .Include("/Assets/tippy/tippy.css");
+                bundles.AddCss("/filemanager.css")
+                    .Include("/Content/bootswatch.min.css")
+                    .Include("/fonts/icomoon.min.css")
+                    .Include("/ng-views/filemanager/css/animations.css")
+                    .Include("/ng-views/filemanager/css/dialogs.css")
+                    .Include("/ng-views/filemanager/css/main.css")
+                    .Include("/Content/common/loading.min.css");
+                bundles.AddCss("/dashboard.css")
+                    .Include("/Assets/jedate/jedate.min.css")
+                    .Include("/Assets/fileupload/filestyle.min.css")
+                    .Include("/Assets/select3/bundle.min.css")
+                    .Include("/Content/ng-table.min.css")
+                    .Include("/Content/common/loading.min.css")
+                    .Include("/Content/microtip.min.css")
+                    .Include("/Content/checkbox.min.css")
+                    .Include("/ng-views/css/app.css");
+                bundles.AddCss("/article.css")
+                    .Include("/Assets/jquery.tocify/jquery.tocify.min.css")
+                    .Include("/Assets/UEditor/third-party/SyntaxHighlighter/styles/shCore.min.css")
+                    .Include("/Assets/share/share.css")
+                    .Include("/Assets/highlight/css/highlight.css");
+
+                bundles.AddJs("/main.js").Include("/Scripts/bootstrap.min.js")
+                    .Include("/Scripts/bootstrap-suggest.min.js")
+                    .Include("/Scripts/jquery.query.js")
+                    .Include("/Scripts/jquery.paging.js")
+                    .Include("/Scripts/ripplet.js")
+                    .Include("/Scripts/global/scripts.js")
+                    .Include("/Assets/tippy/tippy.js")
+                    .Include("/Assets/newsbox/jquery.bootstrap.newsbox.js")
+                    .Include("/Assets/tagcloud/js/tagcloud.js")
+                    .Include("/Assets/scrolltop/js/scrolltop.js")
+                    .Include("/Assets/nav/js/main.js");
+                bundles.AddJs("/filemanager.js")
+                    .Include("/Scripts/ng-file-upload.min.js")
+                    .Include("/Scripts/bootstrap.min.js")
+                    .Include("/ng-views/filemanager/js/app.js")
+                    .Include("/ng-views/filemanager/js/directives/directives.js")
+                    .Include("/ng-views/filemanager/js/filters/filters.js")
+                    .Include("/ng-views/filemanager/js/providers/config.js")
+                    .Include("/ng-views/filemanager/js/entities/chmod.js")
+                    .Include("/ng-views/filemanager/js/entities/item.js")
+                    .Include("/ng-views/filemanager/js/services/apihandler.js")
+                    .Include("/ng-views/filemanager/js/services/apimiddleware.js")
+                    .Include("/ng-views/filemanager/js/services/filenavigator.js")
+                    .Include("/ng-views/filemanager/js/providers/translations.js")
+                    .Include("/ng-views/filemanager/js/controllers/main.js")
+                    .Include("/ng-views/filemanager/js/controllers/selector-controller.js");
+                bundles.AddJs("/dashboard.js")
+                    .Include("/Scripts/ng-file-upload.js")
+                    .Include("/Scripts/tm.pagination.js")
+                    .Include("/Scripts/ng-table.js")
+                    .Include("/Scripts/signalr.js")
+                    .Include("/Assets/select3/select3-full.js")
+                    .Include("/Assets/jedate/jquery.jedate.js")
+                    .Include("/ng-views/app/app.config.js")
+                    .Include("/ng-views/app/route.config.js")
+                    .Include("/ng-views/app/angular-ueditor.js")
+                    .Include("/ng-views/app/template.js")
+                    .Include("/ng-views/app/form.js")
+                    .Include("/ng-views/controllers/main.js");
+                bundles.AddJs("/article.js")
+                    .Include("/Assets/share/jquery.qrcode.min.js")
+                    .Include("/Assets/share/jquery.share.min.js")
+                    .Include("/Assets/highlight/js/highlight.js")
+                    .Include("/Assets/UEditor/third-party/SyntaxHighlighter/scripts/shCore.min.js")
+                    .Include("/Assets/UEditor/third-party/SyntaxHighlighter/scripts/bundle.min.js")
+                    .Include("/Assets/jquery.tocify/jquery.tocify.js")
+                    .Include("/Scripts/global/article.js")
+                    .Include("/Assets/highlight/js/highlight.js");
+            });
+            return app;
+        }
     }
 }

+ 2 - 1
src/Masuit.MyBlogs.Core/Masuit.MyBlogs.Core.csproj

@@ -24,7 +24,7 @@
     <ItemGroup>
         <PackageReference Include="Aliyun.OSS.SDK.NetCore" Version="2.9.1" />
         <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="6.0.0" />
-        <PackageReference Include="AutoMapper.Extensions.ExpressionMapping" Version="3.0.6" />
+        <PackageReference Include="AutoMapper.Extensions.ExpressionMapping" Version="3.1.0" />
         <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="7.0.0" />
         <PackageReference Include="CacheManager.Microsoft.Extensions.Caching.Memory" Version="2.0.0-beta-1629" />
         <PackageReference Include="CacheManager.Serialization.Json" Version="2.0.0-beta-1629" />
@@ -36,6 +36,7 @@
         <PackageReference Include="Hangfire.MemoryStorage" Version="1.7.0" />
         <PackageReference Include="htmldiff.net-core" Version="1.3.6" />
         <PackageReference Include="IP2Region" Version="1.2.0" />
+        <PackageReference Include="Karambolo.AspNetCore.Bundling.NUglify" Version="3.1.0" />
         <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.2" />
         <PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson" Version="3.1.2" />
         <PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="3.1.2" />

+ 1 - 1
src/Masuit.MyBlogs.Core/Properties/launchSettings.json

@@ -18,7 +18,7 @@
     "Masuit.MyBlogs.Core": {
       "commandName": "Project",
       "environmentVariables": {
-        "ASPNETCORE_ENVIRONMENT": "Development"
+        "ASPNETCORE_ENVIRONMENT": ""
       },
       "applicationUrl": "http://localhost:5000"
     }

+ 6 - 3
src/Masuit.MyBlogs.Core/Startup.cs

@@ -58,13 +58,15 @@ namespace Masuit.MyBlogs.Core
         /// 配置中心
         /// </summary>
         public IConfiguration Configuration { get; set; }
-
+        private readonly IWebHostEnvironment _env;
         /// <summary>
         /// asp.net core核心配置
         /// </summary>
         /// <param name="configuration"></param>
-        public Startup(IConfiguration configuration)
+        public Startup(IConfiguration configuration, IWebHostEnvironment env)
         {
+            _env = env;
+
             void BindConfig()
             {
                 Configuration = configuration;
@@ -133,6 +135,7 @@ namespace Masuit.MyBlogs.Core
                 options.PopupShowTimeWithChildren = true;
                 options.PopupShowTrivial = true;
             }).AddEntityFramework();
+            services.AddBundling().UseDefaults(_env).UseNUglify().EnableCacheHeader(TimeSpan.FromHours(1));
             services.AddMapper().AddAutofac().AddMyMvc().Configure<ForwardedHeadersOptions>(options => // X-Forwarded-For
             {
                 options.ForwardLimit = null;
@@ -174,7 +177,7 @@ namespace Masuit.MyBlogs.Core
             {
                 CommonHelper.SystemSettings.TryAdd(key, value);
             }
-
+            app.UseBundles();
             UseLuceneSearch(env, hangfire, luceneIndexerOptions);
             if (bool.Parse(Configuration["Https:Enabled"]))
             {

+ 30 - 21
src/Masuit.MyBlogs.Core/Views/Dashboard/FileManager.cshtml

@@ -7,30 +7,39 @@
     <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
     <meta charset="utf-8">
     <title>资源管理器</title>
-
-    <link href="~/Content/bootswatch.min.css" rel="stylesheet" />
-    <link href="~/fonts/icomoon.min.css" rel="stylesheet" />
-    <link href="~/ng-views/filemanager/css/animations.css" rel="stylesheet">
-    <link href="~/ng-views/filemanager/css/dialogs.css" rel="stylesheet">
-    <link href="~/ng-views/filemanager/css/main.css" rel="stylesheet">
-    <link href="~/Content/common/loading.min.css" rel="stylesheet" />
+    <environment names="Development">
+        <link href="~/Content/bootswatch.min.css" rel="stylesheet" />
+        <link href="~/fonts/icomoon.min.css" rel="stylesheet" />
+        <link href="~/ng-views/filemanager/css/animations.css" rel="stylesheet">
+        <link href="~/ng-views/filemanager/css/dialogs.css" rel="stylesheet">
+        <link href="~/ng-views/filemanager/css/main.css" rel="stylesheet">
+        <link href="~/Content/common/loading.min.css" rel="stylesheet" />
+    </environment>
+    <environment names="Stage,Production">
+        @await Styles.RenderAsync("~/bundles/filemanager.css")
+    </environment>
     <script src="https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js"></script>
     <script src="https://cdn.staticfile.org/angular.js/1.7.7/angular.min.js"></script>
     <script src="https://cdn.staticfile.org/angular-translate/2.18.1/angular-translate.min.js"></script>
-    <script src="~/Scripts/ng-file-upload.min.js"></script>
-    <script src="~/Scripts/bootstrap.min.js"></script>
-    <script src="~/ng-views/filemanager/js/app.js"></script>
-    <script src="~/ng-views/filemanager/js/directives/directives.js"></script>
-    <script src="~/ng-views/filemanager/js/filters/filters.js"></script>
-    <script src="~/ng-views/filemanager/js/providers/config.js"></script>
-    <script src="~/ng-views/filemanager/js/entities/chmod.js"></script>
-    <script src="~/ng-views/filemanager/js/entities/item.js"></script>
-    <script src="~/ng-views/filemanager/js/services/apihandler.js"></script>
-    <script src="~/ng-views/filemanager/js/services/apimiddleware.js"></script>
-    <script src="~/ng-views/filemanager/js/services/filenavigator.js"></script>
-    <script src="~/ng-views/filemanager/js/providers/translations.js"></script>
-    <script src="~/ng-views/filemanager/js/controllers/main.js"></script>
-    <script src="~/ng-views/filemanager/js/controllers/selector-controller.js"></script>
+    <environment names="Development">
+        <script src="~/Scripts/ng-file-upload.min.js"></script>
+        <script src="~/Scripts/bootstrap.min.js"></script>
+        <script src="~/ng-views/filemanager/js/app.js"></script>
+        <script src="~/ng-views/filemanager/js/directives/directives.js"></script>
+        <script src="~/ng-views/filemanager/js/filters/filters.js"></script>
+        <script src="~/ng-views/filemanager/js/providers/config.js"></script>
+        <script src="~/ng-views/filemanager/js/entities/chmod.js"></script>
+        <script src="~/ng-views/filemanager/js/entities/item.js"></script>
+        <script src="~/ng-views/filemanager/js/services/apihandler.js"></script>
+        <script src="~/ng-views/filemanager/js/services/apimiddleware.js"></script>
+        <script src="~/ng-views/filemanager/js/services/filenavigator.js"></script>
+        <script src="~/ng-views/filemanager/js/providers/translations.js"></script>
+        <script src="~/ng-views/filemanager/js/controllers/main.js"></script>
+        <script src="~/ng-views/filemanager/js/controllers/selector-controller.js"></script>
+    </environment>
+    <environment names="Stage,Production">
+        @await Scripts.RenderAsync("~/bundles/filemanager.js")
+    </environment>
 </head>
 
 <body class="ng-cloak" data-ng-app="FileManagerApp">

+ 15 - 13
src/Masuit.MyBlogs.Core/Views/Dashboard/Index.cshtml

@@ -23,16 +23,20 @@
     <link href="https://cdn.staticfile.org/notie/4.3.1/notie.min.css" rel="stylesheet">
     <link href="https://cdn.staticfile.org/izitoast/1.4.0/css/iziToast.min.css" rel="stylesheet">
     <link href="https://cdn.staticfile.org/node-waves/0.7.6/waves.min.css" rel="stylesheet">
-    <link href="~/fonts/icomoon.min.css" rel="stylesheet" />
-    <link href="~/Assets/layui/css/layui.min.css" rel="stylesheet" />
-    <link href="~/Assets/jedate/jedate.min.css" rel="stylesheet" />
-    <link href="~/Assets/fileupload/filestyle.min.css" rel="stylesheet" />
-    <link href="~/Assets/select3/bundle.min.css" rel="stylesheet" />
-    <link href="~/Content/ng-table.min.css" rel="stylesheet" />
-    <link href="~/Content/common/loading.min.css" rel="stylesheet" />
-    <link href="~/Content/microtip.min.css" rel="stylesheet" />
-    <link href="~/Content/checkbox.min.css" rel="stylesheet" />
-    <link href="~/ng-views/css/app.css" rel="stylesheet" />
+    <environment names="Development">
+        <link href="~/fonts/icomoon.min.css" rel="stylesheet" />
+        <link href="~/Assets/jedate/jedate.min.css" rel="stylesheet" />
+        <link href="~/Assets/fileupload/filestyle.min.css" rel="stylesheet" />
+        <link href="~/Assets/select3/bundle.min.css" rel="stylesheet" />
+        <link href="~/Content/ng-table.min.css" rel="stylesheet" />
+        <link href="~/Content/common/loading.min.css" rel="stylesheet" />
+        <link href="~/Content/microtip.min.css" rel="stylesheet" />
+        <link href="~/Content/checkbox.min.css" rel="stylesheet" />
+        <link href="~/ng-views/css/app.css" rel="stylesheet" />
+    </environment>
+    <environment names="Stage,Production">
+        @await Styles.RenderAsync("/bundles/dashboard.css")
+    </environment>
 
     <script src="https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js"></script>
     <script src="https://img.highcharts.com.cn/highstock/highstock.js"></script>
@@ -60,7 +64,6 @@
     <script src="https://cdn.staticfile.org/izitoast/1.4.0/js/iziToast.min.js"></script>
     <script src="https://cdn.staticfile.org/node-waves/0.7.6/waves.min.js"></script>
     <script src="~/Scripts/ng-file-upload.min.js"></script>
-    <script src="~/Scripts/layer/layer.js"></script>
     <script src="~/Scripts/tm.pagination.js"></script>
     <script src="~/Scripts/ng-table.min.js"></script>
     <script src="~/Scripts/signalr.js"></script>
@@ -74,7 +77,6 @@
     <script src="~/ng-views/app/template.min.js"></script>
     <script src="~/ng-views/app/form.js"></script>
     <script src="~/ng-views/controllers/main.js"></script>
-
 </head>
 <body data-ng-controller="main as mactrl" data-ng-class="{ 'sw-toggled': mactrl.layoutType === '1'}">
     <header id="header" data-current-skin={{mactrl.currentSkin}} data-ng-include="'/ng-views/template/header.html'"></header>
@@ -89,4 +91,4 @@
     <div data-ng-include="'/ng-views/template/loading.html'"></div>
 </body>
 </html>
-<mini-profiler max-traces="5"/>
+<mini-profiler max-traces="5" />

+ 13 - 13
src/Masuit.MyBlogs.Core/Views/Post/Details.cshtml

@@ -14,15 +14,19 @@
     string cid = string.IsNullOrEmpty(Context.Request.Query["cid"]) ? "0" : Context.Request.Query["cid"].ToString();
     Advertisement ad = ViewBag.Ads;
 }
-<link href="~/Assets/layui/css/layui.css" rel="stylesheet" />
-<link href="~/Assets/jquery.tocify/jquery.tocify.min.css" rel="stylesheet" />
-<script src="~/Assets/layui/layui.all.js"></script>
-<link href="~/Assets/UEditor/third-party/SyntaxHighlighter/styles/shCore.min.css" rel="stylesheet" />
-<link href="~/Assets/share/share.css" rel="stylesheet" />
-<link href="~/Assets/highlight/css/highlight.css" rel="stylesheet" />
-<script src="~/Assets/share/jquery.qrcode.min.js"></script>
-<script src="~/Assets/share/jquery.share.min.js"></script>
-<script src="~/Assets/highlight/js/highlight.js"></script>
+<environment names="Development">
+    <link href="~/Assets/jquery.tocify/jquery.tocify.min.css" rel="stylesheet" />
+    <link href="~/Assets/UEditor/third-party/SyntaxHighlighter/styles/shCore.min.css" rel="stylesheet" />
+    <link href="~/Assets/share/share.css" rel="stylesheet" />
+    <link href="~/Assets/highlight/css/highlight.css" rel="stylesheet" />
+    <script src="~/Assets/share/jquery.qrcode.min.js"></script>
+    <script src="~/Assets/share/jquery.share.min.js"></script>
+    <script src="~/Assets/highlight/js/highlight.js"></script>
+</environment>
+<environment names="Stage,Production">
+    @await Styles.RenderAsync("/bundles/article.css")
+    @await Scripts.RenderAsync("/bundles/article.js")
+</environment>
 <div class="container">
     <ol class="cd-breadcrumb triangle">
         <li><a asp-controller="Home" asp-action="Index">首页</a></li>
@@ -380,10 +384,6 @@
 <noscript>
     <iframe src="*.htm"></iframe>
 </noscript>
-<script src="~/Assets/UEditor/third-party/SyntaxHighlighter/scripts/shCore.min.js"></script>
-<script src="~/Assets/UEditor/third-party/SyntaxHighlighter/scripts/bundle.min.js"></script>
-<script src="~/Assets/jquery.tocify/jquery.tocify.js"></script>
-<script src="~/Scripts/global/article.js"></script>
 <script>
     @if(Model.DisableCopy) {
         <text>

+ 14 - 14
src/Masuit.MyBlogs.Core/Views/Post/Details_Admin.cshtml

@@ -15,14 +15,20 @@
     string cid = string.IsNullOrEmpty(Context.Request.Query["cid"]) ? "0" : Context.Request.Query["cid"].ToString();
     Advertisement ad = ViewBag.Ads;
 }
-<link href="~/Assets/layui/css/layui.min.css" rel="stylesheet" />
-<link href="~/Assets/jquery.tocify/jquery.tocify.min.css" rel="stylesheet" />
-<script src="~/Assets/layui/layui.all.js"></script>
-<link href="~/Assets/UEditor/third-party/SyntaxHighlighter/styles/shCore.min.css" rel="stylesheet" />
-<link href="~/Assets/highlight/css/highlight.css" rel="stylesheet" />
-<link href="~/Assets/share/share.css" rel="stylesheet" />
-<script src="~/Assets/share/jquery.qrcode.min.js"></script>
-<script src="~/Assets/share/jquery.share.min.js"></script>
+<script src="https://cdn.staticfile.org/jqueryui/1.12.1/jquery-ui.min.js"></script>
+<environment names="Development">
+    <link href="~/Assets/jquery.tocify/jquery.tocify.min.css" rel="stylesheet" />
+    <link href="~/Assets/UEditor/third-party/SyntaxHighlighter/styles/shCore.min.css" rel="stylesheet" />
+    <link href="~/Assets/share/share.css" rel="stylesheet" />
+    <link href="~/Assets/highlight/css/highlight.css" rel="stylesheet" />
+    <script src="~/Assets/share/jquery.qrcode.min.js"></script>
+    <script src="~/Assets/share/jquery.share.min.js"></script>
+    <script src="~/Assets/highlight/js/highlight.js"></script>
+</environment>
+<environment names="Stage,Production">
+    @await Styles.RenderAsync("/bundles/article.css")
+    @await Scripts.RenderAsync("/bundles/article.js")
+</environment>
 <div class="container">
     <ol class="cd-breadcrumb triangle">
         <li><a asp-controller="Home" asp-action="Index">首页</a></li>
@@ -312,12 +318,6 @@
         </form>
     </div>
 </div>
-<script src="https://cdn.staticfile.org/jqueryui/1.12.1/jquery-ui.min.js"></script>
-<script src="~/Assets/UEditor/third-party/SyntaxHighlighter/scripts/shCore.min.js"></script>
-<script src="~/Assets/UEditor/third-party/SyntaxHighlighter/scripts/bundle.min.js"></script>
-<script src="~/Assets/jquery.tocify/jquery.tocify.js"></script>
-<script src="~/Scripts/global/article.js"></script>
-<script src="~/Assets/highlight/js/highlight.js"></script>
 <script>
     function getcomments() {
         window.post("/comment/getcomments",{

+ 13 - 5
src/Masuit.MyBlogs.Core/Views/Post/HistoryVersion.cshtml

@@ -8,8 +8,19 @@
     string[] colors = { "success", "info", "primary", "warning", "danger", "default", "primary" };
     Advertisement ad = ViewBag.Ads;
 }
-<link href="~/Assets/jquery.tocify/jquery.tocify.min.css" rel="stylesheet" />
-<link href="~/Assets/UEditor/third-party/SyntaxHighlighter/styles/shCore.min.css" rel="stylesheet" />
+<environment names="Development">
+    <link href="~/Assets/jquery.tocify/jquery.tocify.min.css" rel="stylesheet" />
+    <link href="~/Assets/UEditor/third-party/SyntaxHighlighter/styles/shCore.min.css" rel="stylesheet" />
+    <link href="~/Assets/share/share.css" rel="stylesheet" />
+    <link href="~/Assets/highlight/css/highlight.css" rel="stylesheet" />
+    <script src="~/Assets/share/jquery.qrcode.min.js"></script>
+    <script src="~/Assets/share/jquery.share.min.js"></script>
+    <script src="~/Assets/highlight/js/highlight.js"></script>
+</environment>
+<environment names="Stage,Production">
+    @await Styles.RenderAsync("/bundles/article.css")
+    @await Scripts.RenderAsync("/bundles/article.js")
+</environment>
 <div class="container">
     <ol class="cd-breadcrumb triangle">
         <li><a asp-controller="Home" asp-action="Index">首页</a></li>
@@ -183,9 +194,6 @@
 <noscript>
     <iframe src="*.htm"></iframe>
 </noscript>
-<script src="~/Assets/UEditor/third-party/SyntaxHighlighter/scripts/shCore.min.js"></script>
-<script src="~/Assets/UEditor/third-party/SyntaxHighlighter/scripts/bundle.min.js"></script>
-<script src="~/Assets/jquery.tocify/jquery.tocify.js"></script>
 <script>
     $(function () {
         @if(Model.Post.DisableCopy) {

+ 13 - 5
src/Masuit.MyBlogs.Core/Views/Post/HistoryVersion_Admin.cshtml

@@ -6,8 +6,19 @@
     string[] colors = { "success", "info", "primary", "warning", "danger", "default", "primary" };
     Advertisement ad = ViewBag.Ads;
 }
-<link href="~/Assets/jquery.tocify/jquery.tocify.min.css" rel="stylesheet" />
-<link href="~/Assets/UEditor/third-party/SyntaxHighlighter/styles/shCore.min.css" rel="stylesheet" />
+<environment names="Development">
+    <link href="~/Assets/jquery.tocify/jquery.tocify.min.css" rel="stylesheet" />
+    <link href="~/Assets/UEditor/third-party/SyntaxHighlighter/styles/shCore.min.css" rel="stylesheet" />
+    <link href="~/Assets/share/share.css" rel="stylesheet" />
+    <link href="~/Assets/highlight/css/highlight.css" rel="stylesheet" />
+    <script src="~/Assets/share/jquery.qrcode.min.js"></script>
+    <script src="~/Assets/share/jquery.share.min.js"></script>
+    <script src="~/Assets/highlight/js/highlight.js"></script>
+</environment>
+<environment names="Stage,Production">
+    @await Styles.RenderAsync("/bundles/article.css")
+    @await Scripts.RenderAsync("/bundles/article.js")
+</environment>
 <div class="container">
     <ol class="cd-breadcrumb triangle">
         <li><a asp-controller="Home" asp-action="Index">首页</a></li>
@@ -145,9 +156,6 @@
         </div>
     </div>
 </div>
-<script src="~/Assets/UEditor/third-party/SyntaxHighlighter/scripts/shCore.min.js"></script>
-<script src="~/Assets/UEditor/third-party/SyntaxHighlighter/scripts/bundle.min.js"></script>
-<script src="~/Assets/jquery.tocify/jquery.tocify.js"></script>
 <script>
     $(function() {
 		$("#toc").show();

+ 5 - 5
src/Masuit.MyBlogs.Core/Views/Post/Publish.cshtml

@@ -7,6 +7,10 @@
 }
 <link href="~/Assets/fileupload/filestyle.css" rel="stylesheet" />
 <link href="~/Assets/semantic/semantic.min.css" rel="stylesheet" />
+<script src="https://cdn.staticfile.org/semantic-ui/2.4.1/semantic.min.js"></script>
+<script src="~/Assets/UEditor/ueditor.config.front.js"></script>
+<script src="~/Assets/UEditor/ueditor.all.js"></script>
+<script src="~/Scripts/publish/publish.js"></script>
 <div class="container">
     <ol class="cd-breadcrumb triangle">
         <li><a asp-controller="Home" asp-action="Index">首页</a></li>
@@ -86,8 +90,4 @@
             </div>
         </div>
     </form>
-</div>
-<script src="https://cdn.staticfile.org/semantic-ui/2.4.1/semantic.min.js"></script>
-<script src="~/Assets/UEditor/ueditor.config.front.min.js"></script>
-<script src="~/Assets/UEditor/ueditor.all.min.js"></script>
-<script src="~/Scripts/publish/publish.min.js"></script>
+</div>

+ 33 - 23
src/Masuit.MyBlogs.Core/Views/Shared/_Layout.cshtml

@@ -29,19 +29,24 @@
     <link href="https://cdn.staticfile.org/notie/4.3.1/notie.min.css" rel="stylesheet">
     <link href="https://cdn.staticfile.org/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
     <link href="https://cdn.staticfile.org/animate.css/3.7.0/animate.min.css" rel="stylesheet">
-    <link href="~/Content/bootstrap.min.css" rel="stylesheet">
     <link href="~/Assets/layui/css/layui.min.css" rel="stylesheet" />
-    <link href="~/fonts/icomoon.min.css" rel="stylesheet" />
-    <link href="~/Content/jquery.paging.css" rel="stylesheet" />
-    <link href="~/Content/common/reset.css" rel="stylesheet" />
-    <link href="~/Content/common/loading.css" rel="stylesheet" />
-    <link href="~/Content/common/style.css" rel="stylesheet" />
-    <link href="~/Content/common/articlestyle.css" rel="stylesheet" />
-    <link href="~/Content/common/leaderboard.css" rel="stylesheet" />
-    <link href="~/Content/microtip.min.css" rel="stylesheet" />
-    <link href="~/Assets/breadcrumb/style.css" rel="stylesheet" />
-    <link href="~/Assets/nav/css/style.css" rel="stylesheet" />
-    <link href="~/Assets/tippy/tippy.css" rel="stylesheet" />
+    <environment names="Development">
+        <link href="~/Content/bootstrap.min.css" rel="stylesheet">
+        <link href="~/fonts/icomoon.min.css" rel="stylesheet" />
+        <link href="~/Content/jquery.paging.css" rel="stylesheet" />
+        <link href="~/Content/common/reset.css" rel="stylesheet" />
+        <link href="~/Content/common/loading.css" rel="stylesheet" />
+        <link href="~/Content/common/style.css" rel="stylesheet" />
+        <link href="~/Content/common/articlestyle.css" rel="stylesheet" />
+        <link href="~/Content/common/leaderboard.css" rel="stylesheet" />
+        <link href="~/Content/microtip.min.css" rel="stylesheet" />
+        <link href="~/Assets/breadcrumb/style.css" rel="stylesheet" />
+        <link href="~/Assets/nav/css/style.css" rel="stylesheet" />
+        <link href="~/Assets/tippy/tippy.css" rel="stylesheet" />
+    </environment>
+    <environment names="Stage,Production">
+        @await Styles.RenderAsync("~/bundles/main.css")
+    </environment>
     <script src="https://cdn.staticfile.org/bluebird/3.5.3/bluebird.min.js"></script>
     <script src="https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js"></script>
     <script src="https://cdn.staticfile.org/modernizr/2010.07.06dev/modernizr.min.js"></script>
@@ -54,19 +59,24 @@
     <script src="https://cdn.staticfile.org/wow/1.1.2/wow.min.js"></script>
     <script src="https://cdn.staticfile.org/ifvisible/1.0.6/ifvisible.min.js"></script>
     <script src="https://cdn.staticfile.org/jquery_lazyload/1.9.7/jquery.lazyload.min.js"></script>
-    <script src="~/Scripts/bootstrap.min.js"></script>
     <script src="~/Scripts/layer/layer.js"></script>
     <script src="~/Assets/layui/layui.min.js"></script>
-    <script src="~/Scripts/bootstrap-suggest.min.js"></script>
-    <script src="~/Scripts/jquery.query.js"></script>
-    <script src="~/Scripts/jquery.paging.js"></script>
-    <script src="~/Scripts/ripplet.js"></script>
-    <script src="~/Scripts/global/scripts.js"></script>
-    <script src="~/Assets/tippy/tippy.js"></script>
-    <script src="~/Assets/newsbox/jquery.bootstrap.newsbox.js"></script>
-    <script src="~/Assets/tagcloud/js/tagcloud.js"></script>
-    <script src="~/Assets/scrolltop/js/scrolltop.js"></script>
-    <script src="~/Assets/nav/js/main.js"></script>
+    <environment names="Development">
+        <script src="~/Scripts/bootstrap.min.js"></script>
+        <script src="~/Scripts/bootstrap-suggest.min.js"></script>
+        <script src="~/Scripts/jquery.query.js"></script>
+        <script src="~/Scripts/jquery.paging.js"></script>
+        <script src="~/Scripts/ripplet.js"></script>
+        <script src="~/Scripts/global/scripts.js"></script>
+        <script src="~/Assets/tippy/tippy.js"></script>
+        <script src="~/Assets/newsbox/jquery.bootstrap.newsbox.js"></script>
+        <script src="~/Assets/tagcloud/js/tagcloud.js"></script>
+        <script src="~/Assets/scrolltop/js/scrolltop.js"></script>
+        <script src="~/Assets/nav/js/main.js"></script>
+    </environment>
+    <environment names="Stage,Production">
+        @await Scripts.RenderAsync("~/bundles/main.js")
+    </environment>
 </head>
 <body>
     <div id="toc" style="display: none;">

+ 4 - 2
src/Masuit.MyBlogs.Core/Views/_ViewImports.cshtml

@@ -1,2 +1,4 @@
-@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
-@addTagHelper *, MiniProfiler.AspNetCore.Mvc
+@using Karambolo.AspNetCore.Bundling.ViewHelpers
+@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
+@addTagHelper *, MiniProfiler.AspNetCore.Mvc
+@addTagHelper *, Karambolo.AspNetCore.Bundling

+ 5 - 5
src/Masuit.MyBlogs.Core/wwwroot/Scripts/global/scripts.js

@@ -257,7 +257,7 @@ function CopyrightProtect() {
             $(".article-content").on("keydown",function (e) {
                 var currKey = 0, evt = e || window.event;
                 currKey = evt.keyCode || evt.which || evt.charCode;
-                if (currKey == 123 || (evt.ctrlKey && currKey == 67) || (evt.ctrlKey && currKey == 85)) { //禁止F12,Ctrl+C,Ctrl+U
+                if (currKey == 123 || (evt.ctrlKey && currKey == 67) || (evt.ctrlKey && currKey == 83) || (evt.ctrlKey && currKey == 85)) { //禁止F12,Ctrl+C,Ctrl+U
                     evt.cancelBubble = true;
                     evt.returnValue = false;
                     return false;
@@ -266,7 +266,7 @@ function CopyrightProtect() {
             $("body").on("keydown",function (e) {
                 var evt = e || window.event;
                 var currKey = evt.keyCode || evt.which || evt.charCode;
-                if (currKey == 123 || (evt.ctrlKey && currKey == 65) || (evt.ctrlKey && currKey == 85) || (evt.ctrlKey && evt.shiftKey) || evt.altKey) { //禁止F12,Ctrl+A,Ctrl+U
+                if (currKey == 123 || (evt.ctrlKey && currKey == 65) || (evt.ctrlKey && currKey == 83) || (evt.ctrlKey && currKey == 85) || (evt.ctrlKey && evt.shiftKey) || evt.altKey) { //禁止F12,Ctrl+A,Ctrl+U
                     evt.cancelBubble = true;
                     evt.returnValue = false;
                     return false;
@@ -298,7 +298,7 @@ function CopyrightProtect4Editor() {
             document.getElementById("ueditor_0").contentWindow.document.body.onkeydown = function (e) {
                 var currKey = 0, evt = e || window.event;
                 currKey = evt.keyCode || evt.which || evt.charCode;
-                if (currKey == 123 || (evt.ctrlKey && currKey == 67) || (evt.ctrlKey && currKey == 85) || (evt.ctrlKey && currKey == 88) || (evt.ctrlKey && evt.shiftKey) || evt.altKey) {
+                if (currKey == 123 || (evt.ctrlKey && currKey == 67) || (evt.ctrlKey && currKey == 83) || (evt.ctrlKey && currKey == 85) || (evt.ctrlKey && currKey == 88) || (evt.ctrlKey && evt.shiftKey) || evt.altKey) {
                     evt.cancelBubble = true;
                     evt.returnValue = false;
                     return false;
@@ -325,7 +325,7 @@ function GlobalCopyrightProtect() {
             $(".article-content").on("keydown",function (e) {
                 var currKey = 0, evt = e || window.event;
                 currKey = evt.keyCode || evt.which || evt.charCode;
-                if (currKey == 123 || (evt.ctrlKey && currKey == 67) || (evt.ctrlKey && currKey == 85)) { //禁止F12,Ctrl+C,Ctrl+U
+                if (currKey == 123 || (evt.ctrlKey && currKey == 67) || (evt.ctrlKey && currKey == 83)|| (evt.ctrlKey && currKey == 85)) { //禁止F12,Ctrl+C,Ctrl+U
                     evt.cancelBubble = true;
                     evt.returnValue = false;
                     return false;
@@ -334,7 +334,7 @@ function GlobalCopyrightProtect() {
             $("body").on("keydown",function (e) {
                 var evt = e || window.event;
                 var currKey = evt.keyCode || evt.which || evt.charCode;
-                if (currKey == 123 || (evt.ctrlKey && currKey == 65) || (evt.ctrlKey && currKey == 85) || (evt.ctrlKey && evt.shiftKey) || evt.altKey) { //禁止F12,Ctrl+A,Ctrl+U
+                if (currKey == 123 || (evt.ctrlKey && currKey == 65) || (evt.ctrlKey && currKey == 83) || (evt.ctrlKey && currKey == 85) || (evt.ctrlKey && evt.shiftKey) || evt.altKey) { //禁止F12,Ctrl+A,Ctrl+U
                     evt.cancelBubble = true;
                     evt.returnValue = false;
                     return false;