前端SSG:静态站点生成的艺术

前端SSG:静态站点生成的艺术

毒舌时刻

前端SSG?这不是给博客用的吗?

"我的应用需要动态内容,SSG不适合"——结果首屏加载慢,SEO差,
"SSG就是静态HTML,太简单了"——结果构建时间长,数据更新困难,
"我用SSR就够了"——结果服务器压力大,响应慢。

醒醒吧,SSG不是简单的静态HTML,而是一种现代化的前端架构!

为什么你需要这个?

  • 性能优异:静态文件加载快,无需服务器渲染
  • SEO友好:所有内容都是静态的,搜索引擎容易收录
  • 部署简单:可以部署到任何静态文件服务器
  • 安全性高:没有服务器端代码,减少攻击面

反面教材

// 反面教材:纯静态HTML <!DOCTYPE html> <html> <head> <title>我的博客</title> </head> <body> <h1>我的博客</h1> <div> <h2>第一篇文章</h2> <p>文章内容...</p> </div> <div> <h2>第二篇文章</h2> <p>文章内容...</p> </div> <!-- 手动更新内容,非常麻烦 --> </body> </html> 

正确的做法

// 正确的做法:使用Next.js SSG // pages/index.js export async function getStaticProps() { // 在构建时获取数据 const res = await fetch('https://api.example.com/posts'); const posts = await res.json(); return { props: { posts }, // 重新验证时间(秒) revalidate: 10 }; } function Home({ posts }) { return ( <div> <h1>我的博客</h1> <div className="posts"> {posts.map((post) => ( <div key={post.id} className="post"> <h2>{post.title}</h2> <p>{post.content}</p> </div> ))} </div> </div> ); } export default Home; // 正确的做法:使用Astro // src/pages/index.astro --- // 前端组件 import Header from '../components/Header.astro'; import Footer from '../components/Footer.astro'; // 在构建时获取数据 const res = await fetch('https://api.example.com/posts'); const posts = await res.json(); --- <html lang="zh-CN"> <head> <title>我的博客</title> </head> <body> <Header /> <main> <h1>我的博客</h1> <div> {posts.map((post) => ( <div key={post.id}> <h2>{post.title}</h2> <p>{post.content}</p> </div> ))} </div> </main> <Footer /> </body> </html> // 正确的做法:使用Gatsby // gatsby-node.js exports.createPages = async ({ graphql, actions }) => { const { createPage } = actions; // 查询数据 const result = await graphql(` query { allMarkdownRemark { edges { node { frontmatter { path } } } } } `); // 创建页面 result.data.allMarkdownRemark.edges.forEach(({ node }) => { createPage({ path: node.frontmatter.path, component: path.resolve('./src/templates/blog-post.js'), context: { // 传递数据到模板 } }); }); }; // src/templates/blog-post.js import React from 'react'; import { graphql } from 'gatsby'; export const query = graphql` query($path: String!) { markdownRemark(frontmatter: { path: { eq: $path } }) { frontmatter { title date } html } } `; const BlogPost = ({ data }) => { return ( <div> <h1>{data.markdownRemark.frontmatter.title}</h1> <p>{data.markdownRemark.frontmatter.date}</p> <div dangerouslySetInnerHTML={{ __html: data.markdownRemark.html }} /> </div> ); }; export default BlogPost; 

毒舌点评

看看,这才叫前端SSG!不是简单的静态HTML,而是使用Next.js、Astro、Gatsby等现代化框架,在构建时生成静态页面。

记住,SSG不是只能用于博客,它可以用于任何需要高性能、SEO友好的网站。通过增量静态再生(ISR)等技术,它还可以支持动态内容。

所以,别再觉得SSG简单了,它是现代前端开发的重要选择!

总结

  • Next.js SSG:支持静态生成和增量静态再生
  • Astro:专注于静态站点生成,支持多种框架
  • Gatsby:基于React的静态站点生成器,生态丰富
  • 构建时数据获取:在构建过程中获取数据,生成静态页面
  • 增量静态再生:定期重新生成页面,保持内容新鲜
  • 客户端交互:通过JavaScript添加动态交互
  • 部署灵活:可以部署到Vercel、Netlify等平台
  • 性能优化:自动代码分割、图片优化等

