تایپاسکریپت - NUXT 3 - جدا کردن قالب در فایل vue، اسکریپت در فایل TS، SCSS در فایل SCSS


چگونه میتوانیم قالب، اسکریپت (TS)، و استایل (scss) را در فایلهای جداگانه در nuxt3 جدا کنیم؟

من با استفاده از مرجع Nuxt2 تلاش کردم اما کار نکرد - https://stackoverflow.com/a/50956376/

پاسخ شماره ۱

روش من برای جدا کردن فایلها استفاده از یک composable (به صورت خودکار توسط Nuxt وارد شده) برای منطقم است و وارد کردن یک فایل scss در تگ style، مثل این.

فایل مؤلفه من:

<script lang="ts" setup>
  const { isLoadingComponent, fetchComponentData } = useComponent();

  fetchComponentData();
</script>

<template> 
  <ComponentLoader :is-loading="isLoadingComponent " /> 
</template>

<style lang="scss">
  @import 'file.scss'
</style>

فایل قابل ترکیب من:

export function useComponent() {
  const isLoadingComponent = ref<boolean>(false);

  const fetchComponentData = async () => { 
    isLoadingComponent.value = true;
    const data = await useFetch('api');
    isLoadingComponent.value = false;
  }
  
  return { isLoadingComponent, fecthComponentData };
}

پاسخ شماره ۲

فایلهای .vue میتوانند هر یک از تگهای خود را با استفاده از واردات src با مسیرهای نسبی بارگذاری کنند:

<template src="./template.html"></template>
<style src="./style.scss" lang="scss"></style>
<script src="./script.ts" lang="ts"></script>

مطمئن شوید که «نگاه به تفکیک مسئولیتها چیست؟» را بخوانید