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で対応する括弧に色を付けて見やすくする環境設定
Vue CLIのプロジェクト管理用のGUI機能から環境を構築する
resizeイベントを使用する場合は、iOS Safariでの挙動に注意
さくらのレンタルサーバで.htaccessが原因で500エラーになってしまう場合のチェックリスト
Visual Studio Codeの基本|概要やインストールから日本語化など最低限の設定方法
コーディング時のclass名の省略はどこまでして良いのか?「img / btn / ttl / desc / thumb」
MacVim-Kaoriyaのインストール方法
EJSのincludeで別ファイルを読み込むときの画像パスを指定する方法
JavaScriptで配列内から特定条件の要素を探す方法
Visual Studio Codeの「Debugger for Chrome」でJavaScriptのデバッグを行う
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
テーブルタグ一式をすばやく・ラクに入力するためのスニペットサンプル
三点リーダー(……)とダッシュ記号(——)の正しい使い方
コード管理に特化したノートアプリ「Quiver」でコードの管理を行う
【前編】Sync & Liveで取り回す Illustrator でのデータ作り!!CSS Nite in KOBE, Vol.26
Nuxt.jsの「layouts」を使用してレイアウトの共通化を行う方法|Nuxt.jsの基本
Google Chrome単体で「あとで読む」を実現する「リーディングリスト」機能
Hazelで「ゴミ箱」の中身を空にする作業を自動化してしまう
Gitで1行しか変更していないはずのに全行変更した判定になってしまう
macOSで画面を拡大縮小するズーム機能の設定