Vue.jsでtemplateタグ内にscriptやstyleタグを生成する方法|Tags with side effect are ignored

Vue.jsで<template>タグ内で動的に<script>タグや<style>タグを生成しようとするとコンパイル時に下記のエラーが出てしまいます。
Tags with side effect (<script> and <style>) are ignored in client component templates.そもそも<template>内に書くのはNGということみたいですが、今回はその回避方法をいくつかまとめておきます。
postscribeを使う
postscribeというパッケージを使えば回避できます。
まずは下記コマンドでnpmインストールしましょう。
npm install -D postscribe使用するときはmounted内でpostscribe()を呼び出し、設定したいタグを設定します。
<template>
<div id="script"></div>
</template>
<script>
import postscribe from 'postscribe'
export default {
name: 'postscribe-sample',
mounted() {
postscribe('#script', `<script src="https://gist.github.com/gautemo/d6b309c2bafe8f611f239b82f4f5501f.js"><\/script>`)
}
}
</script>HTMLのis属性を使う
HTMLにはis属性があり、これを使うとタグを別の扱いにできます。
下記のように記述すると<div>タグが<style>タグとして扱われます。
<div is="style"> body { background: red; } </div>ただ、この方法だと<style>タグは扱えますが、<script>タグはうまくいきませんでした。
本当にハック的な方法ですし、他の人が見たりある程度時間が経ってから見て混乱するので、最終手段です。


Visual Studio Codeでパス補完機能を細かく設定して自分好みにできる拡張機能「Path Autocomplete」
Visual Studio CodeからFTPソフトのTransmitを使用する拡張機能「Transmit」
「epel-release」インストール後にyum installで「Cannot retrieve metalink for repository」と表示される場合の対処法
ウェブサイト上で簡単にWYSIWYGエディタを実装する「TinyMCE」
Dart Sassを使う上で1番基本的なネストやアンパサンドの書き方|Dart Sass入門
iOSシミュレーターを使ってWebサイトを開発者ツールを見ながら実機表示で開発する方法
SourceTreeを開くと「’git status’ failed with code 69:’」というポップアップが出てくる場合の解決方法
ブラウザでこれ以上スクロールできない場合の挙動を制御する「overscroll-behavior」プロパティ
Google Maps APIでマップの見た目をカスタマイズする方法
JetpackでのError during WebSocket handshakeの解決方法
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
アクセス解析ツールの定番!!Googleアナリティクスの登録方法
Keyboard MaestroでGoogle Chromeのタブグループ化にショートカットキーを割り当てておく
CSSでclassがついていないタグにだけスタイルを当てる方法
変換候補に出ないようにしておいた方が便利な単語や、カタカナにした方が読みやすい単語一覧
Fantastical 2は音声入力を使って予定を追加するのが便利!
Path Finder 8の一括名称変更機能を使って楽にファイル名を変更する
1Passwordのアカウントを持っていない人にもログイン情報を共有する方法
単語登録はルールをキッチリ決めるよりも、とにかく登録・改善を繰り返した方が良さそう
MacDownでLaTeX風の記述を使って数式をキレイに表示させる
Transmitでダブルクリックしてファイルを開こうとすると、ファイルがダウンロードされてしまう