Pull to refresh

Comments 12

private static string[] Exclude(this IEnumerable<string> input, params string[] items)
{
    var output = input;
    foreach (var item in items)
    {
        output = output.Where(x => x != item).ToArray();
    }

    return output.ToArray();
}


А метод Except вам не знаком?
Действительно. Спасибо за замечание, так будет лучше:

private static string[] Exclude(this IEnumerable<string> input, params string[] items)
{
    return input.Except(items).ToArray();
}
А если программист ошибется в регистре?
Передадим вторым параметром компаратор.
Когда ошибется — будет поздно. Это к тому, что компаратор надо сразу передавать.
А не лучше ли использовать для этих целей Hashtable? «встроенный» дистинкт + компэйрер переданный в конструктор решит все проблемы, не?
Если на входе и на выходе — массив строк, Hashtable избыточен, Except прекрасно справляется.
Я правильно понял, что один файл может попасть в разные бандлы и пользователь грузит один код множество раз?
UPD:
И как работаете с CDN?
Обычно количество лэйаутов не очень большое. Да, пользователю придется несколько раз выкачать повторяющийся код. Но мне не кажется, что это большая проблема, для небольшого количества лэйаутов.

А что касается CDN, да, с таким подходом от него придется отказаться.
А я вот отказался в своё время от майкрософтовского подхода к бандлам и заюзал это github.com/ServiceStack/Bundler. Никаких зависимостей в runtime и очень простенько (кстати, расширение WebEssensials для студии тоже умеет делать бандлы по файлам где описаны что в бандл включить). Как вариант использовать grunt uglify или подобное для иных сборщиков из «мира» front-end-а.
1. На каждый лэйаут — 1 бандл.
2. Бандлы подключаются только на лэйаутах.
3. Вводим понятие групп, которое будет являться просто массивом строк.

Нужно понимать, что при первоначальной обработке каждого бандла (например, минимизации) расходуются ресурсы процессора и память. Кроме того, код обработанных бандлов кэшируется в памяти веб-сервера. Таким образом, при использовании вашего подхода возникает лишняя нагрузка на сервер.

Классические подходы позволяют более эффективно использовать серверный и браузерный кэш. Если они не подходят вам, то используйте RequireJS.
Sign up to leave a comment.

Articles