Pull to refresh
55
0
Дмитрий Шарабин @DSharabin

Пользователь

Send message

Для этого в Mavo есть встроенная функция log(), которую можно использовать непосредственно в выражениях в HTML-коде. Вот здесь можно посмотреть её описание и пример использования.

Если же нужен более мощный отладочный инструмент, то предлагаю посмотреть в сторону инспектора Mavo. К сожалению, он доступен только в Chromium-based браузерах. Однако, для отладки, думаю, этого должно хватить.

Постараюсь ответить на эти вопросы, если Вы, действительно, искренне хотите получить на них ответы, а не просто обозначили в этом комментарии свою позицию. :)

Хорошая ли документация? (кажется, как-то не очень)

Можете, пожалуйста, указать конкретно, ответ на какой вопрос Вы пытались найти в документации, но не нашли его? В этом случае мы сможем её улучшить. Это будет очень полезно для всех.

Да, Вы правы, документация нуждается в доработке, как минимум в том плане, что не все возможности Mavo подробно задокументированы. Но пока нас мало (и здесь Вы тоже правы), мы придерживаемся принципа, что лучше иметь такую документацию, чем не иметь никакой. А на все возникающие вопросы мы с радостью ответим в Gitter, например.

Хороший ли код, архитектура?

А мы ничего не скрываем — код открыт, и Вы можете детально изучить его на GitHub.

Насколько это всё легко расширяется?

Mavo изначально разрабатывается, как чрезвычайно расширяемый инструмент: за счёт плагинов и системы хуков. В любом случае, чтобы получить ответ на этот вопрос, нужно просто попробовать. Разумеется, при наличии желания. :)

Насколько большая и удобная библиотека готовых компонентов? Есть слайдеры, а есть ли слайдеры "от-до"? Есть ли таблицы? Кто пополняет библиотеку, кто апрувит?

Как таковой никакой библиотеки компонентов нет. Те примеры, которые были приведены в статье, нужны для иллюстрации возможностей Mavo. Однако, в силу того, что код Mavo-приложений может быть легко переиспользован либо за счёт простого копи-паста, либо за счёт переопределения хранилища, с которым работает приложение, Вы сможете использовать компоненты, написанные другими авторами. Или разработать свои, которыми с благодарностью и признательностью будут пользоваться и все остальные.

Сейчас весь сайт и демо разъезжаются на мобильном. С компонентами тот же подход, desktop first?

Будет очень здорово, если Вы сможете найти время и возможность завести ишью в соответствующем репозитории. Мы недавно уже кое-что пофиксили. Но могли что-то упустить. Спасибо!

Насколько быстро чинятся баги?

Прекрасный вопрос! И для ответа на него есть приложение, написанное Лией Веру на Mavo. Она даже описала, как его разрабатывала. Если Вам будет любопытно, то вот эта статья.

Кто, собственно, основной состав разработки и поддержки, какой у них опыт?

И это тоже не секрет. Все, кто так или иначе принимает участие в работе над Mavo, здесь и здесь.

Just Don't use it.

Давайте просто позволим людям самим попробовать и решить, подходит им это или нет. Вы попробовали (судя, по комментарию, даже подробно изучили), Вам не подошло. И это нормально. Красота мира, в том числи мира фронтенд-разработки, в его многообразии. Нужно просто правильно подбирать инструменты, адекватные решаемой задаче. И уверяю Вас, есть задачи и люди, которым Mavo прекрасно подходит. Если Вы не в их числе, что ж, пусть так оно и будет. :)

Это настолько популярное наблюдение при поверхностном взгляде на Mavo, что комментарий на него был добавлен в FAQ на сайте Mavo:

Между Mavo и Angular есть некоторое внешнее сходство, а именно:

  • оба поддерживаю синтаксис, основанный на HTML;

  • оба поддерживают выражения.

Однако, Angular никогда не разрабатывался с целью написания приложений полностью на HTML, в отличие от Mavo. Он рассматривает HTML как способ связывания данных с представлениями, но вся остальная логика должно быть написана на JavaScript самим разработчиком. Angular, как более низкоуровневая, но, разумеется, более мощная система, позволяет создавать более широкий набор приложений. Но при этом требует гораздо больше усилий со стороны разработчика и большего времени на его изучение.

У Mavo и Angular совсем разные целевые аудитории. Но никто не говорит о том, что они не могут пересекаться. :)

Но рычажков не хватает на все случаи жизни, поэтому куски JS остаются в HTML, но в атрибутах.

Вы попали нет в бровь, как говорится, а в глаз. Именно для того, чтобы понять, каких рычажков не хватает, и что нужно добавить в Mavo, чтобы исключить JS, нам и нужна обратная связь от тех, кто пробует поработать с Mavo и пытается использовать его для решения своих задач. И именно с этой целью на каждом витке развития Mavo проводятся user study. Если вдруг захотите принять в чём-нибудь таком участие, дайте, пожалуйста, знать. Ну, а если нет, то это тоже позиция. И мы её уважаем. :)

