最近因?yàn)樾枰以诳梢?編寫(xiě)张肾,檢查速勇,運(yùn)行python的解決方案。
編輯:monaco editor凛捏,需要進(jìn)一步支持 api的自動(dòng)完成担忧;
檢查: 語(yǔ)法檢查,需要給monaco editor實(shí)現(xiàn)完整的語(yǔ)法檢查功能 坯癣;
運(yùn)行(非actived缺少document的項(xiàng)目未列出):
python to javascript方案 | python版本 | 庫(kù)支持 | 大小性能 | 說(shuō)明 |
---|---|---|---|---|
Brython | python 3完整支持 | 幾乎完整瓶盛,支持海龜畫(huà)圖(方便教學(xué)),幾乎完整dom操作, 幾乎完整瀏覽器API(web編程) | brython.js(139KB)brython_stdlib.js(806KB)庫(kù)可裁剪性能良好示罗,(vs skulpt) | New BSD (3 clause)官網(wǎng)示例豐富惩猫,教學(xué)資源可用強(qiáng),性能好蚜点,瀏覽器支持良好 |
Transcrypt | python 3 | 完整轧房,支持海龜畫(huà)圖(方便教學(xué)) | 直接翻譯成javascript | 實(shí)現(xiàn)良好,資源豐富禽额,可惜只是個(gè)離線python → javascript翻譯器 |
Skulpt | python 2 | 完整锯厢,支持海龜畫(huà)圖(方便教學(xué))皮官,無(wú)瀏覽器API(web編程),直接使用 | 極大(一個(gè)vm.js 13M)使用asm.js 理論性能最好 | Apache 2 實(shí)驗(yàn)性python方案, 用到了asm.js实辑,瀏覽器兼容性差 |
Pypy.js | python 2 | 較少捺氢,支持海龜畫(huà)圖(方便教學(xué)),部分dom操作(web編程) | skulpt.min.js 400KB | MIT剪撬,社區(qū)資源一般 |
表格整理自
http://stromberg.dnsalias.org/~strombrg/pybrowser/python-browser.html 和官網(wǎng)document
結(jié)論:
由于 micro python是python 3實(shí)現(xiàn)摄乒,因此 brython似乎是目前唯一可用,并良好的方案残黑。
brython在工程里使用:
1 python解釋器和標(biāo)準(zhǔn)庫(kù)
<script src="brython.js">
<script src="brython_stdlib.js">
2 用戶庫(kù)
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 解釋執(zhí)行(eval)
global.brython(0);