大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。
JSPyBridge 用于 Node.js 和 Python的互操作。开发者可以从 Node.js 运行 Python,或从 Python 运行 Node.js,目前该项目的深度研发工作正在陆续进行中。 如果需要体验,开发者需要安装 Node.js 14 和 Python 3.8 或更高版本。
JSPyBridge 的典型特征包括:
目前 JSPyBridge 在 Github 上开源,是一个值得关注的前端开源项目。
from javascript import require, globalThischalk, fs = require("chalk"), require("fs")print("Hello", chalk.red("world!"), "it's", globalThis.Date().toLocaleString())fs.writeFileSync("HelloWorld.txt", "hi!")
import { python } from 'pythonia';// 导入 tkinterconst tk = await python('tkinter');// 有Python API访问都必须以await为前缀const root = await tk.Tk();// 带 $ 后缀的函数调用会将最后一个参数视为 kwarg 字典const a = await tk.Label$(root, { text: 'Hello World' });await a.pack();await root.mainloop();python.exit();//确保最后退出Python以允许Node退出,开发者还可以使用 process.exit
更多用法示例可以参考文末的资料,本文不再过多展开。
需要注意的是,JSPyBridge 与其他 Bridge 不同,开发者可能会注意到不只是用 JavaScript 编写 Python 代码,反之亦然。
开发者可以对 Bridge 另一侧的对象进行操作,就像这些对象存在于当前环境一样, 这是通过真正的互操作支持实现的。
开发者可以调用回调,并使用自己喜欢的任何参数进行无损函数调用,当然浮点精度除外。下面是不同互操作性的支持情况:
同时,需要注意以下几点:
同时还需要注意以下几点:
https://github.com/extremeheat/JSPyBridge#jspybridge
https://blog.logrocket.com/exploring-jspybridge-library-python-javascript/
https://deventor.io/blog/node-js-vs-python/