ASP.NET bundling - виртуальные пути по умолчанию?
Насколько я могу сказать (потому что откровенно документация на System.Web.Optimization
очень редко), способ объединения в ASP.NET работает так, что вы регистрируете набор файлов (Javascript или CSS, соответствующий ScriptBundle
а также StyleBundle
) и связать их с виртуальным путем; например, ~/bundles/jqueryui
для всех сценариев пользовательского интерфейса jQuery. Позже ASP.NET может минимизировать эти файлы, когда вы работаете в режиме без отладки, и минимизированная версия будет доступна по виртуальному пути, указанному для пакета.
При настройке пакета по умолчанию регистрируются некоторые пакеты скриптов с ~/bundles/...
как виртуальный путь, и некоторые CSS с ~/Content/css
как виртуальный путь. Мой вопрос, не является ли это противоречивым? Не было бы больше смысла иметь что-то вроде ~/bundles/js/...
а также ~/bundles/css/...
? На самом деле, ~/Content
каталог на самом деле существует как настоящий каталог, так что даже существует вероятность конфликта имен. Я бы подумал, что вы хотите, чтобы ваши пути к виртуальным пакетам были каталогами, которые не существуют по умолчанию и не предназначены для создания в реальной файловой системе. Есть ли какая-то причина, почему ~/Content/css
используется для виртуальных путей пакета CSS, которые я не понимаю?
1 ответ
Отличный вопрос, и короткая история такова, что вообще это не имеет значения вообще. Однако некоторые файлы сценариев и CSS зависят от их физического расположения на диске, поскольку они используют относительные пути для ссылки на другое содержимое. Например, если вы посмотрите на пакет jQuery UI по умолчанию в новом проекте ASP.NET 4.5, вы увидите, что он имеет довольно длинный путь. Это потому, что CSS jQuery имеет относительные ссылки на некоторые файлы изображений. Чтобы правильно их разрешить, пути имеют значение, иначе такие вещи, как "..", не попадут в правильный родительский каталог.