分享一个后端仔,为了官网的 SEO,在“前端娱乐圈”被毒打两天的故事 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Asimov01
V2EX    分享创造

分享一个后端仔,为了官网的 SEO,在“前端娱乐圈”被毒打两天的故事

  •  
      Asimov01
    aizhimou 47 天前 4335 次点击
    这是一个创建于 47 天前的主题,其中的信息可能已经有所发展或是发生改变。

    兄弟们,是这样的,我原本是一个 CRUD 仔,最近做了个开源项目 PigeonPod 得到了不少朋友的喜欢。我就趁热打铁搞了个时髦的 Landing Page,结果在前端这块被结结实实地上了一课,想分享一下踩坑血泪史,希望能帮同样是后端背景的兄弟们省点时间。

    故事是这样的:

    1. 开局: 我用的是典型的“稳重派”,技术栈直接选了生态最强的 React + Mantine UI。心想这套搞熟了就能一招鲜吃遍天,PigeonPod 本体的 Web App 就是这套技术栈做的,用得很舒服。我就同样把代码改吧改吧直接做了 Landing Page ,很快做完上线,看着 Lighthouse 的 performance 92; Best Practices 100; SEO 85 的评分,感觉稳得很。
    2. 转折: 一个月后,Google 上压根搜不到我的网站。这才被迫搞明白,我那套 pre-render 小伎俩在真爬虫面前就是个笑话,必须上真正的 SSG 。
    3. 第一劫:Next.js 。 都说它是 React 的“亲哥”,无缝迁移。结果呢?花了好几个小时迁过去,准备部署到 Cloudflare 的时候才发现,这玩意儿跟 Vercel 是深度绑定的,图片优化之类的核心功能离了 Vercel 就废了。感觉自己被“PUA”了。试了 OpenNext 、静态导出,全都是坑,又浪费了大半天。
    4. 第二劫:Astro 。 痛定思痛,决定换个思路。Astro 看起来简直是梦中情“框”:默认 SSG 、能用 React 组件、部署自由。结果呢?兴冲冲地把代码迁过去,一编译就报错。最后在官方文档里找到一句冰冷的 “Not a chance” Astro 和所有 CSS-in-JS 的 UI 库(比如我用的 Mantine )八字不合。

    前前后后快两天时间,代码没写几行,算是把前端这些框架的哲学和门派给彻底搞懂了。

    最后悟出几个道理:

    • 做“网页应用”和做“网站”是两码事,技术选型完全不同。
    • Next.js 是 React 的 “全家桶”,但它更是 Vercel 的 “全家桶”,选它等于选平台。
    • Astro 性能至上,但对某些 UI 库生态不友好。
    • “无缝迁移”这四个字很诱惑,但是听听就好,都是营销口号,别当真。

    把整个心路历程和技术上的思考都写成了文章,里面有更详细的踩坑细节和“暴论”,希望能帮大家看清前端这个“花花世界”。

    博客原文链接在这儿: https://asimov.top/posts/react-vs-nextjs-vs-astro-for-backend-devs

    41 条回复    2025-10-29 12:33:20 +08:00
    refear99
        1
    refear99  
       47 天前
    直接 prerender ,保持 spa 的简单,还能兼顾 seo ,什么 ssr ssg 都扯淡
    zhengfan2016
        2
    zhengfan2016  
       47 天前   5
    直接用 jsp 吧,古法 SSR ,相信古人的智慧!
    Asimov01
        3
    Asimov01  
    OP
       47 天前   1
    @refear99 一开始用的就是 prerender ,但是效果确实非常有限,Google 似乎已经不太认这种简单的 prerender 出来的 “假 HTML 了”。
    rev0
        4
    rev0  
       47 天前
    说出来不怕你笑话,我用类似 jsp 的框架手搓的站,比 nuxt 站流量大十几倍
    serco
        5
    serco  
       47 天前
    react-router v7 基本可以无痛
    Asimov01
        6
    Asimov01  
    OP
       47 天前
    @rev0 笑话?这是牛逼啊!方便分享一下站点地址吗?小弟学习学习
    Asimov01
        7
    Asimov01  
    OP
       47 天前
    @serco 卧槽?我用 v8 用错了? v7 怎么做 SSG 呢?能直接和 Astro 一起用吗?
    zpvip
        8
    zpvip  
       47 天前   1
    Ruby on Rails, 框架鼻祖绝非浪得虚名, CRUD, SSR, SEO 手拿把掐. 真心推荐给 CTO 及 全栈工程师.

    一个公司用什么语言和框架是由 CTO 决定的, CTO 用什么跟他在学校学的东西相关, 学校及培训机构当然是 Java, JS, C#, 所以 Ruby on Rails 可能不那么流行. 但用起来真舒服, 语法是真简洁, 心智负担是真轻, 开发是真快速, 测试是真省心. 现在有了 AI, 我现在 99% 的代码都是 AI 在写, 我来看 git diff 及审核自动测试, 我觉得最聪明的是 Claude-4.5-sonnet.

    99% 的公司网站的瓶颈绝对不会在语言及框架上, 如果有 CTO, 建议试试, 可以少招程序员, 效率杠杠地.
    renmu
        9
    renmu  
       47 天前 via Android
    这种简单落地页直接原生+jquery
    cvooc
        10
    cvooc  
       47 天前
    好文, 问一下我能转载到我博客上吗?我会标明来源(纯个人记录下,我博客基本没人访问 ORZ)
    Asimov01
        11
    Asimov01  
    OP
       47 天前
    @renmu 这样写出好看的页面对我来说很难 有设计基线的 ui 库是我的首选,不然我做出来就是一坨,还有主题切换,多语言什么的,用 jq 处理起来还是比较费劲的。我前几年就是 jq 一把梭,现在确实是有些梭不动了
    Asimov01
        12
    Asimov01  
    OP
       47 天前
    @cvoc 欢迎转载!注明来源,放上原文链接就行
    cvooc
        13
    cvooc  
       47 天前
    @Asimov01 #12 好的,感谢. 我已经转载并表明来源了.地址在我个人简介里. 我就不在你帖子里发链接了
    Asimov01
        14
    Asimov01  
    OP
       47 天前
    @cvooc 不客气!欢迎互链交个朋友~
    Jesmora
        15
    Jesmora  
       47 天前
    都是资本的力量,后面你发现同样的内容和涉及,nextjs 的自然流量比 nuxtjs\remixjs\solidstart\sveltekit 都要高
    serco
        16
    serco  
       47 天前
    @Asimov01 哪里有 v8 ,最新不也才 v7 嘛? seo 的话 SSR ,SSG 不都可以嘛,看文档 https://reactrouter.com/start/framework/rendering
    abc0123xyz
        17
    abc0123xyz  
       47 天前
    直接手搓几个 index.html 丢 nginx 下
    Asimov01
        18
    Asimov01  
    OP
       47 天前
    @serco 不好意思,我看错了,我以为你说的 Mantine v7
    Asimov01
        19
    Asimov01  
    OP
       47 天前
    @Jesmora 这是好事啊! vercel 付钱给我提升 SEO 权重,后续又多了一个选择 Next.js 的理由了
    refear99
        20
    refear99  
       47 天前
    @Asimov01 能详细说一下吗,我现在用的 prerender 感觉效果还行,render 出来的就是真实的网站内容,目前收录十几个页面,sitemap 里还有 3000 个正在运行不知道能不能收录
    whoami9426
        21
    whoami9426  
       47 天前
    OpenNext 挺好用的啊, 我这个站( https://fixit.nolimit35.com) 就是 Nextjs 用 OpenNext 打包后部署在 Cloudflare 的 Workers 上,除了域名一分钱没花.
    OpenNext 官方有迁移教程: https://opennext.js.org/cloudflare/get-started
    svon
        22
    svon  
       47 天前
    就一个页面为什么要用 React ?, 拿大炮打蚊子。
    linkopeneyes
        23
    linkopeneyes  
       47 天前
    shadcn/ui 也是高强度 context,你还是要在 tsx 中写
    xing666
        24
    xing666  
       47 天前
    @rev0 我们公司每天总 8000 多万 PV 的几个网站全是 jsp 写的,真好用
    lancelock
        25
    lancelock  
       47 天前
    就这种页面用 react 写的意义是什么,又没什么表单 复杂交互,要 ui 库的话有纯 css 的库吧,bulma 什么的
    Asimov01
        26
    Asimov01  
    OP
       47 天前
    @lancelock 因为我想一招鲜吃遍天,不想多学任何一个框架/库/工具。
    Asimov01
        27
    Asimov01  
    OP
       47 天前
    @refear99 我自己主要遇到的主要问题是 pre-rendered 不方便给每种语言分别 Meta 数据之类的,因为我也不太懂 pre-rendered ,大部分活都是 AI 干的,我只是个 CRUD 仔
    Asimov01
        28
    Asimov01  
    OP
       47 天前
    @svon 因为大炮好用,而且我也只会用大炮 我用 React + Mantine 写了一个 web app ,自然就用它接着写页面了。不过其实也不能说只有一个页面,后面还要跟着一直加模块加页面的,需要持续维护升级,不然就真直接手搓 html 了。
    molika
        29
    molika  
       47 天前
    深有感触。
    lizy0329
        30
    lizy0329  
       47 天前
    @zhengfan2016 不行的,如果稍微有点交互,对于 dom 的处理非常逆天,还是要用 jQuery 或者 JSP 模板代码的结合
    zhengfan2016
        31
    zhengfan2016  
       47 天前
    @lizy0329 还好吧,我前任公司就是类似 jsp 的技术栈,但是我们用的是 vue2 ,通过 cdn 引入的,做内部管理系统的,很多表单页,交互复杂度肯定比 op 高得多,没啥问题
    profchaos
        32
    profchaos  
       47 天前
    我记得 vercel 还出了个 blog 说 google 也能 index js 的页面,不过比常规的网页慢,怎么会完全 index 不到呢
    cwliang
        33
    cwliang  
       47 天前
    静态落地页 Astro + tailwind ,tailwind 上面有很多免费的落地页模版
    lizy0329
        34
    lizy0329  
       47 天前
    @zhengfan2016 #31 vue2 是 SPA 哦,可不能 SEO
    zhengfan2016
        35
    zhengfan2016  
       46 天前
    @lizy0329 #34 vue 是 spa ,前提是用 vite 等脚手架创建的纯 vue 。
    但是!! vue 是渐进式框架,完全可以在 jsp 的基础上渐进式的使用。
    再说了,seo 也就那几个<meta property="og:title",这些完全可以给 jsp 渲染的,怎么就不能 seo 了?
    shadeofgod
        36
    shadeofgod  
       46 天前
    mantine 早就迁移到 css module 的方案了,咋还有 css in js 的问题
    Asimov01
        37
    Asimov01  
    OP
       46 天前
    @shadeofgod 不知道啊,但是确实是不能用,这是官方的说明: https://help.mantine.dev/q/can-i-use-mantine-with-astro

    [img][/img]
    bugcreator
        38
    bugcreator  
       46 天前
    后端上手最友好的 svelte(kit) 接近 web 原生体验
    leokun
        39
    leokun  
       46 天前
    golang 有办法使用前端的生态做 ssg 吗
    Jesmora
        40
    Jesmora  
       46 天前
    @Asimov01 淦,但是 nextjs 真的很像一坨屎啊,还不如 solidstart 好用
    ajax10086
        41
    ajax10086  
       46 天前
    不推荐用 nextjs ,我用它做了几个项目,后面准备换 nuxt 了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2705 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 14:26 PVG 22:26 LAX 06:26 JFK 09:26
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86