:) Вы правы. Конечно, JS там будет. Но можно не писать «авторский» JS. Думаю, правильнее было это явно указать. Спасибо. Думаю, мы сможем поправить это в статье.

А откуда такие предположения? JS не запрещён в Mavo. Просто многие вещи могут быть решены без его привлечения.

А утонуть можно абсолютно в любом фреймворке, разве нет? И даже не обязательно в фреймворке, можно и в ванильном JS с таким же успехом «попрощаться с жизнью». :) Как обычно, всё относительно. И очень разнообразно. В этом и прелесть. Зато у каждого есть право выбора. И это очень ценно.

И да, Вы абсолютно правы — сломать можно что угодно. И поверьте, для таких проектов, как Mavo, это гораздо ценнее, чем success stories. Именно ошибки и провалы помогут сделать его лучше. Так что, мы этого не боимся. :)

Спасибо за комментарий и вопрос!

Тот пример кода, который Вы привели, это синтаксис Mavo — так называемый MavoScript. Он является несколько упрощённым подмножеством JavaScript. Упрощение позволяет сделать его более доступным для разработчиков, которые не знакомы (или относительно мало знакомы) с JavaScript (верстальщики, дизайнеры, начинающие веб-разработчики и т. п.).

С помощью атрибута mv-action можно добавлять пользовательские действия в HTML-код, тем самым создавая элементы управления, с помощью которых можно некоторым образом изменять данные (добавлять, удалять, перемещать внутри коллекции и т. п.), с которыми работает приложение. Фактически, пишется код обработчика события onclick для того элемента, к которому добавлен этот атрибут. С помощью mv-action можно последовательно выполнить несколько действий. Для этого нужные действия нужно просто описать в качестве значения этого атрибута, например, через запятую, точку с запятой, пробел или вообще подряд. Mavo чрезвычайно лоялен к тому, как разработчики привыкли писать их код. И «подстраивается» под них, нежели ломает их привычки. :)

Метод set() в этом фрагменте кода set(newTodo, newTodo.trim()) устанавливает (присваивает) свойству (фактически, переменной) newTodo очищенное от лишних пробелов значение этого же самого свойства newTodo. Здесь иллюстрируется то, что внутри кода Mavo можно, при необходимости, использовать имеющиеся в JavaScript методы. Например, в данном случае в Mavo нет функции trim(), поэтому я и обратился за помощью к JavaScript. Этого можно было и не делать. Просто мне не хотелось, чтобы пользователи могли в список дел включать строки, которые состоят из одних пробелов. :)

Далее с помощью встроенной в MavoScript функции if() я просто проверяю, имеет ли смысл добавлять введённую пользователем строку (новое дело в списке дел) в этот самый список дел: если это пустая строка, то нет, не стоит. А вот если после того, как на предыдущем шаге она была очищена от лишних пробелов, она окажется не пустой(newTodo != ''), то её нужно добавить в список дел, то есть добавить в коллекцию todo: add(newTodo, todo). А после этого нужно очистить поле для ввода новых дел, за которое отвечает свойство newTodo, установив в качестве его значения пустую строку: set(newTodo, '').

Остался последний нюанс: функция if() позволяет выполнить только одно действие в зависимости от истинности или ложности проверяемого условия. А нам нужно выполнять сразу несколько действий. В данном случае, два — add(newTodo, todo) и set(newTodo, ''). Чтобы это стало возможным, нужно «объединить» два действия в одно с помощью амперсанда (&). И это, на самом деле, очень логично, ведь в английском языке этот символ заменяет союз «и». И нам ровно это и нужно: нам нужно выполнить первое действие И второе. :)

Надеюсь, мне удалось ответить на Ваш вопрос? Если нужно ещё что-то пояснить, то я готов. Спрашивайте. :)

Отличная статья! Спасибо. Надеюсь, Ваши читатели прислушаются и начнут грамотнее употреблять в речи английский (разумеется, не родной) язык. От этого мир отечественного ИТ только выиграет. :)
Что ж, от этого никто не застрахован: какие-то идеи, продукты, сервисы рано или поздно могут оказаться на свалке истории. Но они сделали свой вклад в развитие чего-то большего и, возможно, в определённый момент послужили тем самым необходимым топливом, двигавшим прогресс.
Очень рад, что «трюки» Вам пригодились. Скоро напишу ещё один. Надеюсь, он тоже окажется полезным. :)
К сожалению, я не знаком с ColdFusion. Поэтому не могу дать Вам сколько-нибудь полезный и развёрнутый ответ. Не исключено, что идеи, ранее адаптированные другими продуктами, нашли своё воплощение и развитие в Mavo. Как известно, чтобы видеть дальше, нужно встать на плечи предшественников. И это подход прекрасно работает на практике.
Отлично! Спасибо за информацию.
Всё-таки забавно, как по-разному работают наши интернет-провайдеры.
Значит, ничто Вам не помешает познакомиться с Mavo. И это меня очень радует. :)
Потратив час на эту статью и разбор примеров, я уже понимаю, что за несколько часов могу сделать интерактивный лэндинг, с калькулятором расчета яркости проектора, мини каталогом моделей, формой обратной связи и сохранением заявок на дропбокс.

