wb_editors
163
правки
N.maslov (обсуждение | вклад) |
N.maslov (обсуждение | вклад) |
||
Строка 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> | ||
= Модули = |