SSG,让你的网站既快又友好!

Read more

AI辅助完成优质文献综述——详细操作步骤+提示词

一、什么是优秀的综述文章? ① 提升期刊浏览量/引用量——“新方向+关键议题”为期刊引流 ② 文献综述的“高质量”如何实现? a. 文献前沿度高——即原创性,包含最新和最重要的(new and significant)文献 b. 文献完整度高——即和其他文献的关系,充分理解领域内的相关研究+引用恰当范围内 (appropriate range)的文献资源 二、操作步骤 1. 确定研究领域 研究关键词Keywords + 单一学科/交叉学科领域 Research fields 2. 定位细分领域+名校背景的关键学者 The Stanford/Elsevier Top 2% Scientists List 2025 https://elsevier.digitalcommonsdata.com/

LangChain实战:工具调用+结构化输出,让AI从“聊天“变“干活“

LangChain实战:工具调用+结构化输出,让AI从“聊天“变“干活“

文章目录 * 工具调用(Tool Calling) * 1.Tool创建的三种方式 * 1.1. **直接用 `@tool` 装饰函数** * 1.2. **用 `@tool` + 自定义参数结构(Pydantic)** * 1.3. **继承 `BaseTool` 写类** * 2. 本地自定义工具 * 2.1 定义工具 * 2.2 绑定工具到模型 * 2.3 工具调用流程 * 2.4 AI 响应结构解析 * 3. 第三方工具集成(Tavily搜索([https://www.tavily.com/](https://www.tavily.com/))) * 3.1

把 OpenClaw 从局域网“解放”出来:一招实现随时随地访问你的本地 AI

把 OpenClaw 从局域网“解放”出来:一招实现随时随地访问你的本地 AI

文章目录 * 把 OpenClaw 从局域网“解放”出来:一招实现随时随地访问你的本地 AI * 前言 * 1 OpenClaw和cpolar是什么? * 1.1 OpenClaw:能装进自家电脑的 AI 大脑 * 1.2 cpolar:打破局域网限制的“任意门” * 2 下载安装cpolar * 2.1 下载cpolar * 2.3 注册及登录cpolar web ui管理界面 * 3 OpenClaw + cpolar的 N 种打开方式 * 3.1 查看家里Nas中的电影资源 * 3.2 写一个小游戏网站并分享给朋友 * 3.3 在外远程控制家里的电脑 * 4 穿透OpenClaw以支持公网访问 * 5 固定二级子域名方式

基于Rokid灵珠AI平台的春节全能助手智能体开发实践

基于Rokid灵珠AI平台的春节全能助手智能体开发实践

前言 本次开发基于Rokid灵珠AI平台,聚焦春节高频的抢票出行、路线规划、年货比价核心场景,搭建轻量化春节全能助手智能体,通过平台可视化工作流编排实现功能逻辑串联;因无Rokid Glasses实物,智能体完成灵珠平台内对话测试验证,眼镜端适配仅编写伪代码实现逻辑预留,整体开发聚焦平台核心的智能体配置与工作流开发能力,实现低门槛、高适配的春节场景AI应用落地。 本文应用基于Rokid灵珠智能体/CXR SDK开发,开发指南https://forum.rokid.com/index 一、开发背景与需求分析 春节期间抢票、年货采购、出行路线规划是用户核心需求,依托Rokid灵珠AI平台零门槛、全栈化的开发特性,无需复杂编码即可完成智能体与工作流的搭建,同时平台支持与Rokid Glasses硬件生态的深度集成,为后续眼镜端落地预留适配接口;本次开发核心实现三大功能:12306高铁票查询、春节自驾路线规划、年货好物低价推荐,所有功能通过灵珠平台智能体统一承接,工作流分别处理具体业务逻辑,满足用户春节出行与采购的一站式需求。 二、开发环境与平台核心能力依托 1. 开发平台: