рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдореИрдВ
Microsoft ASP.NET рд╡реЗрдм рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ (рдЕрдиреНрдп рдирд╛рдо: ASP.NET рдмрдВрдбрд▓рд┐рдВрдЧ рдФрд░ рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди, System.Web.Optimization, Microsoft.Web.Optimization рдФрд░ ASP.NET рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди - рдмрдВрдбрд▓рд┐рдВрдЧ) рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдореЙрдбреНрдпреВрд▓рд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИред рдЗрд╕ рд╕рд╛рд▓ рдЕрдкреНрд░реИрд▓ рдореЗрдВ, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХреА рд╡рд┐рд╕реНрддреГрдд
рд╕рдореАрдХреНрд╖рд╛ рдХреА рдереА , рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдордп рдХреЗ рджреМрд░рд╛рди рдЗрд╕ рдЙрддреНрдкрд╛рдж рдореЗрдВ рдмрд╣реБрдд рдмрджрд▓рд╛рд╡ рдЖрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рд╕рдореАрдХреНрд╖рд╛ рдХреЛ рд▓рд┐рдЦрдиреЗ рдФрд░ рдкрд┐рдЫрд▓реЗ рдЫрд╣ рдорд╣реАрдиреЛрдВ рдореЗрдВ рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдореБрдЦреНрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред
Microsoft ASP.NET рд╡реЗрдм рдЕрдиреБрдХреВрд▓рди рдлреНрд░реЗрдорд╡рд░реНрдХ рд╡рд┐рдХрд╛рд╕ рдкрд░рд┐рд╡рд░реНрддрди
рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХрд╛ рдЕрдкреНрд░реИрд▓ рд╕рдВрд╕реНрдХрд░рдг Microsoft ASP.NET рд╡реЗрдм рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ 1 рдмреАрдЯрд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рдмреА / рдПрдо рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреА / рдПрдо рдХреЗ рджреВрд╕рд░реЗ рдмреАрдЯрд╛ рдореЗрдВ, рдЧрдВрднреАрд░ рдмрджрд▓рд╛рд╡ рд╣реБрдП: рдПрдкреАрдЖрдИ рдиреЗ рдмрд╣реБрдд рдХреБрдЫ рдмрджрд▓ рджрд┐рдпрд╛, рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЛрдб рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдмрдВрдбрд▓реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреБрд░рд╛рдиреА рдереА (
EnableDefaultBundles
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░
DynamicFolderBundle
рдХреНрд▓рд╛рд╕ рдЕрдм рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рд╣реИ)ред рдмреА / рдПрдо рдХреЗ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХреЛрдИ рдмрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реБрдЖ, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝реА рдЧрдИ - рдпрд╣ рд╕реАрдбреАрдПрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдиреЗ рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдХреЛ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ред
B / M рдХреЗ рджреВрд╕рд░реЗ рдмреАрдЯрд╛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░,
Global.asax
рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдмрдВрдбрд▓ рдХреЛ
App_Start
рдХреНрд▓рд╛рд╕ рдореЗрдВ рдХреЛрдб рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ
App_Start
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦрдиреЗ рдХреА
App_Start
рдХреА
App_Start
ред
Global.asax
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЖрдкрдХреЛ рдХреЗрд╡рд▓
BundleConfig
рд╡рд░реНрдЧ рдХреЗ
RegisterBundles
рдкрджреНрдзрддрд┐ рдкрд░ рдХреЙрд▓ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
using System.Web.Mvc; using System.Web.Optimization; using System.Web.Routing; namespace BundleTransformer.Example.Mvc { public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes);
рдмрдВрдбрд▓реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрдВрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдирдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВред
BundleConfig
рд░реВрдк рдореЗрдВ
BundleConfig
рд╡рд░реНрдЧ:
using System.Web.Optimization; using BundleTransformer.Core.Orderers; using BundleTransformer.Core.Transformers; namespace BundleTransformer.Example.Mvc { public class BundleConfig { public static void RegisterBundles(BundleCollection bundles) { var cssTransformer = new CssTransformer(); var jsTransformer = new JsTransformer(); var nullOrderer = new NullOrderer(); var commonStylesBundle = new Bundle("~/Bundles/CommonStyles"); commonStylesBundle.Include( "~/Content/Site.css", "~/Content/BundleTransformer.css", "~/AlternativeContent/css/TestCssComponentsPaths.css", "~/Content/themes/base/jquery.ui.core.css", "~/Content/themes/base/jquery.ui.theme.css", "~/Content/themes/base/jquery.ui.resizable.css", "~/Content/themes/base/jquery.ui.button.css", "~/Content/themes/base/jquery.ui.dialog.css", "~/Content/TestTranslators.css", "~/Content/TestLess.less", "~/Content/TestSass.sass", "~/Content/TestScss.scss"); commonStylesBundle.Transforms.Add(cssTransformer); commonStylesBundle.Orderer = nullOrderer; bundles.Add(commonStylesBundle); var modernizrBundle = new Bundle("~/Bundles/Modernizr"); modernizrBundle.Include("~/Scripts/modernizr-2.*"); modernizrBundle.Transforms.Add(jsTransformer); modernizrBundle.Orderer = nullOrderer; bundles.Add(modernizrBundle); var commonScriptsBundle = new Bundle("~/Bundles/CommonScripts"); commonScriptsBundle.Include("~/Scripts/MicrosoftAjax.js", "~/Scripts/jquery-{version}.js", "~/Scripts/jquery-ui-{version}.js", "~/Scripts/jquery.validate.js", "~/Scripts/jquery.validate.unobtrusive.js", "~/Scripts/jquery.unobtrusive-ajax.js", "~/Scripts/knockout-2.*", "~/Scripts/TestCoffeeScript.coffee"); commonScriptsBundle.Transforms.Add(jsTransformer); commonScriptsBundle.Orderer = nullOrderer; bundles.Add(commonScriptsBundle); var jqueryUiStylesDirectoryBundle = new Bundle("~/Bundles/JqueryUiStylesDirectory"); jqueryUiStylesDirectoryBundle.IncludeDirectory("~/Content/themes/base/", "*.css"); jqueryUiStylesDirectoryBundle.Transforms.Add(new CssTransformer( new[] { "*.all.css", "jquery.ui.base.css" })); bundles.Add(jqueryUiStylesDirectoryBundle); var scriptsDirectoryBundle = new Bundle("~/Bundles/ScriptsDirectory"); scriptsDirectoryBundle.IncludeDirectory("~/Scripts/", "*.js"); scriptsDirectoryBundle.Transforms.Add(new JsTransformer( new[] { "*.all.js", "references.js" })); bundles.Add(scriptsDirectoryBundle); } } }
1 рдмреА / рдПрдо рдмреАрдЯрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐
IncludeDirectory
рдФрд░
IncludeDirectory
рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдм рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (
AddFile
рдФрд░
AddDirectory
рдмрдЬрд╛рдп)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░реВрдкрд╛рдВрддрд░рдг рдЕрдм
CssTransformer
рдХреНрд▓рд╛рд╕ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ
Transforms
рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ (рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдореЗрдВ рдЖрдк
CssTransformer
рдФрд░
JsTransformer
рдЙрджрд╛рд╣рд░рдг рдЬреЛрдбрд╝рдХрд░ рдЗрд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ)ред
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ Bundle
рдХреНрд▓рд╛рд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдХреЗ рдЙрдк-рд╡рд░реНрдЧ StyleBundle
(рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП) рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдмрдВрдбрд▓ (рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП) рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрдВрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдб рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдореЗрд╢рди ( CssMinify
рдФрд░ JsMinify
classes рдХреЗ рдЙрджрд╛рд╣рд░рдг) рдкрд╣рд▓реЗ рд╣реА рдЗрди рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛ рдЪреБрдХреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЗрди рдЙрдкрд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ CssMinify
рдФрд░ JsMinify
рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмрдЬрд╛рдп, рд╣рдореЗрдВ рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ ( CssTransformer
рдФрд░ JsTransformer
рдЙрджрд╛рд╣рд░рдг) рд╕реЗ рд░реВрдкрд╛рдВрддрд░рдг рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдлрд╝рд╛рдЗрд▓
_Layout.cshtml
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреГрд╢реНрдп рдХреЛрдб рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдмрдВрдбрд▓реЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>@ViewBag.Title - Bundle Transformer Example MVC Application</title> <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" /> <meta name="viewport" content="width=device-width" /> @Styles.Render("~/Bundles/CommonStyles") @Scripts.Render("~/Bundles/Modernizr") ... </head> <body> ... @Scripts.Render("~/Bundles/CommonScripts") @RenderSection("scripts", required: false) </body> </html>
рдмрдВрдбрд▓реЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдЕрдм
Render
рд╡рд┐рдзрд┐ (
Styles.Render
рдЙрдкрдпреЛрдЧ CSS рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░
Scripts.Render
рд▓рд┐рдП рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛
Styles.Render
рдХреЛрдб рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛
Scripts.Render
ред
Render
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рди рдХреЗрд╡рд▓ рдмрдВрдбрд▓реЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдмреА / рдПрдо рдХреЗ рд╢реБрд░реБрдЖрддреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ - рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЛрдб рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдердиред
B / M рдЙрд╕ рдореЛрдб рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рдореНрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ:
Web.config
рдлрд╝рд╛рдЗрд▓ рд╕реЗ compilation
рддрддреНрд╡ рдХреЗ debug
рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдорд╛рди ( true
- рдбрд┐рдмрдЧ рдореЛрдб; false
- рд░рд┐рд▓реАрдЬрд╝ рдореЛрдб);BundleTable.EnableOptimizations
рдХреА BundleTable.EnableOptimizations
ред BundleTable.EnableOptimizations
рдкреНрд░реЙрдкрд░реНрдЯреА, рдЬрд┐рд╕реЗ BundleTable.EnableOptimizations
рдХреНрд▓рд╛рд╕ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ( true
- рд░рд┐рд▓реАрдЬрд╝ рдореЛрдб; false
- рдбрд┐рдмрдЧ рдореЛрдб)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, BundleTable.EnableOptimizations
рдХрд╛ рдорд╛рдиред BundleTable.EnableOptimizations
рдЧреБрдг Web.config
рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдкреВрд░реНрд╡рддрд╛ рд▓реЗрддрд╛ рд╣реИред
рд░рд┐рд▓реАрдЬрд╝ рдореЛрдб рдореЗрдВ, рдмрдВрдбрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдХреЛрдб рд╕рдВрдпреБрдХреНрдд рд╣реИ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ)ред рдЖрдЙрдЯрдкреБрдЯ рдирд┐рдореНрди рдлреЙрд░реНрдо рдХрд╛ HTML рдХреЛрдб рд╣реИ:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Home Page - Bundle Transformer Example MVC Application</title> <link href="/favicon.ico" rel="shortcut icon" type="image/x-icon" /> <meta name="viewport" content="width=device-width" /> <link href="/Bundles/CommonStyles?v=IWN75r8IOIWnlehQ6JVPUgrb7UER075iobpzbjYTtRQ1" rel="stylesheet"/> <script src="/Bundles/Modernizr?v=1dm47T0PPFmcdy8ssp2EZ4h8yT2SjNhVvtdbc0MyDAs1"></script> ... </head> <body> ... <script src="/Bundles/CommonScripts?v=qWsyReB8UFAt-HPS-6MCkeDDTs2lQgYMdyCUd2V9O4o1"></script> </body> </html>
рдФрд░ рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ, рдмрдВрдбрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрдирдХреЗ рдореВрд▓ рд░реВрдк рдореЗрдВ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Home Page - Bundle Transformer Example MVC Application</title> <link href="/favicon.ico" rel="shortcut icon" type="image/x-icon" /> <meta name="viewport" content="width=device-width" /> <link href="/Content/Site.css" rel="stylesheet"/> <link href="/Content/BundleTransformer.css" rel="stylesheet"/> <link href="/AlternativeContent/css/TestCssComponentsPaths.css" rel="stylesheet"/> <link href="/Content/themes/base/jquery.ui.core.css" rel="stylesheet"/> <link href="/Content/themes/base/jquery.ui.theme.css" rel="stylesheet"/> <link href="/Content/themes/base/jquery.ui.resizable.css" rel="stylesheet"/> <link href="/Content/themes/base/jquery.ui.button.css" rel="stylesheet"/> <link href="/Content/themes/base/jquery.ui.dialog.css" rel="stylesheet"/> <link href="/Content/TestTranslators.css" rel="stylesheet"/> <link href="/Content/TestLess.less" rel="stylesheet"/> <link href="/Content/TestSass.sass" rel="stylesheet"/> <link href="/Content/TestScss.scss" rel="stylesheet"/> <script src="/Scripts/modernizr-2.5.3.js"></script> ... </head> <body> ... <script src="/Scripts/MicrosoftAjax.debug.js"></script> <script src="/Scripts/jquery-1.8.1.js"></script> <script src="/Scripts/jquery-ui-1.8.23.js"></script> <script src="/Scripts/jquery.validate.js"></script> <script src="/Scripts/jquery.validate.unobtrusive.js"></script> <script src="/Scripts/jquery.unobtrusive-ajax.js"></script> <script src="/Scripts/knockout-2.1.0.debug.js"></script> <script src="/Scripts/TestCoffeeScript.coffee"></script> </body> </html>
рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдХреА рдбреАрдмрдЧрд┐рдВрдЧ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдВрдХ рд╣реИрдВред
.scss
.sass
,
.scss
рдФрд░ред рдЕрдЧрд░ HTTP рд╣реИрдВрдбрд▓рд░ рдЗрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП
Web.config
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдЕрдкреНрд░рдорд╛рдгрд┐рдд рд╣реЛрдЧреА рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рддреНрд░реБрдЯрд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯреНрд░рд╛рдВрд╕рд▓реЗрдЯрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░.рд▓реАрд╕, рдмрдВрдбрд▓рдЯреНрд░реЗрдирдлреЙрд░реНрдорд░.рд▓реАрд╕рд▓рд╛рдЗрдЯ, рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░.рд╕реИрд╕рдПрдВрдбрд╕реНрдХ рдФрд░ рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░.рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдВрдЧрдд HTTP рд╣реИрдВрдбрд▓рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝реЗ рдЧрдПред NuGet рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреБрд╡рд╛рджрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп, HTTP рд╣реИрдВрдбрд▓рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ
Web.config
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реЛрддреЗ рд╣реИрдВ:
<?xml version="1.0" encoding="utf-8"?> <configuration> ... <system.web> ... <httpHandlers> <add path="*.less" verb="GET" type="BundleTransformer.LessLite.HttpHandlers.LessAssetHandler, BundleTransformer.LessLite" /> <add path="*.sass" verb="GET" type="BundleTransformer.SassAndScss.HttpHandlers.SassAndScssAssetHandler, BundleTransformer.SassAndScss" /> <add path="*.scss" verb="GET" type="BundleTransformer.SassAndScss.HttpHandlers.SassAndScssAssetHandler, BundleTransformer.SassAndScss" /> <add path="*.coffee" verb="GET" type="BundleTransformer.CoffeeScript.HttpHandlers.CoffeeScriptAssetHandler, BundleTransformer.CoffeeScript" /> </httpHandlers> </system.web> <system.webServer> ... <handlers> ... <add name="LessAssetHandler" path="*.less" verb="GET" type="BundleTransformer.LessLite.HttpHandlers.LessAssetHandler, BundleTransformer.LessLite" resourceType="File" preCondition="" /> <add name="SassAssetHandler" path="*.sass" verb="GET" type="BundleTransformer.SassAndScss.HttpHandlers.SassAndScssAssetHandler, BundleTransformer.SassAndScss" resourceType="File" preCondition="" /> <add name="ScssAssetHandler" path="*.scss" verb="GET" type="BundleTransformer.SassAndScss.HttpHandlers.SassAndScssAssetHandler, BundleTransformer.SassAndScss" resourceType="File" preCondition="" /> <add name="CoffeeScriptAssetHandler" path="*.coffee" verb="GET" type="BundleTransformer.CoffeeScript.HttpHandlers.CoffeeScriptAssetHandler, BundleTransformer.CoffeeScript" resourceType="File" preCondition="" /> </handlers> </system.webServer> ... </configuration>
рдПрдХрдорд╛рддреНрд░ рдЕрдкрд╡рд╛рдж рд╣реИ рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░.рд▓реЗрдПрд╕ рдиреБрдЧреЗрдЯ рдкреИрдХреЗрдЬ: рдЬрдм рдпрд╣ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдбреЙрдЯрд▓реЗрд╕ рдкреИрдХреЗрдЬ рднреА рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ .less рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП HTTP рд╣реИрдВрдбрд▓рд░ рдХреЗ рдЕрдкрдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рдпрд╣ рдореМрдХрд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ
LessAssetHandler
рд╕реЗ HTTP рд╣реИрдВрдбрд▓рд░
LessAssetHandler
рд╕реЗ рдмрджрд▓реЗрдВред
рдЖрдк
Web.config
рдлрд╝рд╛рдЗрд▓ рд╕реЗ
/configuration/bundleTransformer/core/assetHandler
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореВрд▓ HTTP рдЕрдиреБрд╡рд╛рджрдХ рд╣реЗрдбрд░ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рдореНрди рдХреЛрдб рдбрд┐рдлрд╝реЙрд▓реНрдЯ HTTP рд╣реИрдВрдбрд▓рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:
<configuration> ... <bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd"> <core> ... <assetHandler clientCacheDurationInDays="365" enableCompression="true" useLastModifiedHeader="true" useETagHeader="true" serverCacheDurationInMinutes="15" useServerCacheSlidingExpiration="false" disableClientCacheInDebugMode="true" disableCompressionInDebugMode="true" /> ... </core> </bundleTransformer> ... </configuration>
рдЬрд╣рд╛рдВ,
clientCacheDurationInDays="()"
ред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреИрд╢ рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреА рдкрд╛рда рд╕рд╛рдордЧреНрд░реА рдХреА рдЕрд╡рдзрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ (рджрд┐рдиреЛрдВ рдореЗрдВ)редenableCompression="(true|false)"
ред рд╕рдВрд╕рд╛рдзрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЗ GZIP / Deflate рд╕рдВрдкреАрдбрд╝рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИредuseLastModifiedHeader="(true|false)"
ред рдЖрдкрдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Last-Modified
HTTP рд╣реЗрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрд╕рд╛рдзрд┐рдд рдлрд╝рд╛рдЗрд▓ рдмрджрд▓ рдЧрдИ рд╣реИредuseETagHeader="(true|false)"
ред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ETag
HTTP рд╣реИрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рдВрд╕рд╛рдзрд┐рдд рдлрд╝рд╛рдЗрд▓ рдмрджрд▓ рдЧрдИ рд╣реИредserverCacheDurationInMinutes="()"
ред рд╕рд░реНрд╡рд░ рдХреИрд╢ рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреА рдкрд╛рда рд╕рд╛рдордЧреНрд░реА рдХреА рдЕрд╡рдзрд┐ (рдорд┐рдирдЯреЛрдВ рдореЗрдВ) рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИредuseServerCacheSlidingExpiration="(true|false)"
ред рд╕рд░реНрд╡рд░ рдХреЗ рдХреИрд╢ рдЖрдЗрдЯрдо рдХреЛ рд░реЛрд▓-рдЖрдЙрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИредdisableClientCacheInDebugMode="(true|false)"
ред рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреИрд╢рд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИредdisableCompressionInDebugMode="(true|false)"
ред рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЗ GZIP / Deflate рд╕рдВрдкреАрдбрд╝рди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред
рдЕрдиреБрд╡рд╛рджрдХ
рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░: рд▓рд╛рдЗрдЯ рд▓рд╛рдЗрдЯ
рдЕрдкреНрд░реИрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ,
рдбреЙрдЯрд▓реЗрд╕рдХреНрд▓рд╛рдпреЛрдиреЗрд▓реА рдирд╛рдордХ
рдбреЙрдЯрд▓реЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдПрдХ рд╣рд▓реНрдХрд╛ рд╕рдВрд╕реНрдХрд░рдг
рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ ред рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдХреЗрд╡рд▓ LESS рдХрдВрдкрд╛рдЗрд▓рд░ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ ASP.NET рд╕реЗ рдЬреБрдбрд╝реА рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЗрд╕рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, HTTP рд╣реИрдВрдбрд▓рд░)ред
рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░.рд▓реАрд╕рд▓рд╛рдЗрдЯ рд╕реАрдПрд╕рдПрд╕ рдореЗрдВ LESS рдХреЛрдб рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП DotlessClientOnly рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХреНрд╖рдорддрд╛рдУрдВ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░.рд▓реАрд╕рд▓рд╛рдЗрдЯ рдкреВрд░реА рддрд░рд╣ рд╕реЗ
рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХреЗ рд╕рдорд╛рди рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ
LESS рдХреЗ рд╕рд╛рде рд╕рднреА рдХрд╛рд░реНрдп рдХреЗрд╡рд▓ рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛
рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмрдВрдбрд▓ рдЯреНрд░рд╛рдиреНрд╕рдлрд╝реЙрд░реНрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред рд▓рд╛рдЗрдЯ рдореЙрдбреНрдпреВрд▓, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдЕрдзрд┐рдХ рд╣рд▓реНрдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░: рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ
рд╕рдВрд╕реНрдХрд░рдг 1.5.5 рд╕реЗ рдкрд╣рд▓реЗ,
рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░.рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
SassAndCfish.JavaScript рд╕рдВрд╕реНрдХрд░рдг 2.0.2.0 рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, SassAndCfish.JavaScript рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдирд╣реАрдВ рд╣реБрдИ рд╣реИ рдФрд░ рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ (рд╕рдВрд╕реНрдХрд░рдг 1.1.3) рдХреЗ рдкрд╣рд▓реЗ рд╕реЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░.рдХреЙрдлрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдореБрдЭреЗ рдЗрд╕реЗ рдЫреЛрдбрд╝рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдЬреЛ рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ 3.3 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
minimizers
рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдмрдирд╛рддреЗ рд╕рдордп рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдХрдИ рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рд╕реЗ рдЪреБрдирдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдерд╛ред рдЙрддреНрдкрд╛рдж рдХреЗ рд╢реБрд░реБрдЖрддреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдПрдбреЗрдкреНрдЯрд░ рдХреЗрд╡рд▓ рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рдХреЗ 2 рдкрд░рд┐рд╡рд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдереЗ:
рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдЕрдЬрд╛рдХреНрд╕ рдорд┐рдирд┐рдлрд╛рдпрд░ рдФрд░
рд╡рд╛рдИрдпреВрдЖрдИ рдХрдВрдкреНрд░реЗрд╕рд░ ред рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдПрдбреЗрдкреНрдЯрд░ рд▓рдЧрднрдЧ рд╕рднреА рд▓реЛрдХрдкреНрд░рд┐рдп рд╕реАрдПрд╕рдПрд╕ рдФрд░ рдЬреЗрдПрд╕ рдХреЛрдб рдиреНрдпреВрдирддрдо рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░: рдмрдВрдж
рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░.рдХреНрд▓реЛрдЬрд░ рдореЗрдВ 2 рдЬреЗрдПрд╕ рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рд╣реЛрддреЗ рд╣реИрдВ:
ClosureRemoteJsMinifier
рдФрд░
ClosureLocalJsMinifier
ред
ClosureRemoteJsMinifier
Google рдХреНрд▓реЛрдЬрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реЗрд╡рд╛ API рд╡реЗрдм рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреНрдпреВрдирддрдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рдпреА рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди
Google рдХреНрд▓реЛрдЬрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
ClosureLocalJsMinifier
рдиреНрдпреВрдирддрдо рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
рдЬрд╛рд╡рд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдФрд░
рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгред рдлрд╛рдЗрд▓ред
рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░: JSMin
рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ред рдЬреЗрдПрд╕рдПрдо рдореЗрдВ
рдХреНрд░реЙрдХрдлреЛрд░реНрдбрдЬрд╛рдЗрдорд┐рдирд┐рдлрд╛рдпрд░ рдЬреЗрдПрд╕ рдХреЛрдб рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рдПрдбреЙрдкреНрдЯрд░ рд╣реИред
CrockfordJsMinifier
JSMin рдХреЗ C # рдкреЛрд░реНрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬреЛ рдХрд┐ рд╕рдмрд╕реЗ рдкреБрд░рд╛рдирд╛ JS рдХреЛрдб
рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рд╣реИ , рдЬреЛ рдбрдЧрд▓рд╕ рдХреНрд░реЙрдХрдлреЛрд░реНрдб рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред 22 рдордИ 2007 рдХреЗ JSMin рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ C # рдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░: UglifyJS
рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░.UglifyJs рдореЗрдВ
UglifyJsMinifier JS рдХреЛрдб
UglifyJsMinifier
ред
UglifyJsMinifier
JS рдХреЛрдб рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬреЛ Node.js рд╕рдореБрджрд╛рдп рдореЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ,
UglifyJS (рд╕рдВрд╕реНрдХрд░рдг 1.3.3 рдЕрдм рд╕рдорд░реНрдерд┐рдд рд╣реИ)ред
рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░: рдкреИрдХрд░
рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░.рдкреИрдХрд░ рдореЗрдВ
рдПрдбрд╡рд░реНрдбреНрд╕рдЬрд╛рдЗрдорд┐рдирд┐рдлрд╛рдпрд░ рдЬреЗрдПрд╕ рдХреЛрдб
EdwardsJsMinifier
ред
EdwardsJsMinifier
рдбреАрди рдПрдбрд╡рд░реНрдбреНрд╕
рдкреИрдХрд░ рд╕рдВрд╕реНрдХрд░рдг 3.0 JS рдиреНрдпреВрдирддрдо рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдкреИрдХрд░ рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдб рдХреЛ рдиреНрдпреВрдирддрдо рдФрд░ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдмреЗрд╕ 62 рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╡реЗрдм рд╕рд░реНрд╡рд░ GZIP / Deflate рд╕рдВрдкреАрдбрд╝рди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рдиреЗ рдкрд░ Base62 рд╕рдВрдкреАрдбрд╝рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░: CSSO
рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░.рдХреЛрд╕реЛ рдореЗрдВ рдХреНрд░реЗрдЬрд╛рдиреЛрд╡реНрд╕реНрдХреА рд╕реАрдПрд╕рдПрд╕рдПрдордирд┐рдлрд╝рд░ рд╕реАрдПрд╕рдПрд╕ рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рдПрдбрд╛рдкреНрдЯрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
KryzhanovskyCssMinifier
CSS-
minimalizer CSSO рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ (рд╕рдВрд╕реНрдХрд░рдг 1.2.18 рдЕрдм рд╕рдорд░реНрдерд┐рдд рд╣реИ)ред рдпрд╣ рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░
BEM рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛: рд╕рд░реНрдЧреЗрдИ рдХреНрд░рд┐рдЬрд╝рд╛рдиреЛрд╡реНрд╕реНрдХреА рдФрд░ рд╡рд┐рдЯрд╛рд▓реА рд╣рд░рд┐рд╕реЛрд╡ред рдЗрд╕ CSS рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рдФрд░ рдЕрдиреНрдп CSS рдиреНрдпреВрдирддрдордХрд░рдг рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдореБрдЦреНрдп рдЕрдВрддрд░ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдХрдо рд╕реЗ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдСрдкрд░реЗрд╢рди CSS рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ: рдПрдХ рд╣реА рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмреНрд▓реЙрдХ рд╡рд┐рд▓рдп рдХрд░рдирд╛, рдЕрддрд┐рд╡реНрдпрд╛рдкреА рдЧреБрдгреЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛, рдПрдХ рдЕрд▓рдЧ рдмреНрд▓реЙрдХ рдореЗрдВ рдЧреБрдгреЛрдВ рдХреЛ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдирд╛, рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╡рд┐рд▓рдп рдмреНрд▓реЙрдХ рдФрд░ рдЖрджрд┐)ред "рдорд╢реАрди" (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░) рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХреЛ рдХрдо рдХрд░рддреЗ рд╕рдордп рд╕реНрдЯреНрд░рдХреНрдЪрд░рд▓ рдорд┐рдирд┐рдорд╛рдЗрдЬреЗрд╢рди рдПрдХ рдЙрдЪреНрдЪ рдбрд┐рдЧреНрд░реА рд╕рдВрдкреАрдбрд╝рди рджреЗрддрд╛ рд╣реИред
рдореИрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдХреЛ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: CSSO ECMAScript 5 рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореБрдЭреЗ .NET рдХреЗ рд▓рд┐рдП рдПрдХ рдЬреЗрдПрд╕ рдЗрдВрдЬрди рдирд╣реАрдВ рдорд┐рд▓рд╛ рдЬреЛ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХреЗред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореИрдВрдиреЗ .NET рдХреЗ рд▓рд┐рдП V8 JS рдЗрдВрдЬрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛ -
Noesis Javascript .NET ред рдпрд╣ рдЗрдВрдЬрди рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ 2 рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ: 32-рдмрд┐рдЯ рдФрд░ 64-рдмрд┐рдЯред рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдХрд╛рд░рдг, рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░.рдХреЛрд╕реЛ рдореЙрдбреНрдпреВрд▓ 2
рдиреБрдЧреЗрдЯ рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░.рд╕реАрдПрд╕рдУ ред
X 86 рдФрд░
рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░.рд╕реАрдПрд╕рдУ ред
X 64 ред
msvcp100.dll
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯрд╕реНрдХреНрд░рд┐рдкреНрдЯ .NET рдХреЗ рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, Microsoft Visual C ++ 2010 рд╕реЗ
msvcp100.dll
рдФрд░
msvcr100.dll
рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдпреЗ рдЕрд╕реЗрдВрдмрд▓реА рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк Microsoft Visual Studio + 2010 Redistributable Package (
x86 ,
x64 ) рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░: рд╡реЗрдмрдЧреНрд░реЗ
рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ред WG рдореЗрдВ
WgCssMinifier CSS
WgCssMinifier
ред
WgCssMinifier
Microsoft рдХреЗ
рд╡реЗрдмрдЧреНрд░реЗрдЬрд╝ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдПрдХ рдЕрд░реНрде рд╕реАрдПрд╕рдПрд╕ рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ CSS рдХреЛ рдХрдо
рдХрд░рддрд╛ рд╣реИред CSSG рдХреА рддрд░рд╣ WebGrease рдХрд╛ рдЕрд░реНрде рд╕реАрдПрд╕рдПрд╕ рдиреНрдпреВрдирддрдо, рд╕рдВрд░рдЪрдирд╛рддреНрдордХ CSS рдиреНрдпреВрдирддрдордХрд░рдг рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИред
рдлрд┐рд▓рд╣рд╛рд▓, рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░.рдЬреА рдиреВрдЧреЗрдЯ рдкреИрдХреЗрдЬ рдореЗрдВ рдЕрд▓реНрдлрд╛ рд╕реНрдерд┐рддрд┐ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗрдмрдЧреНрд░реЗрд╕ рдХреЗ рдореМрдЬреВрджрд╛ рд╕рдВрд╕реНрдХрд░рдг (рд╕рдВрд╕реНрдХрд░рдг 1.1.0) рдореЗрдВ рдПрдХ
рддреНрд░реБрдЯрд┐ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рдЙрддреНрдкрд╛рджрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдЗрд╕ рдиреНрдпреВрдирддрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рд╣рд╛рд╡рд░реНрдб рдбреЙрдХрд┐рдВрдЧ
рдХреА рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ
"рдмрдВрдбрд▓рд┐рдВрдЧ рдФрд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд┐рдВрдЧ" рджреЗрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред
рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ
рдкрд╣рд▓реЗ рддреАрди рд╕реЗ рд╕рдмрд╕реЗ рднрд░реЛрд╕реЗрдордВрдж рдорд┐рдирд┐рдорд╛рдЗрдЬрд╝рд░ рдиреНрдпреВрдирддрдо рд╣реИрдВ: Microsoft Ajax Minifier, YUI рдХрдВрдкреНрд░реЗрд╕рд░ рдФрд░ Google рдХреНрд▓реЛрдЬрд░ рдХрдВрдкрд╛рдЗрд▓рд░ (JS-code рдХреЗ рд╕рдВрдкреАрдбрд╝рди рдХреА рдбрд┐рдЧреНрд░реА рдореЗрдВ рдЕрдЧреНрд░рдгреА)ред рдЙрдирдореЗрдВ рд╕реЗ рд╕рднреА рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдВрдкреАрдбрд╝рди рдЕрдиреБрдкрд╛рдд рд╣реИ, рдФрд░ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВред
рдирдП рдиреНрдпреВрдирддрдо рдЬреЛ Node.js рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЧрдП рдереЗ: UglifyJS рдФрд░ CSSO рдкрд╣рд▓реЗ рддреАрди рдХреЗ рдиреНрдпреВрдирддрдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрдЪреНрдЪрддрд░ рд╕рдВрдкреАрдбрд╝рди рджреЗрддреЗ рд╣реИрдВ (UglifyJS рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ
Simple
рдореЛрдб рдореЗрдВ Google рдмрдВрдж рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЗрд╕ рд╕реНрддрд░ рдХреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдирд╣реАрдВ рд╣реИ ред
рд╕рдмрд╕реЗ рдкреБрд░рд╛рдиреЗ рдиреНрдпреВрдирддрдо: JSMin рдФрд░ рдкреИрдХрд░, рдЕрдм рдХреЗрд╡рд▓ рд╕рд░рд▓ JS рдХреЛрдб рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡реЗ рд╕рдВрдкреАрдбрд╝рди рдЕрдиреБрдкрд╛рдд рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рд╕реНрддрд░ рджреЛрдиреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЖрдзреБрдирд┐рдХ рдиреНрдпреВрдирддрдо рд╕реЗ рд╣рд╛рд░ рдЬрд╛рддреЗ рд╣реИрдВред
рдореИрдВрдиреЗ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рддреНрд░реБрдЯрд┐ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рдЕрдиреНрдп рдиреНрдпреВрдирддрдо рдХреЗ рд╕рд╛рде рд╡реЗрдмрдЧреНрд░реЗрд╕реНрдЯ рдХреЗ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рд╕реАрдПрд╕рдПрд╕ рдиреНрдпреВрдирддрдо рдХреА рддреБрд▓рдирд╛ рдирд╣реАрдВ рдХреАред рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рд╕реАрдПрд╕рдПрд╕рдУ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреЛрдб рд╕рдВрдкреАрдбрд╝рди рдХреА рдПрдХ рдмрдбрд╝реА рдбрд┐рдЧреНрд░реА рд╣реИред
рд╕реЗрдЯрд┐рдВрдЧреНрд╕
рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕
Web.config
рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд┐рдореНрди рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ (рдпрджрд┐ рд╕рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВ):
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <sectionGroup name="bundleTransformer"> <section name="core" type="BundleTransformer.Core.Configuration.CoreSettings" /> <section name="less" type="BundleTransformer.LessLite.Configuration.LessLiteSettings" /> <section name="sassAndScss" type="BundleTransformer.SassAndScss.Configuration.SassAndScssSettings" /> <section name="microsoftAjax" type="BundleTransformer.MicrosoftAjax.Configuration.MicrosoftAjaxSettings" /> <section name="yui" type="BundleTransformer.Yui.Configuration.YuiSettings" /> <section name="closure" type="BundleTransformer.Closure.Configuration.ClosureSettings" /> <section name="uglify" type="BundleTransformer.UglifyJs.Configuration.UglifySettings" /> <section name="packer" type="BundleTransformer.Packer.Configuration.PackerSettings" /> <section name="csso" type="BundleTransformer.Csso.Configuration.CssoSettings" /> </sectionGroup> ... </configSections> ... <bundleTransformer xmlns="http://tempuri.org/BundleTransformer.Configuration.xsd"> <core enableTracing="false" jsFilesWithMicrosoftStyleExtensions="MicrosoftAjax.js,MicrosoftMvcAjax.js, MicrosoftMvcValidation.js,knockout-$version$.js" useEnableOptimizationsProperty="true"> <css defaultMinifier="NullMinifier"> <minifiers> <add name="NullMinifier" type="BundleTransformer.Core.Minifiers.NullMinifier, BundleTransformer.Core" /> <add name="MicrosoftAjaxCssMinifier" type="BundleTransformer.MicrosoftAjax.Minifiers.MicrosoftAjaxCssMinifier, BundleTransformer.MicrosoftAjax" /> <add name="YuiCssMinifier" type="BundleTransformer.Yui.Minifiers.YuiCssMinifier, BundleTransformer.Yui" /> <add name="KryzhanovskyCssMinifier" type="BundleTransformer.Csso.Minifiers.KryzhanovskyCssMinifier, BundleTransformer.Csso" /> <add name="WgCssMinifier" type="BundleTransformer.WG.Minifiers.WgCssMinifier, BundleTransformer.WG" /> </minifiers> <translators> <add name="NullTranslator" type="BundleTransformer.Core.Translators.NullTranslator, BundleTransformer.Core" enabled="false" /> <add name="LessTranslator" type="BundleTransformer.LessLite.Translators.LessTranslator, BundleTransformer.LessLite" enabled="true" /> <add name="SassAndScssTranslator" type="BundleTransformer.SassAndScss.Translators.SassAndScssTranslator, BundleTransformer.SassAndScss" enabled="true" /> </translators> </css> <js defaultMinifier="NullMinifier"> <minifiers> <add name="NullMinifier" type="BundleTransformer.Core.Minifiers.NullMinifier, BundleTransformer.Core" /> <add name="MicrosoftAjaxJsMinifier" type="BundleTransformer.MicrosoftAjax.Minifiers.MicrosoftAjaxJsMinifier, BundleTransformer.MicrosoftAjax" /> <add name="YuiJsMinifier" type="BundleTransformer.Yui.Minifiers.YuiJsMinifier, BundleTransformer.Yui" /> <add name="ClosureRemoteJsMinifier" type="BundleTransformer.Closure.Minifiers.ClosureRemoteJsMinifier, BundleTransformer.Closure" /> <add name="ClosureLocalJsMinifier" type="BundleTransformer.Closure.Minifiers.ClosureLocalJsMinifier, BundleTransformer.Closure" /> <add name="CrockfordJsMinifier" type="BundleTransformer.JsMin.Minifiers.CrockfordJsMinifier, BundleTransformer.JsMin" /> <add name="UglifyJsMinifier" type="BundleTransformer.UglifyJs.Minifiers.UglifyJsMinifier, BundleTransformer.UglifyJs" /> <add name="EdwardsJsMinifier" type="BundleTransformer.Packer.Minifiers.EdwardsJsMinifier, BundleTransformer.Packer" /> </minifiers> <translators> <add name="NullTranslator" type="BundleTransformer.Core.Translators.NullTranslator, BundleTransformer.Core" enabled="false" /> <add name="CoffeeScriptTranslator" type="BundleTransformer.CoffeeScript.Translators.CoffeeScriptTranslator, BundleTransformer.CoffeeScript" enabled="true" /> </translators> </js> <assetHandler clientCacheDurationInDays="365" enableCompression="true" useLastModifiedHeader="true" useETagHeader="true" serverCacheDurationInMinutes="15" useServerCacheSlidingExpiration="false" disableClientCacheInDebugMode="true" disableCompressionInDebugMode="true" /> </core> <less useNativeMinification="false" severity="0" /> <sassAndScss useNativeMinification="false" /> <microsoftAjax> <css allowEmbeddedAspNetBlocks="false" colorNames="Strict" commentMode="Important" ignoreErrorList="" indentSize="4" minifyExpressions="true" outputMode="SingleLine" blocksStartOnSameLine="NewLine" preprocessorDefineList="" termSemicolons="false" severity="0" /> <js allowEmbeddedAspNetBlocks="false" collapseToLiteral="true" debugLookupList="Debug,$Debug,WAssert,Msn.Debug,Web.Debug" evalTreatment="Ignore" ignoreConditionalCompilation="false" ignoreErrorList="" indentSize="4" inlineSafeStrings="true" knownGlobalNamesList="" localRenaming="CrunchAll" macSafariQuirks="true" minifyCode="true" noAutoRenameList="$super" outputMode="SingleLine" blocksStartOnSameLine="NewLine" preprocessorDefineList="" preserveFunctionNames="false" preserveImportantComments="true" removeFunctionExpressionNames="true" removeUnneededCode="true" renamePairs="" strictMode="false" stripDebugStatements="true" termSemicolons="false" severity="0"/> </microsoftAjax> <yui> <css compressionType="Standard" removeComments="true" lineBreakPosition="-1" /> <js compressionType="Standard" obfuscateJavascript="true" preserveAllSemicolons="false" disableOptimizations="false" ignoreEval="false" severity="0" lineBreakPosition="-1" encoding="UTF8" threadCulture="en-us" /> </yui> <closure> <js> <remote closureCompilerServiceApiUrl="http://closure-compiler.appspot.com/compile" compilationLevel="Simple" prettyPrint="false" excludeDefaultExterns="false" severity="0" /> <local javaVirtualMachinePath="" closureCompilerApplicationPath="" compilationLevel="Simple" prettyPrint="false" languageSpec="EcmaScript3" thirdParty="true" processJqueryPrimitives="false" processClosurePrimitives="false" severity="0" /> </js> </closure> <uglify> <js> <parser strictSemicolons="false" /> <mangler mangle="true" topLevel="false" defines="" except="" noFunctions="false" /> <squeezer makeSequences="true" deadCode="true" unsafe="false" /> <codeGenerator beautify="false" indentStart="0" indentLevel="4" quoteKeys="false" spaceColon="false" asciiOnly="false" /> </js> </uglify> <packer> <js shrinkVariables="true" base62Encode="false" /> </packer> <csso> <css disableRestructuring="false" /> </csso> </bundleTransformer> ... </configuration>
рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд╕рдореАрдХреНрд╖рд╛ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд┐рдиреНрдпрд╛рд╕ рдЦрдВрдб рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ bundleTransformer
, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд╕рдордп рд╕реАрдорд┐рдд рдЕрдкрдиреЗ рдЖрдк рдирдП рд╡рд░реНрдЧреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ:closure
- рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░.рдХреНрд▓реЛрдЬрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕uglify
- рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ред UglifyJs рдореЙрдбреНрдпреВрд▓packer
- рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░.рдкреИрдХрд░ рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕csso
- рдмрдВрдбрд▓рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдорд░.рдХреЛрд╕реЛ рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕
рдЙрдкрд░реЛрдХреНрдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рдирд╛рдо рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рди рднреА рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореВрд▓ рдиреНрдпреВрдирддрдо рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдореИрдВ рдЖрдкрдХреЛ рдпрд╣ рднреА рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЕрдиреБрднрд╛рдЧ рдХреЗ рд▓рд┐рдП bundleTransformer
IntelliSense рд╕рдорд░реНрдерди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ :
рдирд┐рд╖реНрдХрд░реНрд╖
рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдмреА / рдПрдо рдФрд░ рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛редрдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ B / M рдХреЗрд╡рд▓ ASP.NET MVC рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдЖрдк рдЕрдиреНрдп ASP.NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ B / M рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд╡реЗрдм рдлреЙрд░реНрдо рдФрд░ рд╡реЗрдм рдкреЗрдЬ (рд▓рд┐рдВрдХ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд▓реЗрдЦ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдпрд╣ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ)редB / M рдФрд░ рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг .NET рдлреНрд░реЗрдорд╡рд░реНрдХ 4.0 рдХреЗ рддрд╣рдд рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП ASP.NET MVC 3 рдФрд░ ASP.NET рд╡реЗрдм рдкреНрд░рдкрддреНрд░ 4.0 рдореЗрдВ рдЗрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд░реЛрдХ рд░рд╣рд╛ рд╣реИредрд╕рдВрджрд░реНрдн
- рдХреЛрдбрдкреНрд▓реЗрдХреНрд╕ рдмрдВрдбрд▓ рдЯреНрд░рд╛рдВрд╕рдлрд╛рд░реНрдорд░ рдкреГрд╖реНрда
- рдкреГрд╖реНрда рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ ASP.NET рд╡реЗрдм рдЕрдиреБрдХреВрд▓рди рдлреНрд░реЗрдорд╡рд░реНрдХ CodePlex рдкрд░
- рд╣рд╛рд╡рд░реНрдб рдбреЙрд░реНрдХрд┐рдВрдЧ рдХреА рд╡реАрдбрд┐рдпреЛ рд░рд┐рдкреЛрд░реНрдЯ рдмрдВрдбрд▓рд┐рдВрдЧ рдФрд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд┐рдВрдЧ
- - ┬лBuild high-performing HTML 5 applications easily with ASP.NET 4.5┬╗
- ┬лBundling and Minification┬╗
- ┬лAdding Bundling and Minification to Web Forms┬╗ ( )
- ┬лAdding Web Optimization to a Web Pages Site┬╗ ( )
- ┬лKeeping in touch with the Web optimization team┬╗