у нас есть описание двухэтапной шаблонизации как идеи.
при этом не существует какой-то общепринятой реализации технологии priv.js, поэтому не очень понятно, что конкретно о ней написать.
что бы ты написал о priv.js в отрыве от конкретной реализации?
Я бы написал как есть, что priv.js — технология для создания view-ориентированной структуры данных. Ну и привел бы ссылки на имеющиеся реализации.
также можно указать на enb-технологию https://github.com/enb-make/enb-priv-js и описать стандарт поддерживаемый ею
подумаем над описанием после публикации основного пласта документации по ENB на сайте (хотим успеть его опубликовать к питерскому BEMup-у)
Полагал что технология для создания view-ориентированной структуры данных это
bemtree
вместо priv.js, ошибка так думать?@ilyar, так и есть. BEMTREE и
priv.js
решают одну и ту же задачу: получить на вход данные и вернуть BEMJSON.Только у BEMTREE существует эталонная реализация в
bem-core
, поэтому там очевидно, что описывать в документации, а дляpriv.js
общего стандарта не сложилось.хм,
priv.js
может быть спецификация, если конечно понятие спецификация может быть применено к технологиям сборки, которая может описывать где вход и где выход, и где можно что то делать зачем то... это возможно?нет, не ошибка. и то и другое по сути динамический bemjson.
у priv.js есть реализация в ENB. Мне больше нравится priv.js так как он без излишнего сахара — если знаешь джаваскрипт, то знаешь и priv.js. Вместе с этим приходит простота использования и скорость работы.
@matmuchrapna я не понимаю, что ты подразумеваешь под реализацией в ENB. в ENB есть технология для сборки, которая просто склеивает по депсам файлы с расширением
priv.js
и к результирующему файлу доклеивает собранныйbemhtml.js
. она ничего не говорит о том, как реализовывать блоки в технологииpriv.js
. да, понятно, что это окажутся какие-то js-функции, которые будут принимать некие данные и возвращатьbemjson
, но я видел по меньшей мере штуки четыре вариации на тему.но даже если рассматривать конкретную реализацию технологии для сборки, уже возникает вопрос: почему там конкатенируется
bemhtml.js
, если проекты потенциально могут использовать, скажем, BH или вообще несовместимый шаблонизатор?@tadatuta Для
priv.js
может быть спецификация? Понятие спецификация, может быть применено к технологиям сборки? Спецификация может описывать где вход и где выход, и где можно что то делать зачем то... это возможно?@ilyar да, это вполне возможно. спецификацией могут служить, например, тесты.
тут проблема лишь в том, чтобы договориться и принять одну из реализаций за эталон.
@tadatuta вообще, я думал, что priv.js был временным вариантом на пути к bemtree. Но если уж людям нравится и они его используют — может пусть сами и скажут какая реализация им больше по душе?
Но в любом случае, чтобы их оценивать это надо видеть, а кроме тебя, похоже, эти 4 штуки реализаций мало кто видел :-)
@zxqfox, вот пара вариантов, которые нашлись среди старых репозиториев у @mishanga в открытом доступе:
blocks
функции, принимающие контекст и возвращающиеbemjson
.думаю несложно представить себе прочие варианты: как [1], только синхронно, как [2], только асинхронно, всякие варианты про шаринг кода про генерацию bemjson между сервером и клиентом и т.п.
@tadatuta Ну тогда я вижу только вариант описать обе используемые ;-) Либо описать обе, но одну краем, что мол так тоже бывает, но вот этот вариант предпочтительнее. На мой взгляд асинхронный вариант лучше.
есть ещё варианты в https://github.com/bem-node/bem-node и https://github.com/sbmaxx/bem-priv
вариант технологии широко используемой в нескольких группах разработки яндекса https://github.com/maxvipon/priv-js, надо сказать, что он прошёл проверку временем и хорошо и быстро работает, удобен в отладке
@matmuchrapna почему в https://github.com/maxvipon/priv-js
blocks.declare
иblocks.exec
? кажется, что надо или decl/exec или declate/execute — иначе неконсистентненько@matmuchrapna а ещё не хватает примера про переопределения с вызовами базовой функциональности
думаю, что надо создать соотв. ишью у того репозитория, чтобы обсудить в нём детали
справедливо, но мне не приходило это в голову