【发布时间】:2021-09-30 01:03:15
【问题描述】:
在我的应用程序中,我有多个布局。它们被分隔在不同的文件夹中。我想为布局使用不同的 SCSS 文件。然而,无论使用什么布局(基于路由器元上的道具),所有 SCSS 文件都会被导入。这会弄乱布局,因为样式混合在一起。有没有办法只导入与使用布局相关的 SCSS?
App.vue
<template>
<component :is="layout" />
</template>
<script>
import DefaultLayout from '@/layouts/default/DefaultLayout';
import PrimaryLayout from '@/layouts/primary/PrimaryLayout';
import SecondaryLayout from '@/layouts/secondary/SecondaryLayout';
export default {
components: {
DefaultLayout,
PrimaryLayout,
SecondaryLayout
},
data() {
return {
layout: null
}
},
watch: {
$route(to, from) {
document.title = to.meta.title;
this.layout = to.meta.layout || 'DefaultLayout';
}
}
};
</script>
src/layouts/primary/PrimaryLayout.vue
<template>
Html content here
<router-view />
</template>
<script>
export default {
name: 'PrimaryLayout'
}
</script>
<style lang="scss">
@import '@/assets/layouts/primary/scss/main.scss';
</style>
src/layouts/secondary/SecondaryLayout.vue
<template>
Different html content here
<router-view />
</template>
<script>
export default {
name: 'SecondaryLayout'
}
</script>
<style lang="scss">
@import '@/assets/layouts/secondary/scss/main.scss';
</style>
src/router/index.js
import { createRouter, createWebHistory } from 'vue-router';
const routes = [
{
path: '/login',
name: 'Login',
component: () => import('@/pages/auth/Login.vue'),
meta: {
layout: 'PrimaryLayout',
title: 'Auth Page'
}
},
{
path: '/admin',
name: 'Admin',
component: () => import('@/pages/admin/Admin.vue'),
children: [
{
path: '',
name: 'Dashboard',
component: () => import('@/pages/admin/Dashboard.vue'),
meta: {
layout: 'SecondaryLayout',
title: 'Admin | Home'
},
},
... other pages ...
]
}
]
谁能帮帮我?
【问题讨论】:
-
我试过了,但是css不会影响子组件。
标签: javascript css vue.js sass