Переносимый язык выражений с привязками PHP и JavaScript?

Я работаю с веб-приложением, которое использует сложную смесь серверного PHP и клиентского Javascript, и я хотел бы позволить администраторам настраивать некоторые основные условия. Например, у нас может быть модель данных с:

var person = {
name: 'Alice',
age: 33,
favorite_color: 'purple',
address: {street: '123 Some St', state: 'NY'}
};

Администратор может захотеть скрыть поле или запустить действие на основе условия, такого как:

((person.age > 20) or (person.favorite_color == 'red')) and (person.address.state == 'NY')

В идеале, мы могли бы использовать одни и те же условия в разных контекстах, например, на стороне клиента. а также проверка на стороне сервера.

Если бы приложение было только PHP на стороне сервера, или если бы это был JS с полным стеком, то вы могли бы использовать PHP eval() или JS eval(), Но для приложения с несколькими языками это не работает. Кажется, что нужно создать небольшой DSL с реализациями для разных платформ, например

// JS
var condition = "(person.age > 20) or (person.favorite_color == 'red')";
var isMatch = ExpressionLanguage.eval(condition, {
person: {...}
})

// PHP
$condition = "(person.age > 20) or (person.favorite_color == 'red')";
$isMatch = ExpressionLanguage::eval($condition, array(
'person' => array(...),
));

Я сталкивался усы, который принимает такой же переносимый подход к шаблонам. Тем не менее, его дизайн специально «без логики» и не поддерживает условия. Тем не менее, это кажется достаточно распространенной проблемой. Как другие обратились к желанию переносных кондиционеров?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]