建立一个 router.js 文件
引入
1
2
3
4
|
import vue from 'vue'
import vuerouter from 'vue-router'
import home from '../components/home/home.vue'
|
然后注册
1
2
3
4
5
6
7
8
9
10
11
|
vue.use(vuerouter);
const router = new vuerouter({
mode : 'history' ,
base: __dirname,
routes: [
{
path: historyurl + '/' ,
component: home,
name : '主页'
},
]}
|
最后暴露出云
export default router
在main.js 里面直接引入然后就可以用了
1
2
3
4
5
6
7
8
9
10
11
|
import router from './main/router.js'
const app = new vue({
router : router,
watch : {
'$route' (to,from,next){
//console.log(to) //路由监听
//console.log(from)
}
},
render : h => h(app)
}).$mount( '#app' );
|
别的 js 文件如果要调用 router 方法,直接像 main.js 一样引入直接用就可以了
补充知识:vue.cli3设置单独路由页面全屏切换
不是全屏的时候
是全屏的时候
首先思想:获取当前路由页面的节点,对的节点操作定位,脱离文档流,top:0,;left:0;
1.用ref获取当前路由页面最大的div,也就是template包的第一个div,也可以是其他的
1
2
3
4
5
|
<template>
<div ref= "index" > //ref标识
<title :refdome= 'refdome' ></title>
</div>
</template>
|
2.如果要把节点从父组件传到子组件的话,在data里面定义一个值,然后在mounted赋值,在传给子组件(如果没有子组件直接跳过2,直接看3)
父组件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<template>
<div ref= "index" >
<title :refdome= 'refdome' ></title> //这里把data的值转给子组件title
</div>
</template>
<script>
import title from '../components/title'
export default {
components:{
title
},
data(){
return {
refdome: null
}
},
mounted(){
this .refdome = this .$refs.index //在这里给data赋值,记得要在mounted赋值
}
}
|
子组件props接收值
1
2
3
4
5
|
<script>
export default {
props: [ 'refdome' ],
}
</script>
|
3.然后在切换全屏的按钮上绑定@click事件,在点击当时操作节点,在data里面设置一个screen值为1,为了来回切换
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
// 点击切换全屏
handlefullscreen() {
if ( this .screen % 2 == 0) {
this .refdome.style.position = 'static'
this .screen++
} else {
this .refdome.style.width = '100%'
this .refdome.style.height = '100%'
this .refdome.style.position = 'absolute'
this .refdome.style.top = '0'
this .refdome.style.left = '0'
this .refdome.style.zindex = '10'
this .refdome.style.background = '#fff'
this .screen++
}
},
|
以上这篇vue 实现把路由单独分离出来就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/qq_25186543/article/details/80008671