Jquery против IML

Disclaimer: данная статья не направлена на выявление минусов в библиотеке jquery, а показывает альтернативный способ написания rich application разработчиками C#, которые не знают всех тонкостей javascript.

Введение

Последние годы разработка web приложений усложняется из-за интенсивного развития клиентских сценариев, что заставляет программистов, которые пишут на таких типизированных языка как C# или Java, изучать менее безопасный язык javascript у которого можно выделить ряд проблем:

  • Отсутствие этапа компилирования не позволяет выявлять ошибки до выполнения скрипта  в браузере.
  • Отсутствие ООП,  которое заменило наследование на основе прототипов, кардинально отличается от привычного понимания ООП.
  • Одна ошибка в скрипте останавливает работу всей web страницы.

В связи с этим появилось много решений таких, как “обертки” на типизированном языке telerik, jquery mvc, syncfusion и даже альтернативные языки ( TypeScript , CoffeScript ),  для написания javascript, что говорит о заинтересованности программистов  переходу к привычному способу разработки.

IML

iml diagram

Incoding Meta Language – это набор унифицированных конструкций для построения клиентских сценариев любой сложности с применением C#. Основное отличие IML от таких библиотек как telerik в том, что представляет набор низкоуровневых операций для построения своих алгоритмов, но в тоже время имеет большой набор готовых исполнителей, таких как Jquery Dialog, Gmap и другие. Отличие IML от TypeScript или CoffeScript в том, что все конструкции IML построены с использование C# и не требуют изучения других языков от программиста.

На примере трех задач мы попытаемся раскрыть потенциал возможностей IML, сравнивая его с альтернативным решением на javascript.

Задача 1

Условие : Выполнить действие ( ajax post ) кликом на элемент html документа

решение: Jquery

Минусы :

  • Много строковых переменных

примечание: можно использовать переменные внутри страницы, тогда скрипт тоже должен быть в странице.

  •  Кол-во параметров будет увеличиваться добавляя ошибки, требуя от разработчика больше внимания.

примечание: использование метода  serialize, не решит проблему если значения хранятся в элементах cookies, query string, hash.

  • Разделение контекстного элемента от обработчика события. Основной минус данного подхода является скрытие деталей работы обработчика события от непосредственно элемента возбудившего это событие

примечание: разделение логики от представления дает дизайнеру  возможность менять стили независимо от программиста, но практика использования семантичного css и стандартизированной  html разметки дает более эффективный результат. ( пример twitter bootstrap )

решение: IML

Вывод: Использование IML на данном этапе задачи выглядит сложнее  чем аналогичное решение на Jquery , но с увлечением сложности условия задачи преимущество типизированного и унифицированного синтаксиса incoding meta language будет наглядней.

Задача 2

Условие: Выполнить действие ( ajax post ) кликом на элемент html документа  можно только при условии подтверждения
( диалог ) пользователя.

решение: Jquery

решение: IML

Вывод: На данном этапе видно, как IML позволяет оперируя готовыми конструкциями строить условия

Задача 3

 Условие: Выполнить действие ( ajax post ) кликом на элементе html документа только  при условии подтверждения ( диалог ) пользователя и отмеченным флагом ( checkbox ), а  в случае  невыполнения одного из условий, показать сообщение об ошибке

решение: Jquery

решение: IML

 примечание:  IML позволяет разработчику не учитывать, как получить значение элемента, а указать селектор элемента, на основе которого IML сам определит правильный способ получения значения.

Вывод: Пример показывает простоту с которой  происходит добавление новых возможностей  с помощью  IML, чего нельзя сказать о javascript коде, который  усложняется ветвлениями каждый раз с появлением новых задач. Так же стоит отметить что IML поддерживает множество путей решения одной и той же задачи, как и javascript, но имеет всегда одинаковую структуру, что позволяет даже неопытным разработчикам писать всегда качественный код.

Заключение

Можно долго спорить о том, стоит ли изучать новые конструкции IML, но преимущество строго типизированного языка программирования над интерпретируемым javascript очевидно:

  1. Полная поддержка всех возможностей ( intellisense, refactor, search ) таких инструментов, как  Visual studio и ReSharper.
  2. Отсутствие динамической составляющей, полезной в простых сценариях, в сложных задача влияющей отрицательно на удобство разработки и сопровождения приложения.

Список материалов с которыми можно ознакомится для изучения основ IML:

P.S.  буду рад услышать критику и пожелания, а так же ответить на все вопросы заданные в комментариях.

Vlad Kopachinsky

I am a Senior developer at Incoding Software in Russian Federation. I created the Incoding Framework for rapid development

More Posts - Website - Twitter - Facebook - LinkedIn

Leave a Reply