1.1.5 • Published 10 years ago

vue-router-tiny v1.1.5

Weekly downloads
2
License
The MIT License
Repository
github
Last release
10 years ago

#vue-router-tiny

##A router for Vue.js

重写vue的router,使用Director作为底层框架。

去除vue-router原生bug:

  • HTML5模式下,访问两次同样的地址,记录两次访问
  • 配置/example/:id ,/example/1 跳转到/example/2 时不会重新渲染。

支持函数处理式的url跳转

  • 支持url跳转进行函数处理
  • 对url跳转添加了before,on,leave事件

原生vue实例

  • 传递Vue实例参数,可以配合vuex使用。
  • url事件中,this.vue可访问root vue。

##Install ###npm install

npm install vue-router-tiny

###Download

git clone https://github.com/vvpvvp/vue-router

##option

  • history: 是否为html5模式
  • rootUrl: 为所有的url都添加root,全局添加前缀url
  • defaultUrl: 默认的url,当访问的地址没有route配置时,自动跳转。
  • before: 所有的url跳转之前执行,返回false则停止跳转。

##Use

main.html

<!DOCTYPE html>
<html>

<head>
    <title>demo</title>
</head>

<body>
    <div id="body">
        <router-view></router-view>
    </div>
</body>

</html>

js/router.js

import Router from '../plugin/vue-router';
import create from '../../components/create.vue';
import main from '../../components/main.vue';
import welcome from '../../components/welcome.vue';

var routes = {
    '/': {
        component: main,
        subRoutes: {
            '/create1/:id': {
                name: 'create1',
                component: create
            },
            '/create2/:id': {
                name: 'create2',
                before:function(){
                    console.log("welcome before");
                    // return false;//会让页面无法跳转/welcome
                },
                on:function(){
                    console.log("welcome on");
                },
                leave:function(){
                    console.log("welcome leave");
                },
                component: create,
                subRoutes:{
                    "/:title":function(param){
                        console.log(param.title);
                        console.log(param.id);
                    }
                }
            },
            '/welcome': {
                component: function(resolve){
                    require(["../../components/welcome.vue"],resolve);
                }
            },
            "/alert":function(){
                console.log("alert");
            },
            "/alert2":{
                on:function(){
                    $("#mate").addClass("show");
                },
                leave:function(){
                    $("#mate").removeClass("show");
                }
            }
        }
    }
};

let VueParam = {
    el: '#body'
};

Vue.use(Router);
var router = new Router({
    history:true,
    rootUrl:"/root",
    defaultUrl:"/root"
});


router.map(routes);
router.start(VueParam);

export default router;

注意:当配置了rootUrl时,无需将rootUrl添加至v-link中,包括调用go方法也无需添加。

components/menu.vue

<template>
<div class="menu">
	<ul class="menuList">
        <li><a v-link.literal="/welcome">welcome</a></li>
        <li><a v-link="{name:'create1',params:{id:b},query:{query:1}}">create1{{a}}</a></li>
        <li><a v-link="{name:'create1',params:{id:b},query:{query:1}}">create1{{b}}</a></li>
        <li><a v-link="{name:'create2',params:{id:a},query:{query:1}}">create2</a></li>
        <li><a v-link.literal="/alert">alert</a></li>
	</ul>
</div>
</template>

components/create.vue

<template>
<div>
	<button @click="go" class="button">welcome</button>
</div>
</template>
<script type="text/javascript">
import Router from '../js/router';
export default {
    data() {
        return {};
    },
    methods:{
    	go(){
            Router.go("/welcome");
    	}
    }
}
</script>

##Dependences

1.1.5

10 years ago

1.1.4

10 years ago

1.1.3

10 years ago

1.1.1

10 years ago

1.1.0

10 years ago

1.0.10

10 years ago

1.0.9

10 years ago

1.0.8

10 years ago

1.0.7

10 years ago

1.0.6

10 years ago

1.0.5

10 years ago

1.0.4

10 years ago

1.0.3

10 years ago

1.0.0

10 years ago