V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
murmur
V2EX  ›  程序员

非常不推荐在项目里使用小众框架,对,说的就是 svelte

  •  1
     
  •   murmur · 31 天前 · 4188 次点击

    给一个知名开源项目改浏览器兼容

    居然没集成 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 倍

    折腾了一上午

    第 1 条附言  ·  31 天前
    用了最牛逼的 cursor ,他告诉我 svelte+vite 的预处理叠加用,当然不行

    最后缴枪了,说 babel 会破坏 svelte 的响应式语法(就是$:块)
    21 条回复    2025-02-20 10:41:29 +08:00
    Linho1219
        1
    Linho1219  
       31 天前 via Android
    Svelte 是这样的,各种语法糖唐完了,还整天吹非 vDOM 架构,总体性能也不见得有 vue 好
    murmur
        2
    murmur  
    OP
       31 天前
    @Linho1219 我大概明白了,所谓的性能,应该是默认不要 babel ,完全现代语法,利用现代浏览器对 es2015+的简单语法解析带来的性能
    Razio
        3
    Razio  
       31 天前
    现代浏览器后的框架都这样的,你要是看了 Remix 你要更崩溃,渐进式 Web 。兼容性什么的就别想了,他们只会告诉你拥抱未来。所以一开始就要根据用户场景选择好,框架本身不在乎的东西你肯定是没办法的。并且大部分是 SSR 倾向,只管初次 HTML 渲染的够快,不会在乎你后续交互的
    chuck1in
        4
    chuck1in  
       31 天前
    我在用 sveltekit ,不是专业前端,没跟其他框架对比过。他这个方便就是 kit 是官方出的把所有组件都集成了,不用选了。最开始选 svelte 系列就是因为他简单,后来更新了一个版本复杂一些了。

    下一步准备和其他框架对比一下,和 react 啥的。
    murmur
        5
    murmur  
    OP
       31 天前
    @chuck1in 我不知道你们有什么兼容性要求,我想给 Android 9 做兼容,这个项目的浏览器要求似乎得是 Android 10 甚至 11 的 chrome 才行

    官网没有任何资料,有的形同虚设,cursor 都给我一顿乱编,跪了
    chuck1in
        6
    chuck1in  
       31 天前
    @murmur 我这个是纯个人项目,没有兼容性相关的要求啥的。估计大型工程什么的可能确实会有意想不到的问题。
    话说作为专业前端推荐 vue 还是 react 呢?我是说那种正儿八经集成了相关工具的脚手架哈,就是对应 next 或者 nuxt 。

    因为让我从头用 react 去写集成那么多工具啥的,配置都配死人了。
    songray
        7
    songray  
       31 天前 via iPhone
    svelte 在引入 runes 之前都是纯编译时的框架,如果用 babel 倒腾 ast 的话怕是要卡出屎来了…
    话说为啥要在预处理里嵌入 babel ,你对产物跑 babel 不就行了。
    murmur
        8
    murmur  
    OP
       31 天前
    @songray 产物里如果都是?.或者!.我还好处理,里面还有原汁原味的 import ,这玩意可是跟路径有关的
    815979670
        9
    815979670  
       31 天前
    我在项目中集成了 AlpineJS 目前体验还行
    songray
        10
    songray  
       31 天前 via iPhone
    @murmur 可以再套一次 vite 或者 rsbuild 调 babel 。www
    wangtian2020
        11
    wangtian2020  
       31 天前
    转译又转不到 ES6 以下,很多新出的原生 API 新 CSS 属性根本就转不了。
    最大的困难是你需要兼容低版本浏览器这个目标。
    KP45
        12
    KP45  
       31 天前
    我用着感觉还行啊,概念少,推送到 vercel 和构建静态网站挺简单的
    murmur
        13
    murmur  
    OP
       31 天前
    @wangtian2020 转义到 not ie 就可以了,这要求不高啊
    Gilfoyle26
        14
    Gilfoyle26  
       31 天前
    很正常,如果我写一个新的框架,也不会考虑兼容性,所有东西都是新的。这个里面有一个技术投入性价比的事情,如果我费劲开发了一个兼容性很好的框架,那又如何呢,我在做一些新的技术的时候,总会有一个“绳子”牵着自己脚,这种滋味我可不想尝,所有你使用新的框架就应该有这种预期,否则就不要用新的框架,不能一方面享受新框架带来的新体验,一方面又骂新框架各种不兼容。不能既要又要。
    zsj1029
        15
    zsj1029  
       31 天前
    试试 mithril js ,jsx 语法写,数据双向自动绑定,90%项目都能覆盖
    murmur
        16
    murmur  
    OP
       31 天前
    @zsj1029 这是改一个很大的开源项目,自己写肯定还是 react 、vue 这种大众成熟框架更好,国内用的人也多
    FightPig
        17
    FightPig  
       31 天前
    自从他把 sveltekit 大改了一下后就再也没用了,我还不如用 vue
    sofukwird
        18
    sofukwird  
       31 天前 via Android
    svelte kit 主要还是省心,没有那么多东西好选的,直接干就是了
    相比 react 也是省心,不用做性能调优

    但最大的问题是兼容性,只支持 es module ,在老的浏览器上用不了,有兼容方案但没有被接受到主仓库而是建议另开插件,还好我项目面向的是年轻人可以不用管这么多兼容性问题(如果真要兼容的话我大概会选择显示一个请用现代浏览器访问的页面让用户更新浏览器)
    crocoBaby
        19
    crocoBaby  
       31 天前
    没千万级用户我都不用这么高性能的框架
    charlie21
        20
    charlie21  
       30 天前
    你可以推荐你的竞争对手用嘛
    akriafly01
        21
    akriafly01  
       30 天前
    别瞎折腾,直接用 react 和 vue
    国内项目就上 vue3
    好招人
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1049 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 23:16 · PVG 07:16 · LAX 16:16 · JFK 19:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.