пятница, 16 августа 2013 г.

XSLT мертв. R.I.P. Да здравствует CSR!

Для тех, кто еще может быть не в теме - и я знаю, такие есть: XSLT в SharePoint 2013 был эффективно убит.

Да, конечно, мы всё также можем использовать веб-части с XSLT и почти всегда это будет работать. Но есть нюансы:

  1. Изъят мощнейший инструмент для разработки XSLT - SharePoint Designer. Точнее, изъята та его часть, которая относилась к генерации XSLT. Кое-что можно по-прежнему выжать из местами оставшихся кнопок на Ribbon в Code View, но даже для простейших представлений код веб-частей генерируется нередко нерабочий. Иными словами, это уже неподдерживаемый функционал, которым пользоваться нереально.
  2. XSLT-преобразования очевидно уже стоят в низком приоритете для команды тестирования SharePoint. Как следствие - уже сейчас, в SP2013, начинают накапливаться баги, связанные с работой XSLT. Пример: в js, который используется для свертывания/развертывания групп при наличии группировки в DataFormWebPart - в SP2013 содержит ошибку. Т.е. группировку в этой веб-части невозможно использовать "OOTB", придется этот баг исправлять подменяя SharePoint'овскую js-функцию. Я наткнулся на этот баг, когда пытался мигрировать свой английский блог, который у меня сделан на SharePoint 2010 :(
  3. Представлен концептуально новый подход к отображению данных (Client Side Rendering ака CSR), и сейчас ни одна веб-часть в SharePoint по умолчанию более НЕ использует XSLT преобразования. Все списки показываются с помощью CSR, и результаты поиска - тоже.
  4. CSR действительно лучше, и нет ни единой причины не предпочесть его старому подходу. Это JavaScript templating engine, пусть корявый, но всё-таки JS как язык является гораздо более мощным, более развитым и более современным средством разработки, чем XSLT. Под JavaScript, словно грибы, растут фреймворки, создаются метаязыки (coffee script, TypeScript, Script#, etc.), пишутся библиотеки, расширяются его возможности (html5) и т.д. и т.п. А когда вы слышали последний раз про усовершенствования в XSLT? :)
XSLT в SharePoint 2013 был эффективно убит. И это факт.

И если в SP2010 еще можно поработать с XSLT (но без излишнего рвения, не забывайте что могут возникнуть проблемы с миграцией), то если вы начинаете новый проект на SP2013, забудьте об XSLT. Начинайте учить CSR.

CSR сыроват и не без своих тараканов. Но он уже лучше XSLT. Многие вещи на CSR делаются в 3 раза быстрее, чем на XSLT, а еще есть вещи на XSLT вообще нельзя было сделать, а на CSR они делаются на раз-два-три.

В проекте SPTypeScript мы сделали на момент написания этой статьи уже 6 примеров по использованию CSR:
  1. Разбиение формы на вкладки
  2. Lookup-поле с автокомплитом, работающим по данным поиска
  3. Кастомная валидация полей формы списка
  4. "Color coding" на CSR
  5. Custom Field на CSR (пример сделан на основе того что есть на MSDN, но внутри код гораздо более правильный и понятный)
  6. Custom List View (очень простой пример из серии "как начать")
Все эти примеры, хотя написаны на TypeScript, доступны параллельно еще и на JS. И к слову, TypeScript генерирует очень даже читабельный код, честно, я сам был удивлен :) Так что даже если вы не планируете использовать TypeScript, но решили использовать CSR - эти примеры вам могут помочь понять, как оно работает, и избежать многочисленных граблей, которые традиционно присутствуют в ошеломляющих количествах :)

Также, совсем недавно я читал доклад про CSR - очень полезно для старта и освещены некоторые моменты, которых вы врядли где-то еще найдете (да, CSR как это принято в SharePoint'е, документирован процентов на 15% отсилы - а в интернетах еще пока информации маловато).

Подводя итог: на мой взгляд, будущее рендеринга данных в SharePoint - это что-нибудь типа CSR + TypeScript + KnockoutJs. А XSLT, он мертв. И несмотря на человекомесяцы в обнимку с ним и целую пачку статей про него в этом блоге, наверное это и к лучшему :)

5 комментариев:

  1. CSR ещё не смотрел, но то что XSLT помер это хорошо )

    ОтветитьУдалить
  2. Приятно, что про CSR пишет именно тот, кто XSLT продвигал.
    Это бетонная плита поверх могилы XSLT.

    ОтветитьУдалить
    Ответы
    1. :D

      CSR тоже болото на самом деле. Ему до AngularJs как до Луны. Но иногда как-то надо изменять отображение данных, правильно ж ведь? На текущий момент CSR это по сути единственный способ это делать.

      Удалить
  3. Да не. XSLT вполне себе жив. А вот SharePoint.... Впрочем, чтобы не быть голословным - достаточно просто сравнить количество постов на форумах, посвященных XSLT и SharePoint.

    ОтветитьУдалить

Внимание! Реклама и прочий спам будут беспощадно удаляться.