Replies: 1 comment
-
实现了一个 Demo #74 calcit-lang/respo-calcit-workflow#13 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
静态检查的 HUD 显示在 Elm, ClojureScript, 以及后来的 Webpack Vite 生态当中已经比较常见了.
https://www.youtube.com/watch?v=j-kj2qwJa_E
quote image http://r.tiye.me/shadow-cljs/shadow-cljs.org/
考虑在 calcit-js 当中也补上.
不过 calcit-js 有些特殊, 就是没有自己实现专门的打包工具, 而是通过 Vite 之类进行打包.
于是, 我就不能直接基于 WebSocket 从 Rust 环境往前端发了, 当然也不打算 hack 进 Vite 去.
方案
有个比较简单粗暴的办法, 就是把 error 写入一个
.js
文件, 然后正常引用,再判断里边是否有 error, 有的话在页面上渲染, 没有就回到更新的逻辑.
这样要求我调整目前 preprocess 错误展示, 改为数据存储, 数据才能用于后续的判断.
然后做到存在错误的情况下, 不要直接生成 js 代码. 只有处理掉错误, 才生成 js.
另外对于错误内容的展示, 由于是一个纯 js 的方案, 那么也就能通过 js 类库的方式处理.
就是我单独维护一个组件, 在 reload 入口文件引用进来, 然后直接调用.
这样纯 js 的方案, 避免了在 Rust 环境引入额外的带, 或者侵入
calcit.core
当中.理论是还有一个好处, 就是之前 shadow-cljs 中碰到过的, 后端报错不方便看的问题.
按照 shadow-cljs, nodejs 脚本如果编译发现错误, 只能在 Terminal 打印出来.
而我同时开着 nodejs 和网页的编译, 就希望错误信息统一在网页展示.
而现在我应该可以通过自定义的 js 代码来做到, 至少理论上实行通的.
可能存在的问题
Vite 目前的热替换行为, 在 calcit-js 观察知道同时写入多个文件, 会触发很多次热替换,
这对于 calcit-js 因 macro 引起多个文件同时改变的情况来说, 不大好.
而多次触发热替换
onreload
必然引起更多的中间状态被处理.. 可能存在问题, 待观察.Beta Was this translation helpful? Give feedback.
All reactions