Skip to content

Latest commit

 

History

History
80 lines (46 loc) · 2.37 KB

questions.md

File metadata and controls

80 lines (46 loc) · 2.37 KB

常见问题


A、为什么执行 npm run watch 同步后,修改编译但还是不同步?

1、检查你的同步地址有没有填错

2、同步功能依赖基础包轮询 pc 的 server。如果你在基础包运行的时候,运行了其他脚本, Scriptable 就会终止基础包的进程。

此时再点击基础包执行同步就好,目前无解,因为 Scriptable 只能保持一个脚本在运行。

虽然可以通过注入同步代码到编译后的脚本来解决,但是会引入额外的代码干扰。本框架遵循一致性原则,编译是啥,同步过去就是啥。

所见即所得,不额外引入复杂度。即便断开同步也能如期运行。



B、如何停止同步代码?

代码同步轮询,请求错误到一定次数就会断开,不用手动停止。



C、可以用 js 或 jsx 开发吗,without the typescript ?

可以,只要你的代码在 ./src/index.ts 引入就能打包。



D、为什么小部件偶尔会出现下面这种状况?

小部件出错

这种状况是因为 Scriptable 内部处理多个小部件异步渲染时没处理好。导致部分小部件渲染为空。(在此可以看到相关讨论)

解决方法也很简单,在渲染时最外层加个 await。由于打包器不支持 top-level-await,所以本框架内置了一个末尾底部等待的函数 EndAwait ,使用方法见下

Class HelloWorld {
    async init() {
        ....
    }
    async render() {
        .....
    }
}

// 使用前
// new HelloWorld().init()

// 使用后,这样就不会出现以上状况了
EndAwait(() => new HelloWorld().init())


E、为什么 jsx widget 是异步渲染?

为了方便引入网络资源,比如图片,实现 wimage 的 src 填写网络连接就能自动加载图片,是需要异步等待的。所以渲染小部件,返回 ListWidget 实例也是异步。



F、基础包同步运行时报错,而同步后,直接运行所同步的脚本却没报错?

可能是基础包版本过旧原因,再扫二维码进引导页重新安装一下基础包即可。