Тоже переходили с TinyMCE так как менеджить его очень тяжело, HTML не самый удобный формат для хранения данных.
Вообще ваш опыт очень похож на то что мы делаем. Мы также пытались решить forwards compatibility с использование unsupportedBlock который, по описанию, выглядит один в один как ваш :) Но мы также используем подмножество ProseMirror JSON как дата формат. Интересно послушать почему по Вашему мнению он не удобен для хранения данных? И у нас также есть json schema для валидации документов.
Одна из самых больших проблем для нас – это переиспользование реакт компонентов из дизайн системы внутри контента редактора. Как я понимаю вы делаете что-то похоже но с Vue, или у вас только plain ProseMirror?
можно реализовать ленивую подгрузку с помощью resolve в роутере, но у меня не получилось красиво описывать зависимости и приходилось на каждый роут писать руками все что нужно ему и всем его зависимостям.
У USE чище наверно, но я же не добавляю теги руками, а только размечаю комментариями куда плагин их добавит. Плюс на выходе у меня просто html без кастомных тегов. Также мне не нужно каждый файл прописывать вручную. И в моем подходе можно использовать всю мощь и гибкость грунта, то есть я могу изменить процесс обработки файлов так как мне нужно.
А так, установка и настройка занимает минут 10 — 15. И в итоге подход получается более универсальным, так как можно не только с nodejs и express использовать.
И прогоняет их через concat, uglifyjs для js, и csso и autoprefixer для сss, и заменяет эти коментарии на подключение собранного файла, то есть для примера выше будет:
<script src="/app/app.min.js"></script>
Плюс в дальнейшем добавлю grunt-filerev, что бы он менял номер ревизии у файлов во избежании загрузки из кэша браузера старых вместо новых версий файла.
Вполне себе так удобно и очень гибко. Возможно конечно настройка и займет немного больше времени.
Делал для себя небольшой загрузчик для angular с помощью requirejs. Он как раз работает на основе роутов. Надо попробоать сжать с помощью RequireJS Optimizer и посмотреть как он будет работать)
Но код для подключения зависимостей примерно так выглядит:
На выходе он генерирует обычный для ngRoute, uiRoute — объект, с методом resolve в котором и происходит разрешение зависимостей, и пока они не разрешены, роут не срабатывает.
Правда есть минус, что приходится описывать все зависимости в параметре dependencies и нельзя сделать:
На вкус и цвет, как говорится, все фломастеры разные.
Мое имхо, это гараздо менее удобно, чем дать ссылку на таблицу в гугло доксе и все, там и хранилище и средство просмотра, и скачивать постоянно не надо…
Какая-то нездоровая тенденция в современно мире: там, где можно использовать готовый продукт, все почему-то предпочитают использовать сервисы.
Недавно рассказывали про сервис отправки email (казалось бы что может быть проще mail() в любом языке программирования и списка обычным текстом). Я понимаю, что «все лучше как сервис», но какой-то предел должен быть.
И сыпятся вопросы, почему же письма в спам улетают, а что бы не улетали надо через sendmail какой-нибудь слать через тот же gmail, а потом интересно становится открыли ли письмо или нет, перешли по ссылке или нет и т.д.
Вот скажите, не проще ли было посылать обычные get/head запросы на свой http-сервер, где бы они просто складывались в лог в csv виде?
А потом найти чем разгребать эти логи, а потом как поделиться с коллегой.
Тоже переходили с TinyMCE так как менеджить его очень тяжело, HTML не самый удобный формат для хранения данных.
Вообще ваш опыт очень похож на то что мы делаем. Мы также пытались решить forwards compatibility с использование unsupportedBlock который, по описанию, выглядит один в один как ваш :) Но мы также используем подмножество ProseMirror JSON как дата формат. Интересно послушать почему по Вашему мнению он не удобен для хранения данных? И у нас также есть json schema для валидации документов.
Одна из самых больших проблем для нас – это переиспользование реакт компонентов из дизайн системы внутри контента редактора. Как я понимаю вы делаете что-то похоже но с Vue, или у вас только plain ProseMirror?
А так, установка и настройка занимает минут 10 — 15. И в итоге подход получается более универсальным, так как можно не только с nodejs и express использовать.
grunt-include-source
Вставляет теги script и css в html один раз при добавлении нового файла
grunt-usemin
Пробегает по html и находит все коментарии вида:
И прогоняет их через concat, uglifyjs для js, и csso и autoprefixer для сss, и заменяет эти коментарии на подключение собранного файла, то есть для примера выше будет:
Плюс в дальнейшем добавлю grunt-filerev, что бы он менял номер ревизии у файлов во избежании загрузки из кэша браузера старых вместо новых версий файла.
Вполне себе так удобно и очень гибко. Возможно конечно настройка и займет немного больше времени.
Но код для подключения зависимостей примерно так выглядит:
На выходе он генерирует обычный для ngRoute, uiRoute — объект, с методом resolve в котором и происходит разрешение зависимостей, и пока они не разрешены, роут не срабатывает.
Правда есть минус, что приходится описывать все зависимости в параметре dependencies и нельзя сделать:
Мое имхо, это гараздо менее удобно, чем дать ссылку на таблицу в гугло доксе и все, там и хранилище и средство просмотра, и скачивать постоянно не надо…
И сыпятся вопросы, почему же письма в спам улетают, а что бы не улетали надо через sendmail какой-нибудь слать через тот же gmail, а потом интересно становится открыли ли письмо или нет, перешли по ссылке или нет и т.д.
А потом найти чем разгребать эти логи, а потом как поделиться с коллегой.