Angular 2, Webpack и JavaScript.

20 марта 2017
Найти документацию по Angular 2 на TypeScript не составляет труда, однако, чтобы заставить работать этот новомодный фреймворк на JavaScript без TypeScript, придется постараться. Поскольку браузеры не поддерживают ES6 и ES7 из коробки, необходимо подключать Babel и различные полифиллы. А чтобы собрать все это вместе и довести до рабочего состояния, может потребоваться большое количество времени. Ниже приведены фрагменты конфигов Webpack webpack.config.js и package.json для запуска Angular 2 без TypeScript с использованием Babel. Версии библиотек могут отличаться.

[Читать далее…]

Нет комментариев

JavaScript image resizer. Изменение размера изображения средствами JavaScript.

29 марта 2013
С выходом HTML5 у разработчиков наконец-то появились более-менее удобные средства для работы с графикой, файлами и медиа-контентом. Но как всегда не обошлось без проблем — все эти новые плюшки очень сильно зависят от реализации технологии различными браузерами, а следовательно, то, что работает в Хроме, по известному закону не будет работать в ИЕ, причем даже несмотря на заявленную поддержку новой фичи. Это касается любого браузера, ИЕ — просто пример.

Сегодня расскажу про реализацию ресайзера картинок на клиенте средствами javascript, я не буду углубляться в подробности алгоритма обработки, а остановлюсь на задачах, которые предстояло решить, и на багах, с которыми пришлось столкнуться. Рабочий код скрипта в конце статьи. В дальнейшем, говоря «браузер», я подразумеваю браузер, который поддерживает необходимые фичи. Код тестирован на IE10, Chrome, Firefox, Safari 5, Android (4.0, 4.1), IOS6.
[Читать далее…]

2 комментария

ASP.NET MVC. Перехватываем нулевую модель (null model handling).

19 декабря 2012
Много раз сталкивался с тем, что контроллеры в ASP.NET MVC со временем начинают обрастать бизнес-логикой или, что еще хуже, «сервисной» логикой (создание/удаление файлов, редактирование каких-нибудь конфигов и тд.). Слова «контроллеры», «контроллер» и «вьюха» сейчас будут повторяться слишком часто, но ничего не поделать :). Так вот,  такие контроллеры сложно тестировать и поддерживать. В идеале, контроллер должен содержать только логику по формированию представления (View), а на деле — контроллер превращается в своеобразный комбайнер (собиратель), который по частям заполняет модель отовсюду, откуда только можно, выглядеть это может примерно так:

    public class AbstractController : Controller
    {
        public ActionResult Index()
        {
            var model = new SomeModel();
            model.Property1 = SomeService1.GetProperty1();
            model.Property2 = AnotherService.GetProperty2();
            SomeStrangeHelper.DoSomethingWithModel(model);
            ...

            return View(model);
        }
    }

[Читать далее…]

Нет комментариев

ScriptManager для ASP.NET MVC. Третий вариант.

18 декабря 2012
Очередная вариация на тему ScriptManager’а, это скорее отрефакторенный вариант второго решения. В прошлый раз мы использовали HttpModule, но из-за особенностей обработки запросов модулем его использование влечет за собой накладные расходы, поскольку любой запрос, будь то файл стилей или файл с клиентскими скриптами или же изображение, проходит через всю цепочку модулей, которые зарегистрированы в ASP.NET приложении. В предыдущем скрипт-менеджере мы делали проверку, что текущий запрос — это запрос именно html-страницы, и если это так, то мы запускали обработку html. Однако, по умолчанию, в приложениях ASP.NET MVC весь выходной html-код генерится контроллером и вьюхой, а если это и ваш случай, то можно сделать все проще, мы будем использовать ActionFilterAttribute.

[Читать далее…]

Нет комментариев

ScriptManager для ASP.NET MVC. Второй вариант.

