【Vue_实现共用/公共组件实现】vue.js公共组件
【Vue_实现共用/公共组件实现】vue.js公共组件【Vue_实现共用/公共组件实现】vue.js公共组件【Vue_实现共用/公共组件实现】vue.js公共组件
·
问题?我们需要让其每个页面的共有部分不再重复编写,怎么降低代码的冗余度?
例如:导航栏的共用组件怎么实现?
解决
App.vue中写好公共组件
2



**
**
11
122
@@@
@@### 555
5555666
实现
<template>
<div id="app">
<!-- 头部,导航栏 -->
<!--
v-if="$route.meta.keepAlive"
keep−alive是Vue内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染。
route.meta则可以选择让需要的页面才展示。
-->
<el-container v-if="$route.meta.keepAlive">
<el-header>
<keep-alive>
<!-- 导航栏 -->
<header-nav></header-nav>
</keep-alive>
</el-header>
<el-container>
<el-main>
<!-- Body main -->
<router-view></router-view>
</el-main>
</el-container>
<!-- footer -->
<el-container>
<el-footer>
<keep-alive>
<foot></foot>
</keep-alive>
</el-footer>
</el-container>
</el-container>
<!-- 登录页 -->
<router-view v-if="!$route.meta.keepAlive"></router-view>
</div>
</template>
js
<script>
// 每个页面的导航栏
import Nav from "./components/Nav.vue"
import Footer from "./components/Footer.vue"
export default {
name: "app",
components: {
headerNav: Nav,
Foot:Footer,
},
data() {
return {
}
},
}
</script>
<style>
</style>
main.js
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
// import { Button, Select,Form ,FormItem,Input,Carousel,CarouselItem} from 'element-ui';
import ElementUI from 'element-ui';
import "element-ui/lib/theme-chalk/index.css"
Vue.use(ElementUI);
// Vue.use(CarouselItem)
// Vue.use(Carousel)
// Vue.use(Button)
// Vue.use(Form)
// Vue.use(Input)
// Vue.use(FormItem)
// Vue.use(Select)
Vue.config.productionTip = false
new Vue({
router,
store,
render: h => h(App),
template:"<App></App>"
}).$mount('#app')
router---index.js(router.js)
import Vue from 'vue'
import VueRouter from 'vue-router'
import Login from '../views/login/Login.vue'
import Register from '../views/register/Register.vue'
import Home from '../views/home/Home.vue'
import News from '../views/news/News.vue'
import Vuexx from '../components/Vuexx.vue'
Vue.use(VueRouter)
const routes = [
// 登录,注册
{
// 重定向到登录页面
path: '/',
redirect: '/login'
},
{
path: '/login',
name: 'login',
component: Login,
meta: {
title: 'Login',
keepAlive: false
}
},
{
path: '/register',
name: 'register',
component: Register,
meta: {
title: 'Register',
keepAlive: false
}
},
// 首页 home index
{
path: '/home',
name: 'home',
component: Home,
meta: {
title: 'Home',
keepAlive: true
}
},
// 新闻页面组件
{
path: '/news',
name: 'news',
component: News,
meta: {
title: 'News',
keepAlive: true
}
},
// vuex
{
path: '/vuexx',
name: 'vuexx',
component: Vuexx,
meta: {
title: 'Vuexx',
keepAlive: true
}
},
]
const router = new VueRouter({
routes
})
export default router
实现



参考
更多推荐
所有评论(0)