NuxtMeetup#5
https://gyazo.com/8bbb551b7f2e38a8c1ef843782690a90
https://nuxt-meetup.connpass.com/event/99043/
https://www.youtube.com/watch?v=hGBMgvv01oI
スポンサーLT:株式会社サイバーエージェント
バンドルファイルの肥大化問題解消にみるNuxt.jsの成熟化
Wakamatsu Hisashi
Frone-end Engineer
Lulucos by.Sの開発
前回LT https://speakerdeck.com/wakamatsu/vue-dot-js-plus-nuxt-dot-js-woshi-tuteb2csabisuwozuo-tutahua
実際にサービスを運用して機能拡張していくときの問題
バンドルファイルサイズ問題
Nuxt.js 2でどういう風に解決されるか
Nuxt.js 2 Coming !
https://medium.com/nuxt/nuxt-2-is-coming-oh-yeah-212c1a9e1a67
主にwebpack4への変更と恩恵が大きい
Nuxtを使うメリット
.vueファイルで作れる
コードの自動分割
これが足かせになった
CommonChankPlugin
vendor.{hash_id}.js
コアライブラリ
node_modulesの各モジュール
build設定のvendorプロパティで指定されたリソース
code:js
build {
vendor: [
~/plugins/xxxx
]
}
この部分がプラグインを増やすとどんどんサイズがでかくなる
yamanoku.icon Nuxt2では廃止箇所
回避方法
必要なリソースだけ読み込む
リスクの根本的回避はできてない
maxChunkSizeの指定。指定を超えたら分割対象になる
これはhttp/2のみの有効手段
Nuxt2
optimization.splitChunkの仕様で制御
layoutsは基本的にtrueにしてコード分割対象へ
buildプロパティ比較
v1 ... 40行
Nuxt2 ... 100行超え
柔軟な設定が期待できるようになった
SSR
minify など
Nuxt.jsを使う上で大事なこと
ベストプラクティスの集合
細かいビルド設定できるように
フレームワークとして成熟してきた
vue-cli 3の登場で旨味は減ったが
SSRを手軽に実装できる
工法を熟知しなくても立派なものはつくれるように
これは仕組みがわからない場合、問題解決が難しくなる
Nuxtでアプリケーションを開発するにあたり
どういう仕組で実現して
どういう初期値が設定されているかを知る
LT1:hiroki_yoshitugu
https://speakerdeck.com/gyarasu/hurontoendoenzinia-shi-jia-dong-made-hitoridedekirumon
フロントエンドエンジニアでできるもん
パーソルキャリア株式会社
株式会社オムニス
DODAと開発中新サービスの紹介
最近リブランディングした
検索やめよう、新規サービス
無思考型新サービス
機械学習でよさげなレコメンドが出せる
フロント
Nuxt.js(SSR)
PWA
バックエンド
Express.js
MySQL
機械学習は別部隊が開発、API連携
体制:人が少ない!
ものづくり先行で進めておく
新規サービスなのでとにもかくにもPoCを成立させる
ガワを作って具現化しておくのはのはフロントエンドの強み
nuxt-full-stack-template
Nuxt
認証チェック
express
MySQLの接続
セッション管理
データストア:MySQL
v5.7
nodeサーバーを実稼働に向けて整備
マルチプロセルでどう動かすか?
npm run start / build
productionモード
実稼働で動かさ無さそう
コア4で動かす場合
npm scriptsで動かすとリソースが余る
clusterモードでリソースがちょうど合う
pm2は便利
instance: 0にすると勝手にコア数分のクラスタを動かせる
80番ポートで使える?
well known portはrootでの実行
root以外のユーザでも起動できる
authbindを導入して、エイリアスを設定する
ApacheやNginxは?
Apache80 × Node3000はあんまりやらない?
Nginx80 × Node3000はよくある
結論:なくてもできる
クラスタ構成でうまくロギングできる?
pm2 × log4jsでかいけつ!
"pm2": true
"pmInstanceVar": "INSTANE_ID"
pm2でできること
プロセス監視とモニタリング
ファイル変更時に自動的にプロセス再起動
LT2:masaakikunsan
Vue or Nuxt
https://slides.com/masaakikunsan/vue_or_nuxt#/
株式会社SCOUTER
Vue Fes Japan Staff
なぜNuxtを選定したか?
Vue.jsでもよかったのでは?
動向について
npm trends
React vs Angular vs Vue vs jQuery (2016/09/11 - 2018/03/04)
vue-cli3の登場
ロードマップ
Vue.js本の登場
Nuxt2の登場
Nuxt本
VueもNuxtも便利になってきた
Vue.jsメリット
jQuery使わなくて良い
公式エコシステムの豊富さ
vue-router
学習コスト低め
日本語ドキュメント
Nuxt.jsメリット
webpackとbabel周りが隠蔽されてる
SSRが楽
SEOが楽
ルーティングの自動生成
[https://gyazo.com/85693c50cfc5c256babc014c55281c36]
規約がある
Nuxtのほうがよいとき
SSR
SEO
チームに精通した人が多い
静的サイトジェネレーター
yamanoku.icon PWAとかもサクッとできて良い
選ばないほうがいいとき
SEOがいらないとき
設計は自分でやりたい
チームに初心者が多い場合
TypeScript
ルーティングを自動化するのはこれがいい
GitHub.icon https://github.com/ktsn/vue-cli-plugin-auto-routing
https://katashin.info/2018/07/16/233
LT3:かめぽん
Vueを広めるためのNuxt.jsの可能性
https://speakerdeck.com/ishiagme/vuewoguang-merutamefalse-nuxt-dot-jsfalseke-neng-xing
アジアクエスト株式会社
組織にVueを定着させるための施策
そもそもなぜ導入・拡散するのか
フロントエンドが居やすい環境をつくる
jQuery依存を激減させる
組織をドライブさせるため
適切な技術は適切な人を呼ぶ
Nuxtの特徴とインパクト
Vueによる親しみやすさ
規約が制定されている・共通化
圧倒的スピードが出せる
starter-templateよりcreate-nuxt-app
メリット
ユーザーの増加
属人性の排除
爆速で作って壊せる
導入してみて
習得時間、実装時間ともにかなりの工数短縮
非同期通信をゴリゴリやってもよい
インフラ構成を問わない
まとめ
組織に定着させるのは時間と体力がいる
とりあえず使ってみよう
定着するまであきらめない
LT4:Yuki Terashima
Nuxtを使っていて地味にハマった小ネタの紹介
https://speakerdeck.com/y_temp4/nuxtmeetup-number-5
ALIS Co., Ltd
Google Tag Managerの設定
ALISで設定している
GitHub.icon https://github.com/AlisProject/frontend-application/blob/develop/app/plugins/gtm.js
公式でもある?
npm.icon https://www.npmjs.com/package/@nuxtjs/google-tag-manager
Lambda上で動かす
当時(2018年4月)事例がなかった
GitHub.icon mya-ake/nuxt-on-lambdaが参考になった
注意点
package時に除外ファイルを指定
デプロイパッケージを小さくするため
大きいファイルを優先的に除外
500エラーの挙動
SSRしてるときはlayout/error.vueが読み込まれない
app/layout/views/error.htmlを設置する
nuxt.config.jsのsrcDir設定がappだったら見直すことあり
app/app/layout/views/error.htmlにする
パス設定はよく見とけ
ドキュメントはしっかり読んどけ
ハマりそうだったらALISの実装も見といてくれ
GitHub.icon https://github.com/AlisProject/frontend-application/
LT5:odan
https://speakerdeck.com/odanado/i18n-of-web-site-using-nuxt-i18n
nuxt-i18nを使って多言語サイトを作った話
株式会社モバイルファクトリー
Uniqys Network
https://uniqys.net/
i18nについて
国際化の略
ソフトウェアを各言語や地域に対応させる
サマータイム
Vue-i18n
https://github.com/kazupon/vue-i18n
nuxt-community/nuxt-18n
https://github.com/nuxt-community/nuxt-i18n
日本語情報が少ない!
機能
vue-i18nのtranslation機能のみ
ルーティング自動生成
nuxt.config.jsに設定
便利関数
localPath()
第2引数にそのpathを返す
localPath('index.vue', 'en')
switchLocalePath()
現在のコンポーネントで別言語へのpathへ
SEO対策
自動生成
hreflang
og:locale
og:locale:alternate
<head>タグの中身が消えるバグ
直ってない?
ルーティング
prefix_except_default
/ => 200
/en => 404
ja => 202
prefix
/ => 404
/en => 200
/ja => 200
https://github.com/nuxt-community/nuxt-i18n/pull/111
LT6:Tame
NuxtでのJAMStackな開発とポイント
https://speakerdeck.com/tameto/nuxtdefalsejamstacknakai-fa-topointo
株式会社ROLO
Jamstackを知っているか?
関連:JAMstackってなんなのか問題に立ち向かう
NuxtでJAMStackやる利点
パフォーマンス
セキュリティ面が強い
Nuxtへの期待
SPA
SSR
JAMStack
Nuxt,js + Netlify + Contentful
ContentfulでContentModelを作成
記事データを作成
APIができる
Nuxtダウンロード、GitにPush
Netlifyで対象Gitを設定
nuxt.config.jsでgenerete時にContentfulのAPIを実行して静的ファイルを作成
prerendering機能を使ってwebhookを登録してNetlify側でdeployする
#Nuxt.js