11 августа 2012
В продолжении предыдущего поста выкладываю стопроцентно-"трушный" вариант ScriptManager`а для ASP.NET MVC, с которым ваш сайт пройдет HTML-валидацию. Как я уже говорил, общая идея заключается в том, что нам нужно перехватить ответ сервера и изменить его перед отправкой. Перехватить Response нам поможет HttpModule.

[Читать далее…]

Нет комментариев

ScriptManager для ASP.NET MVC.

10 декабря 2011
Открываю новый цикл статей по ASP.NET MVC. Все описанные плюшки реализованы в нашей CMS. Начну пожалуй с такой штуки, как ScriptManager. Наверное каждый, кто занимался разработкой на ASP.NET использовал этот удобный функционал для добавления скриптов и файлов-стилей на страницу. ScriptManager широко применяется в классических ASP.NET Webforms и по понятным причинами отсутствует в ASP.NET MVC, я очень активно искал аналоги этого класса для ASP.NET MVC, но ничего вразумительно найти не смог, поэтому пришлось писать свой. Дело было весной, поэтому возможно, что сейчас уже есть более хорошие решения, буду признателен за ссылки на них.
[Читать далее…]
5 комментариев

Обновление основного сайта.

27 ноября 2011
Сегодня наконец-то был обновлен наш основной сайт. Обновилось абсолютно все:

  • движок — сайт переписан с нуля на новый движок;
  • технология — ASP.NET Webforms заменена на ASP.NET MVC3;
  • дизайн;
  • портфолио — добавлены новые работы.

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

Через некоторое время на поддомене будет открыта демо-версия нашей системы, где каждый сможет покопаться в админке и посмотреть результат действий на публичной части, но предупреждаю сразу — графический дизайн административной части весьма скуп. Также планируется открыть цикл статей по фичам, реализованным в системе. С некоторыми техническими характеристиками, системными требованиями и возможностями вы можете ознакомиться на странице "для разработчиков" нашего нового сайта.

Ждем комментариев по поводу нового дизайна :).

Categories: Разное Tags:
4 комментария

Длительное затишье.

26 мая 2011
Итак, причина долгой неактивности блога — разработка CMS на ASP.NET MVC и как следствие — огромная нехватка времени на ведение блога. Я так и не написал вторую часть про jsTree, статьи про jQgrid, которые планировал очень-очень давно. Вместо этого всего велась довольно объемная работа по созданию архитектуры цмски, многочисленные переделки, попытки интеграции в движок перечисленных выше джаваскриптовых плагинов.

Что в результате вышло ? Сейчас система находится на стадии "стабилизации", новый функционал больше не пишется, исправляются некоторые незначительные баги, допиливаются некоторые "удобства", проводится рефакторинг. В скором времени (неделя — месяц), основной сайт webferia.ru будет переведен на эту систему, после чего здесь я выложу ссылку на демо-версию цмс. Далее, на примере этой системы будет создан ряд статей, касающихся ASP.NET MVC 3, Razor View Engine, jsTree и jqGrid с примерами интеграции с ASP.NET MVC 3.

Что будет в системе:

  1. ЧПУ отличный от стандартного ASP.NET MVC — обычная классическая иерархическая структура.
  2. Создание/редактирование материалов через рич текст эдитор
  3. Возможность добавления виджетов.
  4. Создание меню на основе jsTree.
  5. В качестве источника данных по умолчанию используется XML. Но ничто не мешает подключить собственный провайдер данных.

Админский интерфейс будет весьма скуден, но эта первая версия планировалась именно такой, причем даже без виджетов.

Дальнейшее развитие системы будет зависеть от проявленного к ней интереса:). То, что получилось, вышло весьма хорошо на мой взгляд:). Да, и самое главное, мне нужно придумать название, может что-нибудь предложите ?

4 комментария

Partial Views и Areas в ASP.NET MVC.

23 февраля 2011
Всех с праздником :).

В ASP.NET MVC 2 появилось такое новое понятие как области (Areas), а поскольку релиз второй версии MVC вышел уже почти год назад, то понятие это уже далеко не новое, и проблема, с которой я недавно столкнулся, должна была к настоящему времени ну хоть кого-нибудь затронуть, однако, на просторах сети ее описания не нашлось. Смысл Areas в том, чтобы разделить большой проект на несколько маленьких, не создавая отдельных проектов в солюшене. Т.е., например, есть веб-приложение, состоящее из некоторой общей публичной части, какой-то административной части, блога и форума, каждая из частей выносится в отдельную независимую область (area), в результате все лежит в одном проекте, но в то же время разграничено по смысловой нагрузке. Это очень удобно (проверено лично). Появляется возможность иметь одноименные контроллеры, вьюхи и тд.

Это было как введение, на самом деле пост не об Areas. Речь пойдет о Partial Views (частичные представления), которые находятся в некоторой области (Area). Partial Views — это аналог User Controls в классическом ASP.NET, которые могут использоваться для отрисовки каких-то кусков страницы, например блока новостей.
[Читать далее…]

Categories: ASP.NET Tags: , , ,
Нет комментариев

Linq Expression. Пример заполнения DropDownList`а.

29 января 2011
Потребовалось заполнить три дропдаун листа наборами типизированных данных, которые возвращаются тремя методами. DropDownList заполняется объектами ListItem, у ListItem`ов есть два свойства Value и Text, если подсунуть DropDownList`у в качестве DataSource`а прямо возвращенную коллекцию, то Value и Text у ListItem окажутся одинаковыми, но такой вариант мне не подходил. В качестве другого варианта можно в цикле foreach по коллекции вызывать метод Add(ListItem listItem) на свойстве Items объекта DropDownList или использовать метод Select из Linq прямо на коллекции. Последний вариант мне нравится больше, короче вышло нечто подобное:
[Читать далее…]
Categories: C# Tags: , ,
Нет комментариев