Skip to content

Latest commit

 

History

History
53 lines (28 loc) · 5.81 KB

README.md

File metadata and controls

53 lines (28 loc) · 5.81 KB

https://kyonenya.github.io/

これはどんなサイトですか

静的なHTMLサイトでも動作するように、JavaScriptのみで構築したブログサイト。記事データをJSONファイルで保持し、そこから個別記事ページを動的に生成する。

なぜそんな設計で作るのですか

  • なぜ静的ホスティングサイトなのですか——有料サーバーと契約すると、自分が死んだりクレジットカードが止まったりしただけでサイトが消滅するから(無料サーバーも3ヶ月ごとなどの更新ボタンを押し忘れると消える)。

  • なぜGitHub Pagesなのですか——今後数十年は潰れそうにない会社だから。あと無料ドメイン(github.io)が一番かっこいいから。

  • なぜHTMLサイトにしないのですか——記事を100個作るためにディレクトリにHTMLファイルを100個作るのは合理的でないから。その場合、例えばヘッダーとフッターのデザインを変えるとき、100個のHTMLファイル全てを手動で更新することになる。

  • それならなぜ静的サイトジェネレーター(Jekyll等)を使わないのですか——スマホやタブレットから記事を追加したりスタイルを調整したりできないため。たかがブログを書くのにパソコンを開いていちいちビルドするのはスマートでない。

  • 結論——静的なホスティングサイトで、かつ動的なページ生成を可能にするには、相手方のPCやスマホを使役してページ生成をやらせるのがよい(本来サーバーサイドでやるべき仕事を相手にやらせる横着な方法)。

簡易CMS機能

  • 記事データベース:jsonファイルで代用。非同期通信(ajax)でjsonをGETして、オブジェクトに格納する。以前はjQueryの$getJSONでやっていたが、現在はJavaScriptネイティブのfetchで行なっている。参考:JSONファイルからHTML生成(jQuery)
  • 個別記事ページ:パーマリンクをクエリ文字列(?id=123)で割り振り、そのidをもとに個別ページを生成。ページ遷移しているように見える。

全文検索機能

今後実装予定の機能

  • タグによるフィルター機能:クエリ文字列(/?tag="hoge")をもとに当該タグを持つ記事だけを表示する。

  • 関連記事のサジェスト:個別記事ページの末尾に、似た内容の記事を数件おすすめする。

サイトデザインについて

  • CSSの命名規則はPRECSS に則る。参考書籍:『CSS設計完全ガイド』(Amazon

  • 記事ページではマークダウンのように、HTMLタグへのマークアップがただちに装飾に反映される(例:<em>強調</em>強調)。ただし、これは「文章構造とレイアウトの分離(HTMLとCSSの分離)」という原則に反するため、特定のdiv領域(bl_textクラス)に限定して、そこでだけ直接的なマークアップをしている。

  • andanteという日記サイトのデザインを勝手に大いに参考にさせてもらった。

JavaScript SEO