美文网首页
前端python解释器方案预研

前端python解释器方案预研

作者: golden_age | 来源:发表于2017-11-02 14:27 被阅读0次

    最近因为需要找在可以 编写,检查,运行python的解决方案。
    编辑monaco editor,需要进一步支持 api的自动完成;
    检查: 语法检查,需要给monaco editor实现完整的语法检查功能 ;
    运行(非actived缺少document的项目未列出):

    python to javascript方案 python版本 库支持 大小性能 说明
    Brython python 3完整支持 几乎完整,支持海龟画图(方便教学),几乎完整dom操作, 几乎完整浏览器API(web编程) brython.js(139KB)brython_stdlib.js(806KB)库可裁剪性能良好,(vs skulpt) New BSD (3 clause)官网示例丰富,教学资源可用强,性能好,浏览器支持良好
    Transcrypt python 3 完整,支持海龟画图(方便教学) 直接翻译成javascript 实现良好,资源丰富,可惜只是个离线python → javascript翻译器
    Skulpt python 2 完整,支持海龟画图(方便教学),无浏览器API(web编程),直接使用 极大(一个vm.js 13M)使用asm.js 理论性能最好 Apache 2 实验性python方案, 用到了asm.js,浏览器兼容性差
    Pypy.js python 2 较少,支持海龟画图(方便教学),部分dom操作(web编程) skulpt.min.js 400KB MIT,社区资源一般

    表格整理自
    http://stromberg.dnsalias.org/~strombrg/pybrowser/python-browser.html 和官网document

    结论
    由于 micro python是python 3实现,因此 brython似乎是目前唯一可用,并良好的方案。

    brython在工程里使用:

    1 python解释器和标准库
    <script src="brython.js">
    <script src="brython_stdlib.js">

    2 用户库

    let mod = `var $module = (function($B) {
        var r = window.mscratch.vm.runtime;
        return {
            movesteps: function(arg) {
                r.getOpcodeFunction('motion_movesteps')(
                    { STEPS: arg },
                    { target: r.getEditingTarget() }
                );
            },
            turnLeft: function(arg) {
                r.getOpcodeFunction('motion_turnleft')(
                    { DEGREES: arg },
                    { target: r.getEditingTarget() }
                );
            },
            turnRight: function(arg) {
                r.getOpcodeFunction('motion_turnright')(
                    { DEGREES: arg },
                    { target: r.getEditingTarget() }
                );
            }
        };
    })(__BRYTHON__)`
     
    let loadScratchLib = () => {
        window.__BRYTHON__.VFS.mscratch = ['.js', mod];
    };
    

    3 用户脚本

    <script type="text/python">
    ${user_code}
    </script>
    

    4 解释执行(eval)
    global.brython(0);

    相关文章

      网友评论

          本文标题:前端python解释器方案预研

          本文链接:https://www.haomeiwen.com/subject/nliopxtx.html