Syf*_*fys 1 vuex vuejs2 nuxt.js
如何在 nuxt/vue 应用程序中的单个位置加载我的静态数据?
理想情况下,我会有一个 JSON 文件保存所有这些数据,这些数据将被加载到 vuex 中,并且可以在任何地方访问......
有人建议我有 2 个选项,但我觉得它们不干净......
export const API_URL = 'https:/my-api.com')。从该文件中的任何您需要的地方导入数据(例如import { API_URL } from 'path/to/constants')。
我找到了一个使用 vue 原型的优雅解决方案
因此使用 Nuxt.js
1)在以下位置创建一个插件 ~/plugins/globals.js
import Vue from 'vue'
import globals from '~/globals.json'
import _get from 'lodash/get'
Vue.prototype.$g = (key) => {
let val = _get(globals, key, '')
if (!val) console.warn(key, ' is empty in $g')
return val || key
}
Run Code Online (Sandbox Code Playgroud)
2)在以下位置创建您的json文件 ~/global.json
{
"website_url": "https://www.company.com",
"social": {
"facebook": {
"url": "https://www.facebook.com/company"
},
"twitter": {
"url": "https://www.twitter.com/company"
}
}
}
Run Code Online (Sandbox Code Playgroud)
3)在每个.vue文件中使用这些
<template>
<div>
<p>URL: {{ $g('website_url') }}</p>
<p>Facebook: {{ fburl }}</p>
<p><a :href="$g('social.twitter.url')">twitter</a></p>
</div>
</template>
<script>
export default {
data () {
return {
fburl: this.$g('social.facebook.url')
}
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1957 次 |
| 最近记录: |