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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

10055閲覧

nuxt.jsのassetsフォルダについて

okpk

総合スコア38

Nuxt.js

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/11/14 09:16

編集2018/11/19 03:10

nuxt.jsのassetsフォルダについて質問です。

簡単なwebサイトの制作しています。
assets/img ここに画像を入れてpagesのvueファイル内で<img src="~assets/img/hoge.png">と書き表示されることは確認できたのですが、jsファイルはどのように扱うことが出来るのでしょうか?

例えば、全ページに適用したい処理が書いているcommon.jsを作成し、
assets/js/common.js と格納した場合、このファイルはどこからどのようにして読み込めるのでしょうか?

(最終的にはyarn generateして、dist内の静的ファイルをftpサーバーにあげる予定です。)

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

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

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

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

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

guest

回答1

0

ベストアンサー

head要素またはbody要素(の最後)にscript要素を挿入したい場合、nuxt.config.jsheadに設定します。(引用)

JavaScript

1module.exports = { 2 head: { 3 script: [ 4 { src: xxx, type: 'text/javascript', body: true } 5 ] 6 } 7}

xxxはファイルパスです。
headという設定の名前がややこしいですが、Nuxt.jsがvue-metaというライブラリを利用していて、そのライブラリで使える設定が使えるということです。
そちらのライブラリも調べてみてください。

追記(2018/11/18)

質問の意図をうまく汲み取れていない部分がありましたので、追記します。

質問の「全ページに適用したい処理が書いているcommon.js」については、以下の対応が考えられます。

「Vueアプリケーションが実行される前に何かしたい」場合は、
/plugins/common.jsを作成しnuxt.config.jspluginsにパスを記述してください(参考)。

「Vueアプリケーションでルーティングが行われるタイミングで何かしたい」場合は、
/middleware/common.jsを作成して、コンポーネントのファイルに設定してください(参考1参考2)。

もしくはモジュールが求めているものかもしれませんが、
長くなるので説明は省略します。


assetsについては、以下の説明をもって最初の回答を訂正いたします。

/assetsディレクトリにあるものは、ビルドする際にwebpackで操作されることを意図しています。
また、/assetsディレクトリには画像やCSSをいれておくのが、本来Nuxtが意図した使い方です。

webpackで操作されることを意図しないファイルは/staticディレクトリに配置してください。
/static/xxxは、ビルド時に/xxxとして、そのままコピーされます。
faviconなどはビルドの必要が無いのでここが自然です。

assetsstaticについてはこちらを参照してください。


okpkさんのおっしゃる通り、nuxt.config.jsheadプロパティには、CDNで配布されているライブラリなどをwebpackのビルドファイルに含まずにリンクする場合に有用です。

投稿2018/11/14 23:46

編集2018/11/18 11:09
NozomuIkuta

総合スコア1260

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

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

okpk

2018/11/15 08:39

回答ありがとうございます。 すみません、すごい初歩的な疑問になるのですが、パスはどのようなものになるのでしょうか? 確かにcdnなどから配布されている外部URL(jqueryやcreateJS等)はhttpsからの書き方で読み込めていることは確認できたのですが、 仮にassets内にjsフォルダを作り、hoge.jsを入れた場合は、{src:"/assets/js/hoge.js"}とかけるのでしょうか? hoge.jsをES6で書いた場合このままだとブラウザは読み込めませんよね...?
NozomuIkuta

2018/11/18 11:11 編集

追記しました。 また、質問に「JavaScript」のタグをつけていただけると他の方が見つけやすくなると思うので、お願いします。
okpk

2018/11/19 03:14

大変わかりやすい回答をしていただき、ありがとうございました。 全ページで使う処理(common.js)をプラグインと定義しpluginsフォルダで使用するという点も腑に落ちました。 また、ルーティングのタイミングでの処理はmiddlewareに追加するのですね。 「Javascript」タグも追加致しました。
NozomuIkuta

2018/11/19 04:42

解決したようでよかったです タグ追加ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問