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

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

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

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vue CLI

Vue CLIは、Vue.jsでアプリケーション開発を行うためのコマンドラインインタフェース(CLI)に基づいた開発ツールです。インタラクティブなプロジェクトの雛形や設定なしで使用できるプロトタイプの作成など、さまざまな機能が用意されています。

JavaScript

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

Q&A

解決済

1回答

8157閲覧

vueCLIで外部JSファイルを読み込む方法

stakizawa

総合スコア117

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vue CLI

Vue CLIは、Vue.jsでアプリケーション開発を行うためのコマンドラインインタフェース(CLI)に基づいた開発ツールです。インタラクティブなプロジェクトの雛形や設定なしで使用できるプロトタイプの作成など、さまざまな機能が用意されています。

JavaScript

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

0グッド

1クリップ

投稿2020/04/07 01:49

編集2020/04/07 04:11

やりたいこと

vueCLIを使用した際にコンポーネント内で、外部JSファイル定義した関数や変数を読み込みたいです。

ディレクトリ構成

vueApp/ ├─src/ | ├─components/ | ├─static/ | | └─js/ | | └─common.js | | | ├─App.vue | └─main.js | └─vue.config.js

現状のソースコード

vue

1// App.vue 2<template> 3 <button @click='test'>test</button> 4</template> 5 6<script> 7export default { 8 data: () => { 9 10 }, 11 methods: { 12 test () { 13 // common.js内のメソッドを読み込み 14 commonTest() 15 } 16 } 17}

javascript

1// common.js 2function commonTest() { 3 console.log('commonOK') 4}

試したこと

以下の内容を試してみました。

main.js内でcommon.jsの読み込み

以下のように、importもしくは、requireで読み込んでみたのですが、commonTest()はundefinedになってしまいました。

javascript

1// main.js 2import common from '@/static/js/common' // importのパターン 3require('@/static/js/common') // requireのパターン 4 5new Vue ({ 6 common, 7 render: h => h(App) 8}).$mount('#app')

コンポーネント内で直接読み込み

以下のように、コンポーネント内で直接importしてみたのですが、結果は同じでした。

vue

1// App.vue(※一部省略) 2<script> 3 import common from '@/static/js/common' 4 export default { 5 deta: () => { 6 7 }, 8 methods: { 9 commonTest() 10 } 11 } 12</script>

以上、拙い文章で恐縮ですがどなたかご教授頂けると幸いです。

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

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

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

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

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

yureighost

2020/04/07 04:07

念のため確認ですが、ディレクトリ構成の「static」と思われるところが 「statc」になっているのは単にスペルミスですかね。
stakizawa

2020/04/07 04:11

yureighost様 申し訳ございません。 ディレクトリ構成のstatcは単純なスペルミスです。 質問内容の修正を致します。
guest

回答1

0

ベストアンサー

export defaultでモジュールとして出力すれば利用できると思います。

javascript

1// common.js 2function commonTest() { 3 console.log('commonOK'); 4} 5 6export default { commonTest };

vue

1・・・ 2<script> 3 import common from '@/static/js/common'; 4 5 export default { 6 data: () => { 7 8 }, 9 methods: { 10 test() { 11 // common.js内のメソッドを読み込み 12 common.commonTest(); 13 }, 14 }, 15 }; 16</script>

投稿2020/04/07 07:53

yureighost

総合スコア2183

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

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

stakizawa

2020/04/07 07:59

yureighost様 回答頂きありがとうございます。 一点質問なのですが、その方法でやるとすると、例えばcommon.js内のメソッドが複数ある場合は、どのように記述するべきなのでしょうか? 以下のように、 export defalut { commonTest, commonTest2 }のような形になるのでしょうか? もしくは、class内でメソッドを定義してexport defalut{ class名 }の方がよいのでしょうか?
yureighost

2020/04/07 10:23

その辺りは結局設計次第ですが、 対象の関数が余りにも多いならクラスとして取り込んだ方がよさそうですね。
stakizawa

2020/04/07 13:39

かしこまりました。 丁寧なご回答ありがとうございます。 もしよろしければ、あと一点お聞きしたいのですが、グローバル変数を持ちたいときなどはどのようにするのが良いのでしょうか? 複数のコンポーネントでグローバルの変数を参照したいと考えています。 もし上記のようにclassで対応するといった場合は、classのプロパティで持つのも手なのかなとも思ったのですが、なんだか違うような気もしていて、ベターなやり方を模索しております。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問