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

2 天前
 Asimov01

兄弟们,是这样的,我原本是一个 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 )八字不合。

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

最后悟出几个道理:

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

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

3391 次点击
所在节点    分享创造
41 条回复
whoami9426
2 天前
OpenNext 挺好用的啊, 我这个站( https://fixit.nolimit35.com) 就是 Nextjs 用 OpenNext 打包后部署在 Cloudflare 的 Workers 上,除了域名一分钱没花.
OpenNext 官方有迁移教程: https://opennext.js.org/cloudflare/get-started
svon
2 天前
就一个页面为什么要用 React ?, 拿大炮打蚊子。
linkopeneyes
2 天前
shadcn/ui 也是高强度 context,你还是要在 tsx 中写
xing666
2 天前
@rev0 我们公司每天总 8000 多万 PV 的几个网站全是 jsp 写的,真好用
lancelock
2 天前
就这种页面用 react 写的意义是什么,又没什么表单 复杂交互,要 ui 库的话有纯 css 的库吧,bulma 什么的
Asimov01
2 天前
@lancelock 因为我想一招鲜吃遍天,不想多学任何一个框架/库/工具。
Asimov01
2 天前
@refear99 我自己主要遇到的主要问题是 pre-rendered 不方便给每种语言分别 Meta 数据之类的,因为我也不太懂 pre-rendered ,大部分活都是 AI 干的,我只是个 CRUD 仔 😭
Asimov01
2 天前
@svon 因为大炮好用,而且我也只会用大炮 😂 我用 React + Mantine 写了一个 web app ,自然就用它接着写页面了。不过其实也不能说只有一个页面,后面还要跟着一直加模块加页面的,需要持续维护升级,不然就真直接手搓 html 了。
molika
2 天前
深有感触。
lizy0329
2 天前
@zhengfan2016 不行的,如果稍微有点交互,对于 dom 的处理非常逆天,还是要用 jQuery 或者 JSP 模板代码的结合
zhengfan2016
2 天前
@lizy0329 还好吧,我前任公司就是类似 jsp 的技术栈,但是我们用的是 vue2 ,通过 cdn 引入的,做内部管理系统的,很多表单页,交互复杂度肯定比 op 高得多,没啥问题
profchaos
2 天前
我记得 vercel 还出了个 blog 说 google 也能 index js 的页面,不过比常规的网页慢,怎么会完全 index 不到呢
cwliang
2 天前
静态落地页 Astro + tailwind ,tailwind 上面有很多免费的落地页模版
lizy0329
2 天前
@zhengfan2016 #31 vue2 是 SPA 哦,可不能 SEO
zhengfan2016
2 天前
@lizy0329 #34 vue 是 spa ,前提是用 vite 等脚手架创建的纯 vue 。
但是!! vue 是渐进式框架,完全可以在 jsp 的基础上渐进式的使用。
再说了,seo 也就那几个<meta property="og:title",这些完全可以给 jsp 渲染的,怎么就不能 seo 了?
shadeofgod
2 天前
mantine 早就迁移到 css module 的方案了,咋还有 css in js 的问题
Asimov01
1 天前
@shadeofgod 不知道啊,但是确实是不能用,这是官方的说明: https://help.mantine.dev/q/can-i-use-mantine-with-astro

[img][/img]
bugcreator
1 天前
后端上手最友好的 svelte(kit) 接近 web 原生体验
leokun
1 天前
golang 有办法使用前端的生态做 ssg 吗
Jesmora
1 天前
@Asimov01 淦,但是 nextjs 真的很像一坨屎啊,还不如 solidstart 好用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1168844

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX