none
Разные наборы скриптов в Debug и Release версии сайта, помогите разобраться... RRS feed

  • Общие обсуждения

  • У меня такая проблема. У меня большое количество файлов со скриптами, порядка 90 файлов с классами, используемыми моим веб-приложением. Возник такой вопрос. Для ускорения загрузки сайта я выполнил слияние всех скриптов в один файл и сжал этот файл + используется несколько внешних библиотек, все это я поместил в блок ScriptManager в таком виде :

        <asp:ScriptManager ID="PageScriptManager" runat="server" ScriptMode="Inherit">
            <Services>
                   ... Сервисы ...
            </Services>
            <CompositeScript>
                <Scripts>
                    <asp:ScriptReference Path="scripts/ext/adapter/ext-base.js" ScriptMode="Inherit"/>
                    <asp:ScriptReference Path="scripts/ext/ext-all.js" ScriptMode="Inherit" />

                    <asp:ScriptReference Path="scripts/mine.js" ScriptMode="Inherit" />
                </Scripts>
            </CompositeScript>
        </asp:ScriptManager>

    Чего хотелось бы. Последний скрипт в композитном скрипте - подборка из 90 скриптов, которые в отладке лучше видеть не целиком одним файлом, а скажем сделать что-то типа :

        <asp:ScriptManager ID="PageScriptManager" runat="server" ScriptMode="Inherit">
            <Services>
                   ... Сервисы ...
            </Services>
            <CompositeScript>
                <Scripts>
                    <asp:ScriptReference Path="scripts/ext/adapter/ext-base.js" ScriptMode="Inherit"/>
                    <asp:ScriptReference Path="scripts/ext/ext-all.js" ScriptMode="Inherit" />

                    // Если не включена отладка - использовать один файл
                    <% if(!HttpContext.Current.isDebuggingEnabled) { %>
                         <asp:ScriptReference Path="scripts/mine.js" ScriptMode="Inherit" />
                    <% } %>
                </Scripts>
            </CompositeScript>

            // Если отладка включена - использовать все те мелкие файлы, которые составляют тот самый большой файл
            <% if(HttpContext.Current.isDebuggingEnabled) { %>
            <Scripts>
                  <asp:ScriptReference Path="scripts/mine1.js" />
                  <asp:ScriptReference Path="scripts/mine2.js" />
                  <asp:ScriptReference Path="scripts/mine3.js" />
                  <asp:ScriptReference Path="scripts/mine4.js" />
            </Scripts>
            <% } %>
        </asp:ScriptManager>

    Проблема в том, что внутри определения ScriptManager недопустим код.... Помогите...
    • Изменен тип I.Vorontsov 16 февраля 2010 г. 7:58 Ждём топиккастера
    5 февраля 2010 г. 12:43

Все ответы

  • Так а почему бы не подгрузить скрипты в code behind в зависимости от того debug или release?


    [Мой блог], [LinkedIn]
    5 февраля 2010 г. 14:13
  • Ибо хочется, чтобы это выполнялось автоматически, как выполняется подстановка скриптов нужного типа по "ScriptMode". Просто 90 строк с обращениями в codebehind получается мягко говоря не так универсально и красиво
    5 февраля 2010 г. 14:39
  • всегда можно сделать изящно. Если ваш скрипт действительно называется scripts/mine1.js, то можно вообще объявить две константы int scriptsCount = 10; и string scriptFormat = "script/mine{0}.js", потом в цикле подабовлять все, когда включен режим debug.
    Если хочется все-таки декларативно объявлять скрипты, положите рядом XMLDataSource какой-нибудь, объявлейте скрипты в нем, а затем уже сами в codebehind делайте перекидывание этих объявлений в Scripts


    [Мой блог], [LinkedIn]
    7 февраля 2010 г. 7:42
  • Написать своего собственного наследника от ScriptReferenceBase, по аналогии с CompositeScriptReference, но с двумя коллекциями скриптов?
    7 февраля 2010 г. 10:19