Open vill opened 6 years ago
wrap()
как раз тем и отличается, что дополнительно создает флаг для защиты от зацикливания
@tadatuta, если они ни чем кроме этого не отличаются и wrap
ведет себя более корректно, для чего тогда нужны 2 почти одинаковых режима с разными названиями, т.е. можно сказать что если бы текущий replace
убрали и вместо него использовали wrap
под названием replace
то ничего по сути не изменилось? Других отличий вообще у них нет? Одно дело, когда введен режим-помощник например prependContent
который позволяет писать меньше кода и он сам знает что и как объединить, но wrap
в этом плане не такой умный, ему надо указать конкретно что и куда выводить и если этого не сделать то он работает как replace
, для чего тогда нужен такой небезопасный replace
?
Суть replace()
как раз в том, чтобы не делать лишних манипуляций, которые не нужны никогда, кроме ситуации, когда сущность заменяется сама на себя (а это все-таки очень частный случай).
Имеется ввиду что движок при обработке режима replace
работает быстрее чем при режиме wrap
или о каких "лишних манипуляциях" идет речь? Если да, то wrap
работает медленнее даже если не содержит код для замены узла?
block('block1').replace()({ block: 'link', content: {} });
block('block2').wrap()({ block: 'link', content: {} });
wrap()
будет создавать флаг от зацикливания даже если исходная сущность не вставляется внутрь, так что в примере выше стоит использовать replace()
Всем привет. Для чего нужен режим
replace
если его функционал вроде как полностью реализован в режимеwrap
? При этомwrap
не делает зацикливание при замене узла на себя с обёрткой. В каких случаях нужно использоватьreplace
а в какихwrap
, что может такогоreplace
чего не может сделатьwrap
и наоборот, исключая чтоwrap
не уходит в бесконечный цикл какreplace
в остальном какие различия у них?[Пример](https://bem.github.io/bem-xjst/?version=8.5.2&engine=BEMHTML&template=%0Ablock(%27block1%27).replace()(%7B%20block%3A%20%27link%27%2C%20content%3A%20%7B%7D%20%7D)%3B%0A%0Ablock(%27block2%27).wrap()(%7B%20block%3A%20%27link%27%2C%20content%3A%20%7B%7D%20%7D)%3B&bemjson=(%5B%0A%20%20%20%20%7B%20block%3A%20%27block1%27%20%7D%2C%0A%20%20%20%20%7B%20block%3A%20%27block2%27%7D%0A%5D)%3B%0A):