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

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

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

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

JavaScript

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

Q&A

0回答

283閲覧

vue-cli-service build --target wc でスタイルが適用されない

Fushihara

総合スコア52

Vue.js

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

JavaScript

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

0グッド

0クリップ

投稿2019/05/06 00:33

vue.jsを使って以下の様な画面を作成しました。(画面A)
イメージ説明

このvueファイルをvue-cli-serviceを使って、target=wc でビルドすると、デザインが崩れてしまいます。(画面B)
イメージ説明

ドキュメントの一番上にスタイルが指定されており、web componentsの中の要素に適用されていないのが原因である事は分かります。
ですので、以下の様にcssをカットして、web componentsの中に直接ペーストすると正常な外見になります。
イメージ説明

ソースコードで言うと、vueファイルのこの部分の指定が原因かと思います。この部分は'vue-cool-select'という外部モジュールに指定 されております。

Vue.use(VueSelect, { theme: 'material-design' });

この場合'vue-cool-select'モジュールの作者に修正・対応をお願いするのが一番確実だとは思うのですが、こっち側で上記のVue.useの書き方を変える事でweb componetnsに対応する方法はありませんでしょうか?
'vue-cool-select'モジュールに限った話であれば$elem を直に書き換えればどうとでもなると思いますが、Vue.useを使っているモジュールをweb componentsでビルドする時はこの様に書き換えればいい。という共通のやり方を教えて欲しいです。

グローバルのVueではなく継承しているインスタンスにuseすればいい と思って、以下のmountedメソッドの中を書き換えてみたのですがエラーになってしまいました。

export default Vue.extend({ mounted: function () { this.use(VueSelect, {theme: 'material-design'});//エラー。thisにuseが生えていない }, 略

こちら、再現出来るソースコードを用意しました。
https://github.com/fushihara/vue-cli-q-20190506

こちらのレポジトリからgit cloneして、npm installする事で準備が出来ます。
その後、npm run serveを実行すると正常なデザインの画面Aが表示されますが、./node_modules/.bin/vue-cli-service build --target wc --mode development --name test-vue --dest "build-result-dev-wc--vue" ./src/test-vue.vueを実行し、./build-result-dev-wc--vue/demo.htmlを開くと、スタイルが適用されていない画面Bが表示されます。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問