ZL Asica

ZLA xLog

She/Her/Hers | US 不要哭,不要笑,不要恨,要理解。
github
email
bilibili
zhihu

SuzuBlog の紹介

SuzuBlog とは?#

私の ZLA 小站 が以前の WordPress から現在の新しいスタイルに変更されたことに気づくでしょう。この新しいスタイル / ブログシステムが SuzuBlog です。

SuzuBlog は、私自身がゼロから開発した Next.js ベースのブログシステムで、その名前は日本語の鈴(Suzu)に由来しています。清らかな音を象徴し、このブログシステムに対する私の期待を表しています。

イントロダクション#

なぜ SuzuBlog を開発したのか?#

以前使用していた WordPress は PHP+MySQL ベースで、数年前にはほとんどの人が選ぶブログシステムでした。しかし、時間が経つにつれて、WordPress のいくつかの問題に気づきました:

  1. パフォーマンスの問題:遅すぎる、遅すぎる、そして私は WordPress のパフォーマンスを最適化するのが得意ではありません。
  2. セキュリティの問題:MySQL データベースのセキュリティ問題、WordPress のセキュリティ問題、プラグインのセキュリティ問題。
  3. 柔軟性が不足:テーマやプラグインはたくさんありますが、私のニーズを満たすテーマが見つかりませんでした。
  4. シンプルさが不足:バックエンド管理インターフェースが複雑すぎて、ただ記事を書きたいだけなのに、なぜそんなに多くのものを見せられなければならないのか?
  5. モダンさが不足:フロントエンドインターフェースはテーマでカスタマイズできますが、常にモダンさが不足していると感じます。(例えば、私が以前使用していた Sakura テーマは、多くの人が使っているように感じますが、そのテーマ自体は更新やメンテナンスが行われていません)

もう一つ、WordPress は Serverless 環境向けに設計されていないため、自分で LNMP 環境を実行しているサーバーが必要で、そのサーバーを自分で維持する必要があります。15 年の時にメンテナンスしていた AIFans サイトも WordPress を使用しており、データベースは確かに攻撃を受けたことがあり、良い体験ではありませんでした。

SuzuBlog の特徴#

この文章で SuzuBlog の特徴を長々と紹介したくはありませんが、興味がある方は、私が特に SuzuBlog のために作成したドキュメントサイト SuzuBlog Docs をご覧いただくか、直接 SuzuBlog の GitHub リポジトリ SuzuBlog を確認してください。ドキュメントサイトでは、SuzuBlog の使い方や始め方について非常に詳しく説明しています。同様に、私の実装に興味がある方は、ソースコードを直接確認することもできます。

簡単に言えば、SuzuBlog は Next.js ベースのブログシステムです。記事は純粋な Markdown で書くことができ(これは私が一つの記事を複数のプラットフォームで同時に公開できる理由でもあります)、もちろん、Hexo との互換性を持たせることがより重要です。同様に、SEO 最適化も特定の最適化が行われており、完全な robots.txt、sitemap.xml、manifest.json、LD-JSON などを実現しています。記事の内容に基づいて動的に対応する SEO 情報を生成します。同様に、記事を公開する際に自動的に RSS を生成する自動 RSS ジェネレーターも構築しました。

ブログシステムとして、テーマ / CMS ではなく、より良いユーザー体験とカスタマイズのために、Hexo の config.yml の方法を参考にし、個性化設定オプションをここに配置しました。これにより、ユーザーは自分のブログシステムを簡単にカスタマイズできます。

SuzuBlog を選ぶ理由#

私は、使いやすさが非常に重要な特徴だと思います。

  1. Use this template ボタンをクリックするだけで、自分専用のリポジトリを直接作成できます。
  2. config.yml の設定を変更します。
  3. 次に、あなたの記事を posts フォルダーに置きます。
  4. 最後に、新しい vercel アカウントを作成し、GitHub リポジトリをバインドするだけで、自動デプロイが可能になります。

