Самый быстрый способ загрузить множество файлов и переменных js

Для более крупного проекта, который представляет собой приложение для одного веб-сайта, я использую очень много вызовов jquery, js и ajax.

Как и в C# и ASP.Net, я, конечно, пытался разделить функции / переменные на несколько js-файлов для категорий, например, 1 файл для моих "целей", 1 файл для моих "комиссий" (которые являются частью мое заявление)...

Теперь я почти закончил свою работу здесь, и у меня появилось около 20-25 файлов js, которые я загружаю один за другим в моем файле default.aspx...

Это действительно правильный (и самый быстрый) способ справиться с этим?

3 ответа

Объединение и минимизация на самом деле является новой функцией ASP.Net 4.5

Вы можете увидеть это, создав новое веб-приложение ASP.Net MVC 4 с помощью Visual Studio, и вы используете шаблон веб-приложения, он создает класс конфигурации пакета, который, вероятно, выполняет то, что вам нужно:

public class BundleConfig
{
    // For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725
    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js"));

        bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
                    "~/Scripts/jquery-ui-{version}.js"));

        bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                    "~/Scripts/jquery.unobtrusive*",
                    "~/Scripts/jquery.validate*"));

        // Use the development version of Modernizr to develop with and learn from. Then, when you're
        // ready for production, use the build tool at http://modernizr.com to pick only the tests you need.
        bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
                    "~/Scripts/modernizr-*"));

        bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));

        bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
                    "~/Content/themes/base/jquery.ui.core.css",
                    "~/Content/themes/base/jquery.ui.resizable.css",
                    "~/Content/themes/base/jquery.ui.selectable.css",
                    "..."

    }
}

Этот класс конфигурации пакета должен быть вызван в методе Application_Start():

BundleConfig.RegisterBundles(BundleTable.Bundles);

Вы можете настроить связывание в ASP.NET (в зависимости от версии, которую вы используете MVC 4 или веб-форм с asp.net 4.5+). Как уже предлагалось, у вас есть класс со следующим статическим методом:

 public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js"));

        ...
        //your custom files
        bundles.Add(new ScriptBundle("~/bundles/customjs").Include(
                    "~/Scripts/js/file1.js",
                    "~/Scripts/js/file2.js"));
    }

Затем вы можете добавить их на свою страницу MVC:

@Scripts.Render("~/bundles/customjs")

Я думаю, что веб-формы это что-то вроде:

<%: Scripts.Render("~/bundles/customjs") %>

Вы можете создавать собственные пакеты и группировать общие файлы (возможно, для каждого раздела), поэтому страница будет загружать только эти файлы. В любом случае, он должен быть на одной странице, а не копировать и вставлять ссылки на каждой странице.

Есть предостережение, если вы уже свернули, я помню, что файл не будет загружен.

Однако если вы используете более старую версию ASP.NET и хотите минимизировать ее, то вы также можете использовать Web Essentials для минимизации каждого файла.

Существуют различные инструменты, которые могут пригодиться для этого. Я бы порекомендовал использовать GruntJS http://gruntjs.com/ которого есть множество инструментов / скриптов, готовых к реализации, и взять некоторые из grunt Работайте над развертыванием готового кода, как вы пытаетесь это сделать.

https://www.erianna.com/using-grunt-to-minify-and-compress-assets

Более кратким решением в краткосрочной перспективе является использование ySlow на firebug, который через вкладку инструментов позволяет минимизировать весь javascript на данной странице, выводимый в виде текста. Затем вы можете сохранить его как один файл js, а затем ссылаться только на тот файл на вашей странице, который должен быть достаточен для целей тестирования, и если ваша кодовая база JS не изменится.

Другие вопросы по тегам