python项目方案书-前端python解释器方案预研

最近因为需要找在可以 编写,检查,运行python的解决方案。

编辑:monaco editor,需要进一步支持 api的自动完成;

检查: 语法检查,需要给monaco editor实现完整的语法检查功能 ;

运行(非actived缺少document的项目未列出):

python to javascript方案

python版本

库支持

大小性能

说明

python 3完整支持

几乎完整,支持海龟画图(方便教学),几乎完整dom操作, 几乎完整浏览器API(web编程)

brython.js(139KB)brython_stdlib.js(806KB)库可裁剪性能良好,(vs skulpt)

New BSD (3 clause)官网示例丰富,教学资源可用强,性能好,浏览器支持良好

python 3

完整,支持海龟画图(方便教学)

直接翻译成javascript

实现良好,资源丰富,可惜只是个离线python → javascript翻译器

python 2

完整,支持海龟画图(方便教学),无浏览器API(web编程),直接使用

极大(一个vm.js 13M)使用asm.js 理论性能最好

Apache 2 实验性python方案, 用到了asm.js,浏览器兼容性差

python 2

较少,支持海龟画图(方便教学),部分dom操作(web编程)

skulpt.min.js 400KB

MIT,社区资源一般

结论:

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

brython在工程里使用:

1 python解释器和标准库

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 用户脚本

${user_code}

4 解释执行(eval)

global.brython(0);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值