Движок правил wb-rules 1.7: различия между версиями

Нет описания правки
Строка 1: Строка 1:
В обновлённом движке правил wb-rules присутствует ряд важных нововведений, касающихся логики написания сценариев.
В обновлённом движке правил wb-rules присутствует ряд важных нововведений, касающихся логики написания сценариев.


= Нововведения =
= Сценарии =


== Сценарии ==
== Изоляция сценариев ==
 
=== Изоляция сценариев ===


Начиная с версии wb-rules 1.7, каждый файл сценария запускается в своём отдельном пространстве имён - '''контексте'''. Таким образом, каждый сценарий может определять
Начиная с версии wb-rules 1.7, каждый файл сценария запускается в своём отдельном пространстве имён - '''контексте'''. Таким образом, каждый сценарий может определять
свои функции и глобальные переменные без риска изменить поведение других сценариев.
свои функции и глобальные переменные без риска изменить поведение других сценариев.


==== Пример ====
=== Пример ===
В качестве примера приведём два сценария, одновременно запускаемых в движке правил.
В качестве примера приведём два сценария, одновременно запускаемых в движке правил.
Каждый сценарий определяет глобальные переменные и функции.
Каждый сценарий определяет глобальные переменные и функции.
Строка 46: Строка 44:
</syntaxhighlight>
</syntaxhighlight>


==== Примечание ====
=== Примечание ===


В предыдущих версиях wb-rules для изоляции правил рекомендовалось использовать замыкание, т.е.  
В предыдущих версиях wb-rules для изоляции правил рекомендовалось использовать замыкание, т.е.  
Строка 59: Строка 57:
использующие эту конструкцию, продолжат работу без изменений в поведении.
использующие эту конструкцию, продолжат работу без изменений в поведении.


==== Обходной путь ====
=== Обходной путь ===


Если в вашей системе использовалось общее глобальное пространство для хранения общих данных и функций,
Если в вашей системе использовалось общее глобальное пространство для хранения общих данных и функций,
есть несколько способов реализации такого поведения:
есть несколько способов реализации такого поведения:


===== Использование модулей =====
==== Использование модулей ====


см. Модули
см. Модули


===== Прототип глобального объекта =====
==== Прототип глобального объекта ====


'''ВНИМАНИЕ:''' метод считается "грязным", т.к. все переменные и функции, опубликованные таким образом,
'''ВНИМАНИЕ:''' метод считается "грязным", т.к. все переменные и функции, опубликованные таким образом,
Строка 98: Строка 96:
Таким образом, первый способ обращения будет работать только в том случае, если myVar не определена в верхних областях видимости.
Таким образом, первый способ обращения будет работать только в том случае, если myVar не определена в верхних областях видимости.


=== Анонимные правила ===
== Анонимные правила ==


Теперь правила можно объявлять анонимно (без задания специального имени). Это позволит уменьшить путаницу и неочевидное
Теперь правила можно объявлять анонимно (без задания специального имени). Это позволит уменьшить путаницу и неочевидное
Строка 110: Строка 108:
именами в одном файле теперь будет возвращаться ошибка.
именами в одном файле теперь будет возвращаться ошибка.


==== Пример ====
=== Пример ===


<syntaxhighlight lang="js">
<syntaxhighlight lang="js">
Строка 121: Строка 119:
</syntaxhighlight>
</syntaxhighlight>


== Модули ==
= Модули =
wb_editors
154

правки