如何在 Nuxt Vue 的单个模板中添加多个组件?

Posted

技术标签:

【中文标题】如何在 Nuxt Vue 的单个模板中添加多个组件?【英文标题】:How to add miultiple components in a single template in Nuxt Vue? 【发布时间】:2021-12-25 16:20:13 【问题描述】:

夏天

我尝试创建一些示例 Vue Nuxt SPA。 在一个组件中,我添加了其他两个组件。 结果浏览器上什么也没有显示。

我想知道如何修复它并正确显示输入功能。

我试过的

这是目录结构。

project
  ├ pages
  │  └ index.vue
  ├ components
  │  ├ home
  │  │  └ index.vue
  │  ├ input
  │  │  └ index.vue
  │  └ list
  │     └ index.vue
  .
  .

components/home/index.vue 中我添加了两个组件:Input 和 List。

<template>
  <div>
    <Input/>
    <List/>
  </div>
</template>

<script lang="ts">
import  Component, Vue  from 'nuxt-property-decorator';
import Input from '~/components/input/index.vue';
import List from '~/components/list/index.vue';

@Component(
  layout: 'default',
  components: 
    Input,
    List,
  ,
)
export default class Home extends Vue 
</script>

因此,浏览器上没有显示任何内容。

显示一些代码

这里是 Github 存储库,请查看。 https://github.com/jpskgc/vue-nuxt-spa-sample/tree/multiple-components

【问题讨论】:

嗨,我的回答有帮助吗?如果有,请点赞/接受。 【参考方案1】:

转到nuxt.config.js,设置为shown here。

export default 
  components: [
    
      path: '~/components', // will get any components nested in let's say /components/test too
      pathPrefix: false,
    ,
  ]

这样,您将获得自动导入组件。然后,您将能够将组件直接重命名为 Home.vueInput.vueList.vue,并直接在模板中使用它们。

您可以查看此 repo 以了解有关自动导入组件功能的更多详细信息:https://github.com/nuxt/components

阅读这篇文章,更好地解释自动导入的含义:https://nuxtjs.org/tutorials/improve-your-developer-experience-with-nuxt-components

如果你需要一些关于如何命名和组织你的组件的指南,你可以参考这个:https://vueschool.io/articles/vuejs-tutorials/how-to-structure-a-large-scale-vue-js-application/

【讨论】:

我在nuxt.config.js添加了它,但仍然没有显示... @jpskgc 我们在这里可能需要minimal reproducible example。【参考方案2】:

发现是缺少@component注解造成的。

输入/index.vue

<template>
  <v-text-field label="Main input" :rules="rules" hide-details="auto" />
</template>

<script lang="ts">
import  Component, Vue  from 'nuxt-property-decorator';

@Component # <- add it.
export default class Input extends Vue 
</script>

list/index.vue

<template>
  <div>List</div>
</template>

<script lang="ts">
import  Component, Vue  from 'nuxt-property-decorator';

@Component # <- add it
export default class List extends Vue 
</script>

【讨论】:

是的,如果你使用 TS,你确实需要这个。

以上是关于如何在 Nuxt Vue 的单个模板中添加多个组件?的主要内容,如果未能解决你的问题,请参考以下文章

Vue 中的全局组件(nuxt)

如何在刀片模板 laravel 中使用单个文件 vue 组件?

多个单文件组件和 Vue Webpack 模板

如何在 laravel 应用程序中为单个 vue 组件实现 s-s-r?

如何使用angular2在单个组件中调用多个模板

Nuxt / Vue:组件在页面中调用方法