如何避免在vue页面中强制引用app.vue公共组件?

更新于
2026-10-02 02:32:13
1阅读来源:SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计855个文字,预计阅读时间需要4分钟。

如何避免在vue页面中强制引用app.vue公共组件?

在Vue单页面应用中,通常将公共组件放在`app.vue`中。如果你希望某些页面不包含这些公共组件,例如登录页面,你可以通过以下方法实现:

1. 在`app.vue`中定义这些公共组件,并使用``来包裹你的路由组件。

2.在需要排除公共组件的页面(如登录页面),单独定义一个组件,例如`LoginLayout.vue`。

3.在`LoginLayout.vue`中,仅引入所需的背景色和登录框,而不包含其他公共组件。

4.在路由配置中,为登录页面指定使用`LoginLayout.vue`作为布局组件。

例如:

vue

vue

.login-background { /* 设置背景色和登录框样式 */}

javascript// router/index.jsimport Vue from 'vue';import Router from 'vue-router';import App from '../app.vue';import LoginLayout from '../components/LoginLayout.vue';import Login from '../views/Login.vue';

Vue.use(Router);

export default new Router({ mode: 'history', routes: [ { path: '/login', component: LoginLayout, children: [ { path: '', name: 'login', component: Login } ] }, // 其他路由... ]});

这样,登录页面就只会包含背景色和登录框,而不会显示其他公共组件。

Vue 单页面应用 把公共组件放在 app.vue 但是我希望某个页面没有这些公共组件怎么办(比如登陆页面)每个页面都有 导航栏 但是我希望 登陆页面只有一个背景色和一个登陆框 没有导航栏 那应该怎样设置呢?

vue中文文档:点击进入

在根组件中:在导航栏使用v-show判断当前路由是否是不需要的组件来完成页面:

如何避免在vue页面中强制引用app.vue公共组件?

<template> <div id="app"> <home-header v-show="!(path ==='/') "></home-header> <home-aside v-show="!(path ==='/')"></home-aside> <router-view/> </div> </template> <script> import HomeHeader from './components/header/Header' import HomeAside from './components/aside/Aside' export default { name: 'App', data(){ return{ path:'' } }, components: { HomeHeader, HomeAside, }, // 判断路由 mounted() { this.path = this.$route.path; // console.log(this.$route.path) }, watch:{ $route(to,from){ this.path = to.path } } } </script> <style> </style>

在mounted(){}中使用this.path=当前页面的路由然后使用watch监测变化

补充知识:在app.vue里面注册的组件,然后想在首页不显示,需要怎样控制呢?vue切换路由的时候,在哪儿监控路由变化呢?

需求是这样的:

除了首页之外,每个页面上都要显示一个。

那么问题来了,怎样控制首页返回导航栏的显示与隐藏呢。

思路:

在组件里面,监听路由的变化,然后在监听里面进行判断即可。

代码:

<template> <div id="back" v-if="isShowBack"> <div class="back_box" @click="toBack()"> <span class="left_arrow"> <img src="../../../static/images/icon_arrow_bottom_left.png" /> </span> </div> </div> </template> <script> var that; export default { data() { return { msg: '', isShowBack:false } }, methods: { toBack() { console.log('点击了返回') this.$router.go(-1); } }, watch:{ '$route':function(){ that = this; console.log('watch里面',that.$route.name); if(that.$route.name == 'HomeNew'){ that.isShowBack = false; }else{ that.isShowBack = true; } } } } </script> <style scoped="scoped"> .back_box { width: 100%; height: 30px; background: #f1f1f1; } .left_arrow { width: 22px; display: inline-block; transform: rotate(90deg); margin-top: 4px; margin-left: 4px; } .left_arrow img { width: 100%; } </style>

------完。

以上这篇解决vue项目中某一页面不想引用公共组件app.vue的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持自由互联。

本文共计855个文字,预计阅读时间需要4分钟。

如何避免在vue页面中强制引用app.vue公共组件?

在Vue单页面应用中,通常将公共组件放在`app.vue`中。如果你希望某些页面不包含这些公共组件,例如登录页面,你可以通过以下方法实现:

1. 在`app.vue`中定义这些公共组件,并使用``来包裹你的路由组件。

2.在需要排除公共组件的页面(如登录页面),单独定义一个组件,例如`LoginLayout.vue`。

3.在`LoginLayout.vue`中,仅引入所需的背景色和登录框,而不包含其他公共组件。

4.在路由配置中,为登录页面指定使用`LoginLayout.vue`作为布局组件。

例如:

vue

vue

.login-background { /* 设置背景色和登录框样式 */}

javascript// router/index.jsimport Vue from 'vue';import Router from 'vue-router';import App from '../app.vue';import LoginLayout from '../components/LoginLayout.vue';import Login from '../views/Login.vue';

Vue.use(Router);

export default new Router({ mode: 'history', routes: [ { path: '/login', component: LoginLayout, children: [ { path: '', name: 'login', component: Login } ] }, // 其他路由... ]});

这样,登录页面就只会包含背景色和登录框,而不会显示其他公共组件。

Vue 单页面应用 把公共组件放在 app.vue 但是我希望某个页面没有这些公共组件怎么办(比如登陆页面)每个页面都有 导航栏 但是我希望 登陆页面只有一个背景色和一个登陆框 没有导航栏 那应该怎样设置呢?

vue中文文档:点击进入

在根组件中:在导航栏使用v-show判断当前路由是否是不需要的组件来完成页面:

如何避免在vue页面中强制引用app.vue公共组件?

<template> <div id="app"> <home-header v-show="!(path ==='/') "></home-header> <home-aside v-show="!(path ==='/')"></home-aside> <router-view/> </div> </template> <script> import HomeHeader from './components/header/Header' import HomeAside from './components/aside/Aside' export default { name: 'App', data(){ return{ path:'' } }, components: { HomeHeader, HomeAside, }, // 判断路由 mounted() { this.path = this.$route.path; // console.log(this.$route.path) }, watch:{ $route(to,from){ this.path = to.path } } } </script> <style> </style>

在mounted(){}中使用this.path=当前页面的路由然后使用watch监测变化

补充知识:在app.vue里面注册的组件,然后想在首页不显示,需要怎样控制呢?vue切换路由的时候,在哪儿监控路由变化呢?

需求是这样的:

除了首页之外,每个页面上都要显示一个。

那么问题来了,怎样控制首页返回导航栏的显示与隐藏呢。

思路:

在组件里面,监听路由的变化,然后在监听里面进行判断即可。

代码:

<template> <div id="back" v-if="isShowBack"> <div class="back_box" @click="toBack()"> <span class="left_arrow"> <img src="../../../static/images/icon_arrow_bottom_left.png" /> </span> </div> </div> </template> <script> var that; export default { data() { return { msg: '', isShowBack:false } }, methods: { toBack() { console.log('点击了返回') this.$router.go(-1); } }, watch:{ '$route':function(){ that = this; console.log('watch里面',that.$route.name); if(that.$route.name == 'HomeNew'){ that.isShowBack = false; }else{ that.isShowBack = true; } } } } </script> <style scoped="scoped"> .back_box { width: 100%; height: 30px; background: #f1f1f1; } .left_arrow { width: 22px; display: inline-block; transform: rotate(90deg); margin-top: 4px; margin-left: 4px; } .left_arrow img { width: 100%; } </style>

------完。

以上这篇解决vue项目中某一页面不想引用公共组件app.vue的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持自由互联。