应用程序架构
大约 2 分钟
应用程序架构
使用 pywebview 构建应用程序有几种方法:
纯网络服务器
- 最简单的案例是指向一个 URL。这需要有一个正在运行的网络服务器(可以是远程或本地)
webview.create_window('Simple browser', 'https://pywebview.idepy.com')
webview.start()
如果你指向本地网络服务器,可以在后台线程手动启动外部 HTTP 服务器或将 WSGIRef 服务器实例传递给 url 参数。
server = Flask(__name__, static_folder='.', template_folder='.')
webview.create_window('我的第一个 pywebview 应用程序', server)
webview.start()
查看一个完整的示例 基于 Flask 的应用程序
在使用本地网络服务器时,应该防止 API 调用受到 CSRF 攻击。更多内容请参阅 安全。
尽管 file://
协议是可能的,但其使用是不被鼓励的,因为它继承了许多限制,并且支持度不高。
带内部 HTTP 服务器的 JS API
另一种方法是使用 JS API 桥接并使用内置 HTTP 服务器提供静态内容。JS API 桥接允许在没有网络服务器的情况下在 Python 和 Javascript 域之间进行通信。桥可以使用 create_window(..., js_api=Api())
或者 window.expose
函数创建。要提供静态内容,请将入口点 URL 设置为本地相对路径。这将自动启动内置 HTTP 服务器。有关 Python 和 Javascript 之间通信的详细信息,请参阅 跨域通信。查看一个完整的实现示例 无服务器应用程序
无服务器
- 最后,你可以完全不使用网络服务器,通过
webview.create_window(...html='')
或者window.load_html
加载 HTML。尽管如此,这种方法有一些限制,因为在加载的页面上下文中没有文件系统。图片和其他资源只能通过 Base64 内联加载。