【发布时间】:2021-02-09 03:07:37
【问题描述】:
所以,想象一下 Vue index.html 也会加载一些自定义脚本:
<!DOCTYPE html>
<html lang="en">
<head>
...
...
<script type="text/javascript">
languagePluginLoader.then(function () {
pyodide.loadPackage("someName").then(() => {
// Send message to Vue that everything is fine
}).catch((err) => {
// Send message to Vue that it failed
})
})
</script>
...
...
</head>
<body>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
有没有办法通过index.html 文件与正在运行的 Vue 实例或/和 Vuex 进行通信?例如,我想在脚本完全加载之前显示“正在加载...”等。
-
一种方法是将消息发送给 Service Worker,然后从 Service Worker 发送给 Vue,但感觉不实用。
-
另一种方法是在初始化之后设置
windows.script_status = true,但是window对象不是reactive的,所以Vue会检查一次,得到undefined就忘了。 -
UPD:第三种方法是从 Vue 端注入脚本并将一些函数放入
script.onload以获取它何时准备就绪,但不确定解决方案的稳定性。
所以,任何建议都可以:)
【问题讨论】:
-
我建议你使用
pyodide.runPythonAsync。此功能将自动下载所有导入包。不过,您仍然必须等到pyodide初始化。查看my answer
标签: javascript html vue.js vuex pyodide