これだけ簡単で、たったの 4 ステップ、全過程で 10 分もかからないかもしれません。サーバーの設定も、データベースの設定も、nodejs のインストールも不要で、GitHubVercel のアカウントがあれば、モダンで高性能、高セキュリティのブログを構築できます。

技術スタック#

SuzuBlog は以下の技術スタックを使用しています:

  1. Next.js:React ベースのフルスタックフレームワークで、SSR、SSG、CSR などの多様なレンダリング方式を提供し、SEO 最適化を簡単に実現できます。
  2. TypeScript:私のすべてのソースコードは TS で書かれており、JS を使用している部分はありません(正直なところ、純粋な JS でプロジェクトを書くのはあまり好きではありません)。
  3. TailwindCSS:あなたが見ているすべてのスタイルは純粋な TailwindCSS で書かれており、CSS プリプロセッサやスタイルフレームワークは使用していません。ShadCN も MUI も Antd もありません。
  4. gray-matter:Markdown front-matter を解析するためのライブラリで、記事の front-matter を解析し、<!--more--> タグを処理します。
  5. react-markdownremark をラップした、React 用に設計された Markdown レンダラーで、Markdown を個別にレンダリングします。(各タイプのタグに対して直接スタイルをカスタマイズできます)
  6. rssnode 環境で RSS を生成するために特化したもので、ここでドキュメントを確認できます node-rss

さらに、私がよく使用するツールライブラリもあります:

  1. @zl-asica/react:私が自分でラップしたいくつかの React Hooks やユーティリティ関数など。ドキュメントはここで確認できます @zl-asica/react
  2. @zl-asica/prettier-config: 私自身の Prettier 設定で、強迫観念があり、コードが整っていないと書けません🥹。ここは npm パッケージとして直接使用できます @zl-asica/prettier-config
  3. eslint-config-zl-asica: 私自身の ESLint 設定で、上記と同様です🥹。npm でも同様に利用可能です eslint-config-zl-asica

スタイルデザイン#

私が設計した基本的なロジックは、aria 規範、WCAG 規範に従い、異なるサイズのデバイスに対してもフレンドリーである必要があります(レスポンシブデザイン)。ただし、IE 11 には対応していません。申し訳ありませんが、私はそれを実現できません。User Center Design のデザイン理念に従い、ブロガーやサイト運営者が記事を書くのをより簡単にし、自分のコンテンツ制作に集中できるようにするだけでなく、読者やユーザーがより快適で、楽しく、リラックスして読めるようにする必要があります。

デザインプロセスでは、以前使用していた 2 つのテーマの一部のデザインロジックを参考にしました。それは Sakura(私が以前使用していた WordPress テーマで、多くの人が聞いたことがあると思います)と、hexo-theme-nexmoe(これは私の Hexo サイトで使用しているテーマで、私の Hexo サイトは閉じていませんが、徐々にこのサイトに移行する予定です)。

移行ガイド#

WordPress からの移行#

もしあなたが以前 WordPress で Markdown を使用して記事を書いていたなら、記事を持ってきて、対応する frontmatter を追加するだけで済みます。これだけ簡単です。

Hexo からの移行#

私が 無損互換 Hexo と言ったので、あなたは単に記事を posts フォルダーにコピー&ペーストするだけで済みます。SuzuBlog の frontmatter フォーマットは Hexo と基本的に一致しています。

Markdown を使用している任意のブログシステムからの移行#

もしあなたのブログシステムが Markdown を使用しているなら、記事を持ってきて、対応する frontmatter を追加するだけで済みます。これだけ簡単です。

結論#

SuzuBlog は私が自分の問題を解決するために開発したブログシステムで、より多くの人々を助けることができることを願っています。もし SuzuBlog に関して何か質問や提案があれば、GitHub Issues でお知らせください。できるだけ早く返信いたします。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。