用于基于浏览器的桌面应用程序的工具
sidegears的Python项目详细描述
Sidegears桌面应用程序运行时
https://gitlab.com/john.tourtellott/sidegears
Sidegears是一组用于创建桌面的轻量级工具 包含HTML/CSS/JavaScriptUI和 python后端。工具集有两部分
- 用于后端处理和平台访问的python内核。蟒蛇 内核可从pypi("pip install sidegears")获得。
- 基于浏览器的用户界面的javascript客户端。javascript 客户可从NPMJS("NPM安装侧齿轮")获得。
两半通过一个标准的WebSocket连接起来 通过json-rpc消息进行通信。在典型的用例中, 在浏览器中运行的用户界面通过 侧齿轮API。请参阅npm包中的示例,包括使用 从python启动浏览器实例的python webruntime库。
侧齿轮支持4个rpc运输箱中的3个:
- 从javascript客户端到python内核的rpc请求。
- 从客户端到内核的rpc通知。
- 从内核到客户端的rpc通知。
sidegears不支持从内核到 客户端。可以添加,但不认为 设想的桌面应用程序。
python内核
sidegears内核使用运行在 异步事件循环。内核有两个公共对象:
from sidegears.kernel import RPCKernel, rpc_method
核心方法是:
开始(self,host='localhost',port='5678',close\u on\u disconnect=false)
启动内核,在指定的 主机和端口。当设置了"断开连接时关闭"标志时,内核 将一直运行,直到客户端连接关闭。(这个电话不是 阻塞。)停止(自身)
停止内核,终止任何WebSocket连接。等待关闭(自身)
返回一个未来,当 内核已停止。当关闭连接时使用此方法 启动内核时设置标志。发送通知(self,method,params=none)
发送通知 给客户的信息。设置基本日志记录(self,enabled)
启用rpc消息的日志记录 发送和接收。在json rpc中设置调试(self,enabled)
启用的调试选项 服务器,设置日志值(自,启用)
启用基本日志时, 缩短记录到控制台的消息。
应用程序rpc方法是通过使用rpc方法指定的。 装饰器,例如:
@rpc_method
async def multiply(x, y):
return x*y
注意,rpc方法必须用async关键字定义。
运行内核的几个示例应用程序的源代码 和启动浏览器/ui都包含在包分发文件中。 您可以在python的site packages/sidegears文件夹中找到它们。
javascript客户端包
javascript库与 对应的python sidegears包。当巨蟒 sidegears内核正在运行,sidegears js库可以连接 到内核并进行函数调用(作为 websockets上的json rpc消息。)
dist文件夹中有四个包:
- sidegears.js:umd格式,用于在浏览器中运行或与 常见的js应用程序。这是默认的软件包入口点。
- sidegears.esm.js:es6包,用于捆绑到大型应用程序中
- sidegears-plugin.js:浏览器或 共同的
- sidegears-plugin.esm.js:vue应用程序的es6格式,用于 绑定到应用程序中
javascript用户界面/客户端
对于starndard html页面,使用sidegears.js
或sidegears.esm.js
,
取决于您的捆绑格式。这个api非常小LL,并使用
在examples/client/client.html文件中。api方法是:
sidegears.connect(主机='localhost',端口=5678)
打开连接 到内核。方法返回一个promise对象,它必须 在内核上调用方法之前进行解析。sidegears.disconnect()
关闭与内核的连接。为了 桌面应用程序,可以响应窗口调用beforeunload
事件,但不能保证 在窗口关闭前执行。sidegears.requester
返回一个代理对象,该对象可用于 直接进行rpc请求调用。简而言之,打电话sidegears.requester.method(params)
等同于调用sidegears.sendrequest(方法,参数)
sidegears.notifier
返回用于生成rpc的代理对象 通知直接调用。打电话sidegears.notifier.method(params)
等同于调用sidegears.sendNotification(方法,参数)
sidegears.sendrequest(方法、参数)
对 内核,返回用应答或 错误。"method"参数是一个字符串,"parameters"是 在内核中执行时传递给方法。只有 可以使用json序列化的参数。sidegears.sendNotification(方法、参数)
对 内核,但与request调用不同,rpc没有返回 通知电话。"method"参数是一个字符串,并且 "参数"在 内核。只能使用可以进行json序列化的参数。sidegears.onnotify用于设置在 从python内核接收通知消息。
Vue API
对于vue.js应用程序,可以使用sidegears plugin.js
和
sidegears plugin.esm.js
文件,它实现了一个vue.js插件。
安装后,插件将插入全局vue.$\u sidegears对象。
plugin对象具有与上面描述的
标准API。来自Vue组件:
这个。$\\u sidegears.connect(host='localhost',port=5678)
这个。$\\u sidegears.disconnect()
这个。$\\u sidegears.sendrequest(方法,参数)
这个。$\\u sidegears.sendNotification(方法,参数)
其他方法是:
$u sidegears.isopen()
返回布尔值指示 客户端是否连接到内核。$\u sidegears.getrequestproxy()
返回一个可以使 rpc请求直接调用(与javascript请求程序相同)。$\u sidegears.getNotifyProxy()
返回可以使 rpc通知直接调用(与javascript通知程序相同)。
此外,当通知消息是 从内核接收。事件参数是 方法和参数。
背景
在某些方面,sidegears类似于这样的应用程序框架 作为electron和nw.js,它还提供了一个html/js/css用户 接口。
- 主要的区别是sidegears使用python后端, 而electron和nw.js使用nodejs。
- 另外,在electron和nw.js中,ui和nodejs逻辑是紧密的 通过单个事件循环耦合;而sidegearui和 后端在单独的事件循环中运行,并且 可以在单独的进程中运行。(理论上,侧齿轮 前端和后端可以在不同的计算机上运行,尽管这是 不受官方支持。)
- Sidegears可以与UI的现有浏览器一起使用, 或者在应用程序中嵌入浏览器。
最后,如果有人想知道"侧挡"这个词是从哪里来的:
- "side"是指pyside,它是qt的原始名称 python[1]项目。我们最初的实现使用pyside 用于ui呈现引擎的qwebengine库(尽管我们有 转到了WebRuntime)。Sidegears也是 作者<
- "Gears"是指TurboGears[2],一个成熟的Web框架 采用"同类最佳"的方法,将现有的工具 有凝聚力的系统我们喜欢他们的做法,并试图效仿。我们 还想把我们的项目描述成一个小的软件工具集, 不是全面的"平台"或"框架"。
[1]qt for python位于http://www.qt.io/qt-for-python" rel="nofollow">https://www.qt.io/qt for python
[2]TurboGears位于http://www.turbogears.org/" rel="nofollow">http://www.turbogears.org/