Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Vueで静的ブログを作りたい!
Search
Naruto
January 21, 2020
Programming
590
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
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
130
Java 27新機能 / Java 27 new features
kishida
2
170
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
150
Family mrubyの進捗
kishima
1
130
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
240
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
150
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
3.3k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
540
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
0
1.8k
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
4
3.7k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
290
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
190
Featured
See All Featured
Paper Plane
katiecoart
PRO
4
53k
The browser strikes back
jonoalderson
0
1.7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.9k
Design in an AI World
tapps
1
330
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
510
GraphQLとの向き合い方2022年版
quramy
50
15k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
How STYLIGHT went responsive
nonsquared
100
6.3k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.9k
We Are The Robots
honzajavorek
0
380
How to build a perfect <img>
jonoalderson
1
6k
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)