Если Ваша разработка не будет являться коммерческой тайной, сможете ей поделиться, пожалуйста, по её готовности? Мы могли бы добавить ссылку на неё на сайт Mavo, как пример использования Mavo в «дикой природе». Чем больше будет подобных примеров, тем больше у нас будет возможностей развенчать миф и «несостоятельности» и «ущербности» Mavo и невозможности создать с его помощью что-то полезное.
Буду ждать новых статей)

Я тут вспомнил, что Вам также могут оказаться полезны небольшие «трюки», которыми я стараюсь регулярно делиться в Twitter. Найти их можно по хэштегу #mavotricks. Ничего сверхординарного, конечно, но для расширения границ в познании Mavo может пригодиться. К сожалению, пока Mavo не так широко известен в российских кругах, мне приходится их писать на английском. Надеюсь, в скором времени и этот «недостаток» мы исправим. Предлагаю действовать сообща. :)

Единственное чего теперь не хватает для счастья — это такого-же простого инструмента для разметки страницы:)

Когда то я описывал идею чего-то подобного.

Да, неплохо было бы иметь подобный инструмент. :)
Кстати, Вы можете вернуться к своей идее и попробовать реализовать её с помощью Mavo: за 7 лет CSS прирос многими полезными свойствами, позволяющими упрощать (тут, конечно, можно спорить — проще ли стало, но гибче точно) процесс создания макета сайта. Плюс, появились переменные (кастомные свойства), с помощью которых можно динамически менять, например, тот же самый макет, а значения свойствам можно задавать непосредственно в атрибуте style нужного элемента с помощью выражений Mavo. Подобную идею я использовал в одном из своих экспериментов с Mavo — клоне системы управления проектами на основе досок — Kanbanchi, где динамически отражал прогресс выполнения задачи, изменяя линейный градиент, применённый к одному из элементов.
Таким образом, можно, например, создать некую админку именно для задания макета страницы. Скорее всего, сделать это сложнее, чем кажется на первый взгляд, но уже есть, с чего начать. Буду рад, если поделитесь результатами, если решитесь на этот эксперимент! :)
Спасибо Вам большое за приятные слова! Я обязательно буду писать про Mavo ещё — мне он тоже очень-очень нравится. Теперь я точно знаю, что у моих статей на эту тему найдутся читатели. :)
Сейчас я активно работаю над тем, чтобы в ближайшее время на CodePen появился раздел о Mavo (с Крисом Койером мы уже обо всём договорились). Так вот он будет посвящён именно практическим примерам применения Mavo. Сейчас там уже есть пример лендинговой страницы с возможностью редактирования её контента и его сохранения в локальном хранилище браузера, в GitHub и в DropBox. Посмотрите, пожалуйста. Может быть, Вам и это пригодится.
Приятного Вам знакомства с Mavo! Если будут возникать вопросы, обязательно задавайте их: здесь, в Twitter, Gitter, где угодно. :)
Без привлечения JS этого, к сожалению, сделать нельзя. По крайней мере, на данный момент.
Если будете реализовывать этот функционал с привлечением JS, то обратите внимание на несколько разделов сайта Mavo, которые могут Вам пригодиться: For JS developers и API Reference.
Кстати, под капотом Mavo использует библиотеку Bliss (авторства всё той же Лии Веру — она прекрасный и многогранный разработчик), так что Вы можете использовать весь синтаксический сахар, который она предоставляет.
Просто технологии, которые развиваются с SQL параллельно, например, табличные процессоры, оказались более юзер-френдли, что ли. Для бухгалтеров. Хотя, SQL — прекрасный язык. И некоторые его идеи легли в основу механизмов работы с данными в Mavo. В частности, при группировке и фильтрации данных.
А вообще, как обычно, время всё расставляет на свои места. Да, не все бухгалтеры знают SQL и могут писать на нём запросы (хотя, наверное, и такие таланты тоже есть), но язык никуда не пропал и прекрасно себе занимает свою нишу.

Мне кажется, это можно отнести к любому инструменту (фреймворку, расширению языка, библиотеке), нет? Везде нужен порог вхождения.
Не могу сказать, что в Mavo он непреодолимый. Наличие большого словаря — это неплохо: по нему можно искать. Реально, он не такой большой. Если посмотреть на итог в конце статьи, там всего 5 основных пунктов и 5 дополнительных.
Вопрос полезности знаний — вопрос субъективный. Чтобы хорошо знать Mavo, нужно хорошо знать HTML, поскольку он расширяет его несколькими (на самом деле, не так уж их и много, можете посмотреть в документации) атрибутами. А значит, это знание не будет бесполезным. Но это моё мнение. Мы можем с Вами совершенно не сходиться в мнениях. Это нормально. :)

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity