给一个知名开源项目改浏览器兼容
居然没集成 babel ,看文档也是 svelte 就两个官方预处理,一个 vitePreprocess 一个 sveltePreprocess
vitePreprocess 这个预处理器没有 babel 参数支持,牛逼,AI 还在硬编,最后搜到繁体中文文档明确了这一点
没办法,换 sveltePreprocess 预处理,结果他的语法支持不一样,一些 store 的声明位置报错,就是那个奇葩的$xxx 语法
这个还可以跟 AI 要求改
更恶心的是,babel 对 js 的预处理先于 svelte 语法解析,第一步 babel 会把 const 和 let 处理成 var
然后 svelte 某些地方不让使用 var ,怎么改参数都没用,按网上说法["last 2 versions", "not ie <= 11"],modules = false 也关不了 const 转义
真的坑死,这要是 react 和 vue ,甚至 angular 早就搞完了
什么框架会集 react 、vue 之大屎,简单倒是没简单,语法糖翻了 10N 倍
折腾了一上午

用了最牛逼的 cursor ,他告诉我 svelte+vite 的预处理叠加用,当然不行

最后缴枪了,说 babel 会破坏 svelte 的响应式语法(就是$:块)

Svelte 是这样的,各种语法糖唐完了,还整天吹非 vDOM 架构,总体性能也不见得有 vue 好

我大概明白了,所谓的性能,应该是默认不要 babel ,完全现代语法,利用现代浏览器对 es2015+的简单语法解析带来的性能

现代浏览器后的框架都这样的,你要是看了 Remix 你要更崩溃,渐进式 Web 。兼容性什么的就别想了,他们只会告诉你拥抱未来。所以一开始就要根据用户场景选择好,框架本身不在乎的东西你肯定是没办法的。并且大部分是 SSR 倾向,只管初次 HTML 渲染的够快,不会在乎你后续交互的

我在用 sveltekit ,不是专业前端,没跟其他框架对比过。他这个方便就是 kit 是官方出的把所有组件都集成了,不用选了。最开始选 svelte 系列就是因为他简单,后来更新了一个版本复杂一些了。

下一步准备和其他框架对比一下,和 react 啥的。

我不知道你们有什么兼容性要求,我想给 Android 9 做兼容,这个项目的浏览器要求似乎得是 Android 10 甚至 11 的 chrome 才行

官网没有任何资料,有的形同虚设,cursor 都给我一顿乱编,跪了

我这个是纯个人项目,没有兼容性相关的要求啥的。估计大型工程什么的可能确实会有意想不到的问题。
话说作为专业前端推荐 vue 还是 react 呢?我是说那种正儿八经集成了相关工具的脚手架哈,就是对应 next 或者 nuxt 。

因为让我从头用 react 去写集成那么多工具啥的,配置都配死人了。

svelte 在引入 runes 之前都是纯编译时的框架,如果用 babel 倒腾 ast 的话怕是要卡出屎来了…
话说为啥要在预处理里嵌入 babel ,你对产物跑 babel 不就行了。

产物里如果都是?.或者!.我还好处理,里面还有原汁原味的 import ,这玩意可是跟路径有关的

我在项目中集成了 AlpineJS 目前体验还行

可以再套一次 vite 或者 rsbuild 调 babel 。www

转译又转不到 ES6 以下,很多新出的原生 API 新 CSS 属性根本就转不了。
最大的困难是你需要兼容低版本浏览器这个目标。

我用着感觉还行啊,概念少,推送到 vercel 和构建静态网站挺简单的

转义到 not ie 就可以了,这要求不高啊

很正常,如果我写一个新的框架,也不会考虑兼容性,所有东西都是新的。这个里面有一个技术投入性价比的事情,如果我费劲开发了一个兼容性很好的框架,那又如何呢,我在做一些新的技术的时候,总会有一个“绳子”牵着自己脚,这种滋味我可不想尝,所有你使用新的框架就应该有这种预期,否则就不要用新的框架,不能一方面享受新框架带来的新体验,一方面又骂新框架各种不兼容。不能既要又要。

试试 mithril js ,jsx 语法写,数据双向自动绑定,90%项目都能覆盖

这是改一个很大的开源项目,自己写肯定还是 react 、vue 这种大众成熟框架更好,国内用的人也多

自从他把 sveltekit 大改了一下后就再也没用了,我还不如用 vue

svelte kit 主要还是省心,没有那么多东西好选的,直接干就是了
相比 react 也是省心,不用做性能调优

但最大的问题是兼容性,只支持 es module ,在老的浏览器上用不了,有兼容方案但没有被接受到主仓库而是建议另开插件,还好我项目面向的是年轻人可以不用管这么多兼容性问题(如果真要兼容的话我大概会选择显示一个请用现代浏览器访问的页面让用户更新浏览器)

没千万级用户我都不用这么高性能的框架

你可以推荐你的竞争对手用嘛

别瞎折腾,直接用 react 和 vue
国内项目就上 vue3
好招人