質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Q&A

解決済

1回答

1626閲覧

Nuxtのinjectが肥大化すると動作は重くなるか

hajifu

総合スコア88

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

0グッド

0クリップ

投稿2020/07/10 17:08

編集2020/07/18 10:54

背景

自分は普段、APIなどの外部処理や、そのほかよく使う処理などはinjectにまとめるようにしています。
firebaseのfirestoreをあれこれしたり、awsのamplifyでAPIを叩いたりなどの外部sdkを使う場合です。
個人的には毎回storeファイルやpageファイルでそれらのライブラリをインポートしたり、amplifyのgraphqlAPIならgraphqlの文字列を読み込んだりするのが面倒だしボイラーテンプレートっぽいものでstoreやpageが肥大化するので、injectに分けることによって見やすく管理しやすくなるんじゃないかなあと思ってそうしています。

聞きたいこと

そこで疑問に思ったのは、injectによって開発効率は(個人的には)あがるんですが、パフォーマンスには何か影響があるのかなということです。
確かにライブラリや外部ファイルのインポートは一か所にまとまるのですが、逆にそれらをpluginsでまとめて最初に読み込んでしまうと重くなってしまわないかということです。
アプリケーションが動く裏側の仕組みがよくわかってないので、変なことを言っていたら申し訳ありません…

例えば、
pageA => ライブラリ1, ライブラリ2, 外部ファイル1
pageB => ライブラリ1
pageC => ライブラリ3, 外部ファイル2
という風にそれぞれのページで必要だとして、
injectを使わない場合、 仮にユーザーがpageAtとpageBしか訪れないとしたら「ライブラリ3」と「外部ファイル2」は読み込まなくて済みますが、
injectを使っていると pageCに訪れないユーザーにも「ライブラリ3」と「外部ファイル2」を読み込ませてしまう。

ということになるんでしょうか?
もしそうだとしたら、injectにあまり切り分けすぎるのもよくないということになりますか?
抽象的な質問でしたら申し訳ございません。また、タグの webpack も、関係あるのかなと思ってつけましたが無関係だったらすみません。

つまり、injectを使うことに何かデメリットがあれば教えていただきたいです…!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

質問に書かれている認識で問題ないかと思います。
yarn nuxt build --analyze でwebpackによってどのようにファイルが分けられたかなどを確認できるのでしてみると良いと思います。
https://ja.nuxtjs.org/api/configuration-build/

この辺りそこまで知見があるわけではないので間違えていたらすみません。

buildプロパティで設定はできるのですが、通常はNuxtでは各ページのJSと共通のJSで分けられます。
injectを使えば共通のほうになり、確かに使わないページでも読み込んでしまうデメリットがありますが、例であるpageAとpageBで同じライブラリであるライブラリ1を別々で読み込まないというメリットもあります。
これらは Webpack の Code Splitting と呼ばれる機能の話なので調べてみると良いと思います。

投稿2020/07/23 02:14

aaharu

総合スコア441

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hajifu

2020/08/23 17:12

大変遅くなってしまい失礼いたしました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問