Wb-rules 2.0: различия между версиями
Kilpio (обсуждение | вклад) |
(Подготовка страницы к переводу) |
||
Строка 1: | Строка 1: | ||
<languages/> | |||
<translate> | |||
В обновлённом движке правил wb-rules присутствует ряд важных нововведений, касающихся логики написания сценариев. | В обновлённом движке правил wb-rules присутствует ряд важных нововведений, касающихся логики написания сценариев. | ||
= Сценарии = | = Сценарии = | ||
== Изоляция сценариев == | == Изоляция сценариев == | ||
Строка 7: | Строка 10: | ||
Начиная с версии wb-rules 2.0, каждый файл сценария запускается в своём отдельном пространстве имён - '''контексте'''. Таким образом, каждый сценарий может определять | Начиная с версии wb-rules 2.0, каждый файл сценария запускается в своём отдельном пространстве имён - '''контексте'''. Таким образом, каждый сценарий может определять | ||
свои функции и глобальные переменные без риска изменить поведение других сценариев. | свои функции и глобальные переменные без риска изменить поведение других сценариев. | ||
=== Пример === | === Пример === | ||
В качестве примера приведём два сценария, одновременно запускаемых в движке правил. | В качестве примера приведём два сценария, одновременно запускаемых в движке правил. | ||
Каждый сценарий определяет глобальные переменные и функции. | Каждый сценарий определяет глобальные переменные и функции. | ||
Строка 43: | Строка 48: | ||
}, 1000); | }, 1000); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Примечание === | === Примечание === | ||
Строка 56: | Строка 62: | ||
Начиная с версии 2.0, в подобной конструкции нет необходимости. Тем не менее, старые сценарии, | Начиная с версии 2.0, в подобной конструкции нет необходимости. Тем не менее, старые сценарии, | ||
использующие эту конструкцию, продолжат работу без изменений в поведении. | использующие эту конструкцию, продолжат работу без изменений в поведении. | ||
=== Обходные пути === | === Обходные пути === | ||
Строка 61: | Строка 68: | ||
Если в вашей системе использовалось общее глобальное пространство для хранения общих данных и функций, | Если в вашей системе использовалось общее глобальное пространство для хранения общих данных и функций, | ||
есть несколько способов реализации такого поведения: | есть несколько способов реализации такого поведения: | ||
==== Использование модулей ==== | ==== Использование модулей ==== | ||
Можно написать модуль для организации взаимодействия. У модулей есть статическое хранилище, | Можно написать модуль для организации взаимодействия. У модулей есть статическое хранилище, | ||
общее для всех файлов, импортировавших модуль. (см. [[# | общее для всех файлов, импортировавших модуль. (см. [[Special:MyLanguage/#модули|Модули]]) | ||
==== Постоянное хранилище ==== | ==== Постоянное хранилище ==== | ||
Строка 81: | Строка 90: | ||
ps.myvar = "value"; // это значение доступно для всех пользователей хранилища с именем "my-global-storage" | ps.myvar = "value"; // это значение доступно для всех пользователей хранилища с именем "my-global-storage" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== Прототип глобального объекта ==== | ==== Прототип глобального объекта ==== | ||
Строка 111: | Строка 121: | ||
Таким образом, первый способ обращения будет работать только в том случае, если myVar не определена в верхних областях видимости. | Таким образом, первый способ обращения будет работать только в том случае, если myVar не определена в верхних областях видимости. | ||
== Анонимные правила == | == Анонимные правила == | ||
Строка 123: | Строка 134: | ||
'''ВНИМАНИЕ:''' начиная с версии 2.0, при объявлении правил с одинаковыми | '''ВНИМАНИЕ:''' начиная с версии 2.0, при объявлении правил с одинаковыми | ||
именами в одном файле теперь будет возвращаться ошибка. | именами в одном файле теперь будет возвращаться ошибка. | ||
=== Пример === | === Пример === | ||
Строка 134: | Строка 146: | ||
}); | }); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Управление правилами == | == Управление правилами == | ||
Строка 144: | Строка 157: | ||
По умолчанию, все правила включены. | По умолчанию, все правила включены. | ||
=== Пример === | === Пример === | ||
Строка 163: | Строка 177: | ||
// на текущий момент не поддерживается передача аргументов в then | // на текущий момент не поддерживается передача аргументов в then | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Постоянное хранилище данных == | == Постоянное хранилище данных == | ||
Строка 188: | Строка 203: | ||
Если такое хранилище уже было создано когда-либо ранее, сценарий получит к нему доступ. | Если такое хранилище уже было создано когда-либо ранее, сценарий получит к нему доступ. | ||
== Виртуальные устройства == | == Виртуальные устройства == | ||
Строка 217: | Строка 233: | ||
Начиная с версии 2.0, в движке правил wb-rules появилась поддержка подключаемых JS-модулей (похожая по поведению на | Начиная с версии 2.0, в движке правил wb-rules появилась поддержка подключаемых JS-модулей (похожая по поведению на | ||
аналогичную в Node.js, но с некоторыми особенностями). | аналогичную в Node.js, но с некоторыми особенностями). | ||
== Расположение == | == Расположение == | ||
Поиск модулей происходит по следующим путям (в заданном порядке): | Поиск модулей происходит по следующим путям (в заданном порядке): | ||
Строка 234: | Строка 252: | ||
... | ... | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Подключение модуля к сценарию == | == Подключение модуля к сценарию == | ||
Строка 266: | Строка 285: | ||
и заново выполнен весь код модуля. Если модулю требуется использовать данные, общие для всех файлов сценариев, | и заново выполнен весь код модуля. Если модулю требуется использовать данные, общие для всех файлов сценариев, | ||
для хранения данных следует использовать объект module.static. | для хранения данных следует использовать объект module.static. | ||
== Создание модуля == | == Создание модуля == | ||
Строка 274: | Строка 294: | ||
В этом файле будут доступны все стандартные функции wb-rules, а также набор специальных объектов, с помощью | В этом файле будут доступны все стандартные функции wb-rules, а также набор специальных объектов, с помощью | ||
которого можно реализовать необходимый функционал модуля. | которого можно реализовать необходимый функционал модуля. | ||
=== Объект exports === | === Объект exports === | ||
С помощью объекта exports можно передавать пользовательскому сценарию параметры и методы. | С помощью объекта exports можно передавать пользовательскому сценарию параметры и методы. | ||
==== Пример ==== | ==== Пример ==== | ||
Строка 318: | Строка 340: | ||
}; | }; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Объект module === | === Объект module === | ||
Объект module содержит параметры, относящиеся непосредственно к файлу модуля. | Объект module содержит параметры, относящиеся непосредственно к файлу модуля. | ||
==== module.filename ==== | ==== module.filename ==== | ||
Содержит полный путь до файла ''модуля''. Например, для модуля, сохранённого в /etc/wb-rules-modules/myModule.js: | Содержит полный путь до файла ''модуля''. Например, для модуля, сохранённого в /etc/wb-rules-modules/myModule.js: | ||
Строка 329: | Строка 354: | ||
log(module.filename); // выведет /etc/wb-rules-modules/myModule.js | log(module.filename); // выведет /etc/wb-rules-modules/myModule.js | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== module.static ==== | ==== module.static ==== | ||
Объект, хранящий данные, общие для всех экземпляров данного модуля. Его следует использовать для тех данных, | Объект, хранящий данные, общие для всех экземпляров данного модуля. Его следует использовать для тех данных, | ||
которые должны быть доступны сразу во всех сценариях, использующих данный модуль. | которые должны быть доступны сразу во всех сценариях, использующих данный модуль. | ||
Строка 369: | Строка 396: | ||
Number of calls: 5 | Number of calls: 5 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== __filename === | === __filename === | ||
Строка 392: | Строка 420: | ||
= Замеры производительности = | = Замеры производительности = | ||
Cм. [[Движок_правил_wb-rules_2.0/Производительность|Замеры производительности]] | Cм. [[Special:MyLanguage/Движок_правил_wb-rules_2.0/Производительность|Замеры производительности]] | ||
</translate> |