我正在用Vue、Nuxt和vuetify编写一个项目,作为UI库.

在我的索引页面中,我必须用幻灯片和 carousel 显示许多静态内容和图像.我已经对它进行了编码,除了我的索引之外,一切都很好.页面目录中的vue文件看起来很凌乱,我觉得里面的代码行太多了.

例如,我有以下代码用于在index.vue中显示 carousel :

<v-carousel 
          height="90vh"
          vertical
          vertical-delimiters="right"
          interval="9000"
          cycle
          :show-arrows="false"
          hide-delimiter-background
        >
          <v-carousel-item
            v-for="(item,i) in carouselItems" :key="i"
            :src="item.src"
            reverse-transition="scroll-y-transition"
            transition="scroll-y-transition"
          >
              <div
                class="d-flex transition-fade-in white--text"
                style="height: 100%;background: linear-gradient(rgba(0,0,0,.1), rgba(0,0,0,.9));"
              >
                  <v-row
                    class="fill-height pb-9 mx-5 flex-column"
                    align="start"
                    justify="end"
                  >
                    <div class="text-h3 white--text d-block mb-2">
                      {{ item.title }}
                    </div>
                    <div class="text-h6 white--text mx-1 text-justify"> {{ item.description }} </div>
                  </v-row>
              </div>
          </v-carousel-item>
        </v-carousel>

现在我的问题是,我应该将这些代码分离成一个组件,并将选项和项目作为props 传递给该组件,还是应该保持原样,让一个页面组件包含多行代码?

推荐答案

这一切都取决于你、你的工作方式以及你/你的团队对拆分成组件的感觉.到目前为止,没有任何标准可以说"一个组件最多需要300行"或类似的内容.

这也可以归结为组件的逻辑,让它们同时做好一件事,而不是做太多.但是,不要过度设计它,让50行组件完全可以是一个组件,因为这也会引入一些不需要的复杂性.

当你觉得它做得太多或太大时,只需编码和拆分.我通常有5行代码的组件,最多300到400行,这取决于它们的复杂性/实现.

Vue.js相关问答推荐

Nuxt.js i18n不提供默认区域设置中的页面而不重定向

用于循环数组的模板元素内的条件渲染

如果似乎没有明确使用输入事件,那么发出输入事件有什么作用?

Vuejs - 更新数组中对象的数组

Vue 和 Nuxt 之间生命周期钩子的不同行为

vue 模板中无法识别 pug 语言

如何在 Vue.js 中添加动态组件/部分

带有外部配置文件的 Vue js

是否可以在没有 Vue 的情况下使用 Vuex?

在基于 TypeScript 的 Vue 中将 vuex 状态和Mutations绑定到复选框组件属性

Vuetify v-select 组件宽度变化

Vue test-utils 如何测试 router.push()

我应该将所有数据存储在 vuex 状态

Vuetify 数据表不显示数据

根据nuxt中的url参数动态加载组件

使用 vuex-persistedstate 仅使一个模块持久化

如何将单选按钮绑定到 vuex store ?

v-bind:class 的 Vue.js 计算(computed)属性

将鼠标悬停在 TailwindCSS 中的 div 上时显示按钮

禁用外部主题文件产生的 Dart SASS 警告