Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Vueで静的ブログを作りたい!
Search
Naruto
January 21, 2020
Programming
580
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Vueで静的ブログを作りたい!
Naruto
January 21, 2020
Other Decks in Programming
See All in Programming
yield再入門 #phpcon
o0h
PRO
0
740
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
360
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
150
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
540
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
360
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
130
SLOをサービス品質の共通言語にするために 取り組んできたこと
wakana0222
0
550
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.3k
継続モナドとリアクティブプログラミング
yukikurage
3
640
共通化で考えるべきは、実装より公開する型だった
codeegg
0
280
Apache Hive: Toward a Cloud Native Lakehouse
okumin
0
160
数百円から始めるRuby電子工作
tarosay
0
100
Featured
See All Featured
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Paper Plane (Part 1)
katiecoart
PRO
1
9.8k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
380
Optimizing for Happiness
mojombo
378
71k
A designer walks into a library…
pauljervisheath
211
24k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.2k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Making the Leap to Tech Lead
cromwellryan
135
10k
Building the Perfect Custom Keyboard
takai
2
820
Visualization
eitanlees
152
17k
Transcript
Vueで静的ブログを作りたい! Ishikawa Naruto @garypippi
Vueで静的ブログを作りたい!
Vueで静的ブログを作りたい!
Markdownで記事を書きたい! Vueで静的ブログを作りたい!
Markdownで記事を書きたい! 記事はデータベースを使わず ファイルで管理したい! Vueで静的ブログを作りたい!
Markdownで記事を書きたい! 記事はデータベースを使わず ファイルで管理したい! とにかくVueで作りたい! Vueで静的ブログを作りたい!
Markdownで記事を書きたい! 記事はデータベースを使わず ファイルで管理したい! とにかくVueで作りたい! 自作したい! Vueで静的ブログを作りたい!
Nuxt.jsで作ってみる
Nuxt.js Vue.jsベースのフレームワーク SSR(サーバーサイドレンダリング) SPAモード(SSRしないモード) 静的ファイル生成! https://nuxtjs.org/guide
nuxt generate Nuxt.jsが提供するコマンド 静的ファイル生成 関数を使って動的ルートにも対応 データをページコンポーネントに渡すことが可能 https://nuxtjs.org/api/configuration-generate
2通りの方法で作ってみました A B
PLAN A の概要 PLAN A の概要 静的ファイル生成の設定で 動的ルートを生成しつつ 記事情報をページコンポーネントに渡す
PLAN A PLAN A 記事 Nuxt.js設定ファイル(nuxt.config.js) ルート生成 記事情報処理 nuxt generate
HTML
PLAN A のいいところ PLAN A のいいところ 静的サイトは生成できる
nuxt generate --watch
そのようなオプションはありません
静的ファイル生成ではコードの変更を監視して 自動的に再生成する機能はない
A ボツ
PLAN B の概要 PLAN B の概要 記事情報を提供するコンテンツサーバーを用意し ページコンポーネント内で記事情報を取得 Nuxt.jsの開発サーバーが使える
PLAN B PLAN B Nuxt.js設定ファイル (nuxt.config.js) 記事 コンテンツサーバー ページコンポーネント 記事一覧
記事本文 日付...etc ルート生成 nuxt generate (静的サイト生成) nuxt (開発時) HTML
PLAN B のいいところ PLAN B のいいところ 静的サイトは生成できる コードの変更を監視できる サイトを確認しながら記事を書ける
PLAN B の気になる点 PLAN B の気になる点 手元に記事ファイルがあるのに コンテンツサーバーを立てている? サイト生成時のみ使うコードが ブラウザ用にもバンドルされる(Aも同様)
B ボツ
Vue Server Renderer と Webpackプラグイン を使って作ってみる
Vue Server Renderer Vue.jsでのサーバーサイドレンダリングを提供 import Vue from 'vue' import {
readFileSync } from 'fs' import { createRenderer } from 'vue-server-renderer' const renderer = createRenderer({ template: readFileSync('/path/to/template').toString() }) const vm = new Vue({ render: h => h('div', 'hello') }) renderer.renderToString(vm, {}).then(html => { console.log(html) // => hello }) https://ssr.vuejs.org/
Webpackプラグイン import { Compiler } from 'webpack' export default class
{ apply(compiler: Compiler) { compiler.hooks.run.tap('MyPlugin', compilation => { console.log('Build process is starting!!!'); }); } } https://webpack.js.org/concepts/plugins/
PLAN C の概要 PLAN C の概要 ルート生成 記事情報の取得と処理 静的ファイルの保存 上記やその他もろもろWebpackプラグインで実装
PLAN - C PLAN - C 記事 Webpackプラグイン ルート・記事情報の取得と処理 HTML描画
HTML 編集の監視 index.js webpackビルド
PLAN C のいいところ PLAN C のいいところ 静的サイトは生成できる 各種監視できる 静的サイト生成に関するコードは バンドルに含まれない
最終的にこの方法で作りました
やったー!
Vueで静的ブログ制作のまとめ Nuxt.jsはオーバスペックかもしれない Webpackプラグインで作るのがよさそう
静的ブログ自作の課題 記事読み込み処理の省メモリ化 ブログに関する様々な機能の実装 (次・前の記事へ...etc)