小程序eval/Function终极替代方案:eval5
                        由于小程序内部禁用了eval、Function导致在一些场景下无法动态执行脚本,小程序又只支持JavaScript开发,如果想要在在前端动态执行脚本就得实现对于的脚本解释器。    eval5是完全基于JavaScript编写的JavaScript解释器,支持ECMA5语法      项目地址:https://github.com/bplok20010/eval5      实现原理:  使用acorn或esprima编译器对JavaScript代码进行编译并得到抽象语法树(AST)用JavaScript解析语法树并得到计算结果例如:1+1的解析  一、使用acorn编译后得到的语法树,语法树由不同的节点组成各个节点的type代表着不同的语句或表达式类型:  {
    "type": "Program",
    "body": [
        {
            "type": "ExpressionStatement",
            "expression": {
                "type": "BinaryExpression",
                "operator": "+",
                "left": {
                    "type": "Literal",
                    "value": 1,
                    "raw": "1"
                },
                "right": {
                    "type": "Literal",
                    "value": 1,
                    "raw": "1"
                }
            }
        }
    ],
    "sourceType": "script"
}
二、得到语法树后,我们可以根据不同的节点类型实现不同的处理函数,例如:  function handleBinaryExpression(node) {
    switch( node.operator ) {
        case '+':
            return node.left.value + node.right.value;
        case '-':
            return node.left.value - node.right.value;
    }
}
    如何使用  一、使用npm安装:  npm install --save eval5
    二、使用打包好的eval5.js      使用示例:  // npm install --save eval5
import {Function,evaluate} from 'eval5'; //or 'path/eval5.js'
const sum = new Function('a', 'b', 'return a+b');
sum(100,200)
evaluate('1+1')
    eval5基于小程序编写的示例:eval5-wx-demo   github地址  [图片]