关于使用Next.js重构博客构思的记录
·No AI「完全由人类大脑和双手完成,没有任何AI参与」
手痒,又想重构博客了。博客的1.0使用的是Django,2.0使用的是JavaScript。3.0使用的python生成的静态页面,目前正在考虑使用Next.js重构现有博客。
为什么是Next.js
之前一直使用python作为主要的编程语言,编写了第一个版本的博客,大约使用了三年,缺点:部署和更新起来比较麻烦。后来使用python生成静态的HTML,但是前端修改起来还是不太方便,后来考虑使用react写成SPA+Ajax加载模式,可以解决前端打包编译优化的痛点,但是Ajax的缺点是不利于SEO,随着最近JavaScript的学习和技术推进,终于摸到了Next.js,原来Next.js这么强大和简单,从vue过渡到react,一直想有一种可以直接静态化站点的框架,这次Next.js终于可以入手了。
搭建Next.js博客的框架
创建博客项目,终端运行pnpm create next-app 项目名称:
D:\code\next> pnpm create next-app suiyan
../../.pnpm-store/v3/tmp/dlx-3784 | +1 +
Packages are hard linked from the content-addressable store to the virtual store.
Content-addressable store is at: D:\.pnpm-store\v3
Virtual store is at: ../../.pnpm-store/v3/tmp/dlx-3784/node_modules/.pnpm
../../.pnpm-store/v3/tmp/dlx-3784 | Progress: resolved 1, reused 1, downloaded 0, added 1, done
√ Would you like to use TypeScript? ... No / Yes
√ Would you like to use ESLint? ... No / Yes
√ Would you like to use Tailwind CSS? ... No / Yes
√ Would you like to use `src/` directory? ... No / Yes
√ Would you like to use App Router? (recommended) ... No / Yes
√ Would you like to customize the default import alias? ... No / Yes
Creating a new Next.js app in D:\code\next\suiyan.
Using pnpm.
Initializing project with template: default-tw
Installing dependencies:
- react
- react-dom
- next
- tailwindcss
- postcss
- autoprefixer
- eslint
- eslint-config-next
Packages: +303
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Packages are hard linked from the content-addressable store to the virtual store.
Content-addressable store is at: D:\.pnpm-store\v3
Virtual store is at: node_modules/.pnpm
Progress: resolved 312, reused 303, downloaded 0, added 303, done
dependencies:
+ autoprefixer 10.4.14
+ eslint 8.46.0
+ eslint-config-next 13.4.13
+ next 13.4.13
+ postcss 8.4.27
+ react 18.2.0
+ react-dom 18.2.0
+ tailwindcss 3.3.3
Done in 16.5s
Initialized a git repository.
Success! Created suiyan at D:\code\next\suiyan
pnpm的好处这里就不再详细解释了,简单来说就是节省时间和硬盘空间,和rarn差不多一样吧,搞前端应该都知道。
进入suiyan目录,运行:
PS D:\code\next> cd suiyan
PS D:\code\next\suiyan> npm run dev
> suiyan@0.1.0 dev
> next dev
博客页面的生成
- 博客的博文页面,这个可以根据articles目录下.md文档自动生成相关的博文页面,
npm install gray-matter,用来解析.md文档中的元数据。 - 博客的首页、标签、归档、页面的数据来源于所有.md文档的数据统计。
- layout中添加页面中的导航页尾等一些固定的元素,使用react的上下文固定一些常用的信息避免重复计算。
- 关于博文导航的分页(正在研究)
- 修改"build": "next build && next export",可以生成静态的HTML页面,是全站静态化。
使用next.js搭建博客的优点
- 前端调试极为方便,可以引入自己喜欢的前端UI库,打包压缩等都已经自动化了,不用再去考虑这些。
- 精简压缩了页面的JavaScript代码,打开页面速度快,seo友好。
- 各种依赖的插件和库很多,方便添加更多的功能。
总结
是否要会更换最新的博客,取决与代码编写的进度和功能的实现,我个人还是很期待的,但是next.js的编写经验还是很少,几乎为零,另外也不知道静态页面的生成速度如何,据说编译器是rust编写的速度很快,看样子可以一战。先试试再说了。
相关文章
- 博客的断、舍、离
- 为博客添加了一个小功能「片语」
- 纯HTML+Tailwind CSS代码,无需安装即插即用(Copy & Paste)
- 一分钟美化 RSS:使用 RSS.Beauty 让你的博客 RSS 源更漂亮
- Next.js 静态化改造:放弃 Astro 的理由与实践
- 基于 Next.js + Supabase 的文章阅读量和喜欢功能
- 前端项目中如何查询未使用的模块?
- 博客程序重构回忆录
- Next.js项目手动安装配置NextUI
- 写在岁末:别了2024混混沌沌的一年
- 把博客从GitHub迁移到到了vercel
- 虽然只有我自己在用,但还是更新了碎言博客的源代码,
- GitHub Actions 构建、部署 Next.js项目
- 仅用了几个小时就使用next.js重构博客的所有功能
- 速度与优雅:博客性能优化之旅
- 久了,博客主题就会一直做减法
- 从一次浏览器兼容问题到何不放过自己做个快乐的博主
- 基于daisyUI Tailwind CSS做了一个博客主题
- 使用Python编写并部署个人静态博客:(五)Python异步输出博文页面
- 使用Python编写并部署个人静态博客:(四)逐步输出静态页面
- 使用Python编写并部署个人静态博客:(三)搜集博客数据
- coding_blog 碎言静态博客主题
- simple_blog 碎言静态博客主题
- 使用Python编写并部署个人静态博客:(二)实现静态页面的输出
- 使用Python编写并部署个人静态博客:(一)分析与设计
- free_blog 碎言静态博客主题
- 使用碎言静态博客依托码云Pages搭建自己的免费博客
- 今天是个好日子发行了碎言静态博客的功能完整版