#json #vue.js #vuejs2 #nuxt.js
#json #vue.js #vuejs2 #nuxt.js
Вопрос:
Я пытаюсь включить локальный файл JSON из static
каталога с именем blogs.json
, внутри которого находится множество блогов.
В настоящее время я загружаю блоги через Vue Axios, который является модулем, который я включаю в Nuxt JS.
В настоящее время блоги загружаются из файла json совершенно нормально, однако перед загрузкой блогов наблюдается заметная задержка в несколько мс, я пытаюсь найти лучший подход для загрузки файла json и заполнения blogs
массива, указанного внутри data()
Это мой текущий код:
<script>
import PageBanner from '~/components/PageBanner';
export default {
head: {
title: 'Site Title: Blog',
meta: [
{ hid: 'description', name: 'description', content: 'Site description' }
]
},
components: {
PageBanner
},
data () {
return {
blogs: [],
isLoading: true
}
},
created () {
this.axios.get("/articles/blogs.json").then((response) => {
this.blogs = response.data
this.isLoading = false
})
}
}
</script>
Это работает просто отлично, но как я мог бы изменить это, чтобы загрузить json быстрее?
Комментарии:
1. Я полагаю, что ваш JSON — это локальные данные, тогда вам не нужно использовать асинхронный код для извлечения данных. вы можете напрямую использовать в качестве переменной, если хотите, чтобы она загружалась быстрее.
2. Я не настолько знаком с nuxt.js (поскольку я с vue.js только) но вы можете взглянуть на документацию, особенно на промежуточное программное обеспечение здесь: nuxtjs.org/guide/routing#middleware
3. Как бы мне это реализовать?
4. Насколько велик ваш файл blogs.json?
Ответ №1:
Просто импортируйте его, сделайте это, и, если бог даст, все должно сработать:
<template>
<div>
<!-- There should be no delay -->
{{blogs}}
</div>
<template>
<script>
import PageBanner from '~/components/PageBanner';
import blogsFromJson from '~/articles/blogs.json'; // Or wherever it is found
export default {
head: {
title: 'Site Title: Blog',
meta: [
{ hid: 'description', name: 'description', content: 'Site description' }
]
},
components: {
PageBanner
},
data () {
return {
blogs: blogsFromJson, // Just set it here
isLoading: true
}
},
/* No need for this anymore
created () {
this.axios.get("/articles/blogs.json").then((response) => {
this.blogs = response.data
this.isLoading = false
})
}
*/
}
</script>
Комментарии:
1. @RyanHolton Пожалуйста, отметьте этот ответ как правильный, если он сработал для вас. Спасибо!