Skip to content

"components want vary templates" or what about is few templates into .vue file with hot reloading? #1122

@ibyteyou

Description

@ibyteyou

What problem does this feature solve?

#418

let's imagine an abstract situation when:

  1. component script has 1-3 functions
  2. component template has 10 tabs which use almost the same functions from component

We can't use include ./tab-1.pug, because process editing of file unbearable without hot reloading.
We can't use components system, because between original parent and needed child may be n-count any ancestors. And we will need use big deep paths as $parent.$parent.$parent or excess props.
A system in which 10 elements within themselves have similar variables and functions looks cumbersome.

simple example:

<template lang="pug">
  wrapper-content(name="settings")
    el-scrollbar
      el-tabs(v-model="tabActive" wrap-class="height-screen" fixed no-scrollbar)
        el-tab-pane(label="Основные" name="basic")
          include ./tab-basic
        el-tab-pane(label="A1" name="a1")
          include ./tab-a1
        ...
        el-tab-pane(label="Z10" name="z10")
          include ./tab-z10
</template>

End user experience concludes in situations, when components needs in interchange of templates which has convention of using functionality.
I suggest the using "the template in template" with supporting props src ... and lang (if it's realistic).
It's will be perfect for components, which have default theme, can change theme and ready for customization.

What does the proposed API look like?

<template lang="pug">
  wrapper-content(name="settings")
    el-scrollbar
      el-tabs(v-model="tabActive" wrap-class="height-screen" fixed no-scrollbar)
        el-tab-pane(label="Основные" name="basic")
          template(src="./tab-basic")
        el-tab-pane(label="A1" name="a1")
          template(src="./tab-a1")
        ...
        el-tab-pane(label="Z10" name="z10")
          template(src="./tab-z10")
</template>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions