nuxtでglobal変数を定義する
- 公開日:
- 更新日:
- 文字数:1821文字
はじめに
nuxtで毎回同じ変数を定義している場合、1つにまとめたくなります。そういった際にglobal変数はとても便利です。nuxt.config.jsやSSR時、CSR時にも使える方法をご説明します。
SSR時とは?
SSR時はpageのasyncDataで使う際に使用します。コードで表すと下記の通りです。
asyncData($config) {
console.log($config.HOGE) // SSRなのでprivateで宣言したほうも呼べる
console.log($config.HOGE)
}
CSR時とは?
CSR時はpageのmountedにあたる部分です。コードで表すと下記の通りです。
mounted() {
console.log(this.$config.HOGE) // CSRなのでpublicで宣言した方しか呼べない
}
定義する
/plugins/ or store/plugins/に任意のjsファイルを作成します。
今回「constants.js」としておきます。
/plugins/constants.js or store/plugins/constants.jsに定義したいものを書きます。
const SITE_DOMAIN = 'https://highneeds.jp'
nuxt.config.jsで読み込み
export default {
plugins: [
{ src: '/store/plugins/constants.js' }
]
}
読み込み
後はプロジェクト内の各ページで、以下のように$<定数名>で参照できます。
console.log(this.$SITE_DOMAIN)
nuxt.config.jsでglobal変数を使用する
上記のやり方ではnuxtにglobal変数として使用できません。nuxt.config.jsでglobal変数を定義する方法をここからは解説します。
Nuxtv2.13以降の場合
Nuxtv2.13以降なら、パッケージをインストールくる必要もなく、デフォルト環境で変数定義できます。
@nuxtjs/dotenvを使用しない
.envファイルを作成し、nuxt.config.jsにpublicRuntimeConfigとprivateRuntimeConfigを定義するだけ。
BASE_URL=http://localhost:8000
API_URL=http://localhost:8888
SECRET_KEY=test
nuxt.config.js
export default {
publicRuntimeConfig: {
baseURL: process.env.BASE_URL || 'http://locahost:3000',
apiURL: process.env.API_URL || 'http://localhost:3333',
},
privateRuntimeConfig: {
secret: process.env.SECRET_KEY,
}
}
変数を使用する
どこからでも読み込みができます。
export default function ({ $config }) {
consle.log($config.baseURL)
}
Nuxtv2.13以降でない場合
dotenvをインストールしてきます。
npm install dotenv --save
.envを作成
touch .env
BROWSER_BASE_URL=https://highneeds.jp
使用する
以下で使用可能になります。
process.env.BROWSER_BASE_URL