1.0.7 • Published 9 months ago

jm-jsruntime v1.0.7

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

jm-jsruntime

运行js脚本或 json decode

demo

安装

npm install jm-jsruntime

解析带函数属性的json

const {
    encodeJSON,
    decodeJSON,
    decodeContent,
    runScript
} = require('jm-jsruntime');

const json = decodeJSON(`{
    fun: ()=>{
        }, 
    prop: '1'
}`);

console.log('json', json);

Result:

{ fun: [Function: fun], prop: '1' }

序列化带函数的json

const {
    encodeJSON
} = require('jm-jsruntime');

const str = encodeJSON({
    "pro1": "1",
    "obj": {
        "p2": 1,
        "fun": ()=>{
            console.log(2);
        },
        "obj": {
            "p3": 0,
            "fun": function (a) {
                return a;
            }
        }
    }
});
console.log(str);

Result:

{"pro1":"1","obj":{"p2":1,"fun":()=>{            console.log(2);        },"obj":{"p3":0,"fun":function (a) {                return a;            }}}}

解析带参数的文本, 适应模板文案配置

const content = decodeContent(" decode content ${params1}, ${params2}", {

    params: {
        "params1": "p1",
        "params2": 3
    }
});

console.log('content', content);

Result:

decode content p1, 3

执行js脚本

const ret = runScript(`
    console.log('add');
    console.log(params1+params2);
    return params1 + params2;
    `, 
    {
        params: {
            "params1": 1,
            "params2": 2
        }
    });

console.log('script result:', ret);

Result:

add
3
script result: 3

可以指定是promise,执行异步脚本

async function testPromiseScript() {
    const promise = runScript(`
        // 脚本可以是一个async结果 
        const r = await fun();
        return r;
        `, 
        {
            promise: true, // 指定是一个异步脚本
            params: {
                "fun": async function(){
                    return new Promise((resolve, reject) => {
                        // 延时5秒后返回
                        setTimeout(()=>{
                            resolve('timeout: 5s');
                        }, 5000);
                    });
                }
            }
        });
    console.log('promise:', promise);
    console.log('async script result:', await promise);
}

testPromiseScript();

Result:

promise: Promise { <pending> }
async script result: timeout: 5s
1.0.7

9 months ago

1.0.6

9 months ago

1.0.5

10 months ago

1.0.4

10 months ago

1.0.2

2 years ago

1.0.3

2 years ago

1.0.0

4 years ago