表达式
JavaScript表达式解析与评价.
电源 齐普。 。 。 .
安装
安装 :
npm install --save @casbin/expression-eval
导入 :
// ES6
import { parse, eval } from '@casbin/expression-eval';
// CommonJS
const { parse, eval } = require('@casbin/expression-eval');
// UMD / standalone script
const { parse, eval } = window['@casbin/expression-eval'];
API 密码
分析
import { parse } from '@casbin/expression-eval';
const ast = parse('1 + foo');
剖析结果为AST(抽象语法树),如:
{
"type": "BinaryExpression",
"operator": "+",
"left": {
"type": "Literal",
"value": 1,
"raw": "1"
},
"right": {
"type": "Identifier",
"name": "foo"
}
}
评价
import { parse, eval } from '@casbin/expression-eval';
const ast = parse('a + b / c'); // abstract syntax tree (AST)
const value = eval(ast, {a: 2, b: 2, c: 5}); // 2.4
或者,使用 evalAsync 用于同步评价.
汇编
import { compile } from '@casbin/expression-eval';
const fn = compile('foo.bar + 10');
fn({foo: {bar: 'baz'}}); // 'baz10'
或者,使用 compileAsync 用于同步编译.
警卫
虽然这个包是 避免使用 eval(),这个 无法保证用户提供的表达式或用户提供的评价输入不会修改您的应用程序状态或行为。该图书馆并不试图提供一个安全的沙盒以供评估。 对任意用户输入(表达或值)的评价可能导致不安全的行为. 如果您的项目需要安全的沙盒,请考虑诸如 vm2 数据。 。 。 .
许可证
Apache 2.0 许可证.