vue 七 vue基础

// import Vue from 'vue'
// import Router from 'vue-router'
// import HelloWorld from '@/components/HelloWorld'

// Vue.use(Router)

// export default new Router({
//   routes: [
//     {
//       path: '/',
//       name: 'HelloWorld',
//       component: HelloWorld
//     }
//   ]
// })
import Vue from 'vue'
import VueRouter from 'vue-router'
// 配路由
Vue.use(VueRouter)
 const first = { template: '<div>first内容</div>' }
 const second = { template: '<div>second内容</div>' }
 const home = { template: '<div>home内容</div>' }

 const router = new VueRouter({
     //可以去掉路由中的#
     mode: 'history',
     //当前路径
     base: __dirname,
     // 要加 s,没有r了  一下固定格式,记住就好
     routes: [
     {path:'/', component:home},
     {path:'/first', component:first},
     {path:'/second', component:second},
     ]
 })
 // 写模板
new Vue({
    router,
    template:`
        <div id='r'>
            <h1>导航</h1>
            <url>
                <li><router-link to='/'>/</router-link></li>
                <li><router-link to='/first'>first</router-link></li>
                <li><router-link to='/second'>second</router-link></li>
            </ul>
            // 指定显示到哪
            <router-view class='xxx'></router-link>
        </div>
        `
}).$mount('#app') //把模板安装到index.html中
配路由
// import Vue from 'vue'
// import Router from 'vue-router'
// import HelloWorld from '@/components/HelloWorld'

// Vue.use(Router)

// export default new Router({
//   routes: [
//     {
//       path: '/',
//       name: 'HelloWorld',
//       component: HelloWorld
//     }
//   ]
// })
import Vue from 'vue'
import VueRouter from 'vue-router'
// 配路由
Vue.use(VueRouter)

// 定义模板
 const first = { template: '<div>first内容</div>' }
 const second = { template: '<div>second内容</div>' }
 const home = { template: '<div>home内容</div>' }

 // 定义子模版
 const firstFirst = { template: '<div>firstFirst内容</div>' }
 const firstSecond = { template: '<div>firstSecond内容</div>' }

 // 定义子模板视图显示
 const asdf = {
     template:`
             <div class='sadfj'>
             <h2>组件</h2>
             <router-view class='sadfj'></router-view>
             </div>`
     }

// 定义路由
 const router = new VueRouter({
     //可以去掉路由中的#
     mode: 'history',
     //当前路径
     base: __dirname,
     // 要加 s,没有r了  一下固定格式,记住就好
     routes: [
         {path:'/', component:home},
         // 调用子视图的模板
         {path:'/first', component:asdf,
             // 数组形式
             children:[
                 {path:'/', component:first},
                 {path:'first', component:firstFirst},
                 {path:'second', component:firstSecond},
             ]
         },
         {path:'/second', component:second},
         ]
    })
 // 写模板视图和子模板视图
new Vue({
    router,
    template:`
        <div id='r'>
            <h1>导航</h1>
            <ol>
                <li><router-link to='/'>/</router-link></li>
                <li><router-link to='/first'>first</router-link></li>
                <ol>
                    <li><router-link to='/first/first'>first</router-link></li>
                    <li><router-link to='/first/second'>second</router-link></li>
                </ol>
                <li><router-link to='/second'>second</router-link></li>
            </ol>
            // 指定显示到哪
            <router-view class='sadfj'></router-view>
        </div>
        `
}).$mount('#app') //把模板安装到index.html中
子路由
// import Vue from 'vue'
// import Router from 'vue-router'
// import HelloWorld from '@/components/HelloWorld'

// Vue.use(Router)

// export default new Router({
//   routes: [
//     {
//       path: '/',
//       name: 'HelloWorld',
//       component: HelloWorld
//     }
//   ]
// })
// 本节讲如何通过路由传递参数到模板里
import Vue from 'vue'
import VueRouter from 'vue-router'
// 配路由
Vue.use(VueRouter)

// 定义模板
 const first = { template: '<div>first内容</div>' }
 const second = { template: '<div>second内容</div>' }
 const home = { template: '<div>home内容</div>' }

 // router路由   route路线
 const firstFirst = { template: '<div>firstFirst内容{{ $route.params.id }}</div>' }
 const firstSecond = { template: '<div>firstSecond内容{{ $route.params.id }}</div>' }

 // 定义子模板视图显示
 const asdf = {
     template:`
             <div class='sadfj'>
             <h2>组件</h2>
             <router-view class='sadfj'></router-view>
             </div>`
     }

// 定义路由
 const router = new VueRouter({
     //可以去掉路由中的#
     mode: 'history',
     //当前路径
     base: __dirname,
     // 在路径后加name
     routes: [
         {path:'/', name:'home', component:home},
         {path:'/first', component:asdf,
             // 如果有子菜单父级就不用写name,只给子级写就可以
             children:[
                 {path:'/', name:'home_first', component:first},
                 {path:'first', name:'home_first_First', component:firstFirst},
                 {path:'second', name:'home_first_Second', component:firstSecond},
             ]
         },
         {path:'/second', name:'home_second', component:second},
         ]
    })
new Vue({
    router,
    template:`
        <div id='r'>
            <h1>导航</h1>
            // 模板形式获取name
            <p>{{ $route.name }}</p>
            <ol>
                <li><router-link to='/'>/</router-link></li>
                <li><router-link to='/first'>first</router-link></li>
                <ol>
                    // vue.js 中如果绑定参数传值都是json的格式,这里绑定to且值换成json
                    <li><router-link :to='{name:"home_first_First",params:{id:123}}'>first</router-link></li>
                    <li><router-link :to='{name:"home_first_Second",params:{id:321}}'>second</router-link></li>
                </ol>
                <li><router-link to='/second'>second</router-link></li>
            </ol>
            // 指定显示到哪
            <router-view class='sadfj'></router-view>
        </div>
        `
}).$mount('#app') //把模板安装到index.html中
本节讲如何通过路由传递参数到模板里
// import Vue from 'vue'
// import Router from 'vue-router'
// import HelloWorld from '@/components/HelloWorld'

// Vue.use(Router)

// export default new Router({
//   routes: [
//     {
//       path: '/',
//       name: 'HelloWorld',
//       component: HelloWorld
//     }
//   ]
// })
// 把模板做成组件
import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

 const first = { template: '<div>first内容</div>' }
 const second = { template: '<div>second内容</div>' }
 const home = { template: '<div>home内容</div>' }
 const hehe = { template: '<div>home内容</div>' }

 const router = new VueRouter({
     mode: 'history',
     base: __dirname,
     routes: [
         // component后面是json的格式
         // component后面如果东西多用复数
         {path:'/', components:{
             default:home,
             left: first,
             right: second,
         }},
         {path:'/first', components:{
             default:hehe,
             left: first,
             right: second,
         }},
         ]
    })
new Vue({
    router,
    template:`
        <div id='r'>
            <h1>导航</h1>
            <p>{{ $route.name }}</p>
            <ol>
                <li><router-link to='/'>/</router-link></li>
                <li><router-link to='/first'>first</router-link></li>
                
            </ol>
            // 定义三个模板
            <router-view class='sadfj'></router-view>
            <router-view class='sadfj' name='left' style='float:left;width:50%;background-color:#ff6600;height:300px'></router-view>
            <router-view class='sadfj' name='right' style='float:left;width:50%;background-color:#fff600;height:300px'></router-view>
        </div>
        `
}).$mount('#app') //把模板安装到index.html中
把模板做成组件
// import Vue from 'vue'
// import Router from 'vue-router'
// import HelloWorld from '@/components/HelloWorld'

// Vue.use(Router)

// export default new Router({
//   routes: [
//     {
//       path: '/',
//       name: 'HelloWorld',
//       component: HelloWorld
//     }
//   ]
// })
// url的传值 
import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)
// 声明一个路由表
 const router = new VueRouter({
     mode: 'history',
     base: __dirname,
     // 数组
     routes:[
         {path:'/'},
         {path:'/params/:aaa/:bbb'},
         // 正则
         {path:'/parame-regex/:id(\\d+'}]
 })
// 模板
 new Vue({
     router,
     // 要有个根元素
     template:`
         <div>
             <h1>good mornging</h1>
             <ul>
                 <li><router-link to='/'>/</router-link></li>
                 <li><router-link to='/params/111/222'>/params/111/222</router-link></li>
                 <li><router-link to='/parame-regex/222'>/parame-regex/222</router-link></li>
             </ul>
             <p>Show</p>
             模板显示过来,pre显示源码
             <pre><code>
             {{ $route.params.aaa }}
             {{ JSON.stringify($route,null,2)}}
             </code></pre>
         </div>`
 }).$mount('#app')
url的传值
// import Vue from 'vue'
// import Router from 'vue-router'
// import HelloWorld from '@/components/HelloWorld'

// Vue.use(Router)

// export default new Router({
//   routes: [
//     {
//       path: '/',
//       name: 'HelloWorld',
//       component: HelloWorld
//     }
//   ]
// })
// url的传值 
import Vue from 'vue'
import VueRouter from 'vue-router'
// 如果用到params就用name---用于路由值不确定的情况下
// 如果用query就用路径---用于路由值确定的情况下
Vue.use(VueRouter)

const users = {
     template:`
             <div>
             <h2>Users</h2>
             <router-view></router-view>
             </div>`
     }

const user = {
    // query的传值
     template:`
             <div>
                 {{$route.params.username}}
                 {{$route.query.aaa}}
             </div>`
     }

const home = {template:`<div><h2>hmoe</h2></div>`}
const router = new VueRouter({
     mode: 'history',
     base: __dirname,
     routes:[
         {path:'/', name:'home', component:home},
         {path:'/users', component:users,
             children:[
                 {path:':username', name:'user', component:user},
             ]
         }
         ]
    })

new Vue({
    router,
    template:`
        <div id='r'>
            <h1>导航</h1>
            <ol>
                <li><router-link to='/'>/</router-link></li>
                <li><router-link to='/first'>first</router-link></li>
                <ol>
                    <li>
                    <router-link :to="{path:'/users/wos',query:{aaa:'bbb12345'}}">
                        wos
                    </router-link>
                    </li>
                    
                </ol>
               <router-link tag='li' to='about'>
                    link
                    <router-link>
            </ol>
            <router-view></router-view>
        </div>
        `
}).$mount('#app') //把模板安装到index.html中
query的使用
格式:MVVM  M---model  V---view  VM---template
参数传值需要绑定,使用上一级东西需要绑定,寻找跟自己一样的旧不用绑定了
// 本节讲如何通过路由传递参数到模板里
import Vue from 'vue'
import VueRouter from 'vue-router'
// 配路由
Vue.use(VueRouter)

// 定义模板
 const first = { template: '<div>first内容</div>' }
 const second = { template: '<div>second内容</div>' }
 const home = { template: '<div>home内容</div>' }

 // router路由   route路线
 const firstFirst = { template: '<div>firstFirst内容{{ $route.params.id }}</div>' }
 const firstSecond = { template: '<div>firstSecond内容{{ $route.params.id }}</div>' }

 // 定义子模板视图显示
 const asdf = {
     template:`
             <div class='sadfj'>
             <h2>组件</h2>
             <router-view class='sadfj'></router-view>
             </div>`
     }

// 定义路由
 const router = new VueRouter({
     //可以去掉路由中的#
     mode: 'history',
     //当前路径
     base: __dirname,
     routes: [
         {path:'/', name:'home', component:home},
         {path:'/first', component:asdf,
             // 父级必须要用绝对路径,子级可以用相对路径
             children:[
                 {path:'/', name:'home_first', component:first},
                 {path:'first', name:'home_first_First', component:firstFirst},
                 {path:'second', name:'home_first_Second', component:firstSecond},
                 // redirect路由重定性
                 {path:'third', redirect:'first'},
             ]
         },
         {path:'/second', name:'home_second', component:second},
         {path:'/aaa/:id', component:firstFirst},
         {path:'/bbb/:id', redirect:'/aaa/:id'},
         {
            path:'/ccc/:id',
            // redirect后可以以函数的方式
            redirect:xxxx => {
                const { hash,params,query } = xxxx;
                if (params.id == '789'){
                    return '/'
                }
            }
         }
         ]
    })
new Vue({
    router,
    template:`
        <div id='r'>
            <h1>导航</h1>
            // 模板形式获取name
            <p>{{ $route.name }}</p>
            <ol>
                <li><router-link to='/'>/</router-link></li>
                <li><router-link to='/first'>first</router-link></li>
                <ol>
                    // vue.js 中如果绑定参数传值都是json的格式,这里绑定to且值换成json
                    <li><router-link :to='{name:"home_first_First",params:{id:123}}'>first</router-link></li>
                    <li><router-link :to='{name:"home_first_Second",params:{id:321}}'>second</router-link></li>
                    <li><router-link to='third'>third</router-link></li>
                </ol>
                <li><router-link to='/second'>second</router-link></li>
                <li><router-link to='/aaa/123'>aaa</router-link></li>
                <li><router-link to='/bbb/456'>bbb</router-link></li>
                <li><router-link to='/ccc/789'>ccc</router-link></li>
            </ol>
            // 指定显示到哪
            <router-view class='sadfj'></router-view>
        </div>
        `
}).$mount('#app') //把模板安装到index.html中
路由的重定向
// 本节讲相对于模板的别名
import Vue from 'vue'
import VueRouter from 'vue-router'
// 配路由
Vue.use(VueRouter)

// 定义模板
 const first = { template: '<div>first内容</div>' }
 const second = { template: '<div>second内容</div>' }
 const home = { template: '<div>home内容</div>' }

 // router路由   route路线
 const firstFirst = { template: '<div>firstFirst内容{{ $route.params.id }}</div>' }
 const firstSecond = { template: '<div>firstSecond内容{{ $route.params.id }}</div>' }

 // 定义子模板视图显示
 const asdf = {
     template:`
             <div class='sadfj'>
             <h2>组件</h2>
             <router-view class='sadfj'></router-view>
             </div>`
     }

// 定义路由
 const router = new VueRouter({
     //可以去掉路由中的#
     mode: 'history',
     //当前路径
     base: __dirname,
     routes: [
         {path:'/', name:'home', component:home},
         {path:'/first', component:asdf,
             // 父级必须要用绝对路径,子级可以用相对路径
             children:[
                 {path:'/', name:'home_first', component:first},
                 {path:'first', name:'home_first_First', component:firstFirst,alias:'/gogo'},
                 {path:'second', name:'home_first_Second', component:firstSecond},
                 // redirect路由重定性
                 {path:'third', redirect:'first'},
             ]
         },
         {path:'/second', name:'home_second', component:second},
         {path:'/aaa/:id', component:firstFirst},
         {path:'/bbb/:id', redirect:'/aaa/:id'},
         {
            path:'/ccc/:id',
            // redirect后可以以函数的方式
            redirect:xxxx => {
                const { hash,params,query } = xxxx;
                if (params.id == '789'){
                    return '/'
                }
            }
         }
         ]
    })
new Vue({
    router,
    template:`
        <div id='r'>
            <h1>导航</h1>
            // 模板形式获取name
            <p>{{ $route.name }}</p>
            <ol>
                <li><router-link to='/'>/</router-link></li>
                <li><router-link to='/first'>first</router-link></li>
                <ol>
                    // vue.js 中如果绑定参数传值都是json的格式,这里绑定to且值换成json
                    <li><router-link :to='{name:"home_first_First",params:{id:123}}'>first</router-link></li>
                    <li><router-link :to='{name:"home_first_Second",params:{id:321}}'>second</router-link></li>
                    <li><router-link to='third'>third</router-link></li>
                </ol>
                <li><router-link to='/second'>second</router-link></li>
                <li><router-link to='/aaa/123'>aaa</router-link></li>
                <li><router-link to='/bbb/456'>bbb</router-link></li>
                <li><router-link to='/ccc/789'>ccc</router-link></li>
                <li><router-link to='/gogo'>gogo</router-link></li>
            </ol>
            // 指定显示到哪
            <router-view class='sadfj'></router-view>
        </div>
        `
}).$mount('#app') //把模板安装到index.h
// 本节讲相对于模板的别名
import Vue from 'vue'
import VueRouter from 'vue-router'
// 配路由
Vue.use(VueRouter)

// 定义模板
 const first = { template: '<div>first内容</div>' }
 const second = { template: '<div>second内容</div>' }
 const home = { template: '<div>home内容</div>' }

 // router路由   route路线
 const firstFirst = { template: '<div>firstFirst内容{{ $route.params.id }}</div>' }
 const firstSecond = { template: '<div>firstSecond内容{{ $route.params.id }}</div>' }

 // 定义子模板视图显示
 const asdf = {
     template:`
             <div class='sadfj'>
             <h2>组件</h2>
             <router-view class='sadfj'></router-view>
             </div>`
     }

// 定义路由
 const router = new VueRouter({
     //可以去掉路由中的#
     mode: 'history',
     //当前路径
     base: __dirname,
     routes: [
         {path:'/', name:'home', component:home},
         {path:'/first', component:asdf,
             // 父级必须要用绝对路径,子级可以用相对路径
             children:[
                 {path:'/', name:'home_first', component:first},
                 // 起别名也可以以数组的形式来起多个名字 ['/goo','/haha']
                 {path:'first', name:'home_first_First', component:firstFirst,alias:'/gogo'},
                 {path:'second', name:'home_first_Second', component:firstSecond},
                 // redirect路由重定性
                 {path:'third', redirect:'first'},
             ]
         },
         {path:'/second', name:'home_second', component:second},
         {path:'/aaa/:id', component:firstFirst},
         {path:'/bbb/:id', redirect:'/aaa/:id'},
         {
            path:'/ccc/:id',
            // redirect后可以以函数的方式
            redirect:xxxx => {
                const { hash,params,query } = xxxx;
                if (params.id == '789'){
                    return '/'
                }
            }
         }
         ]
    })
new Vue({
    router,
    template:`
        <div id='r'>
            <h1>导航</h1>
            // 模板形式获取name
            <p>{{ $route.name }}</p>
            <ol>
                <li><router-link to='/'>/</router-link></li>
                <li><router-link to='/first'>first</router-link></li>
                <ol>
                    // vue.js 中如果绑定参数传值都是json的格式,这里绑定to且值换成json
                    <li><router-link :to='{name:"home_first_First",params:{id:123}}'>first</router-link></li>
                    <li><router-link :to='{name:"home_first_Second",params:{id:321}}'>second</router-link></li>
                    <li><router-link to='third'>third</router-link></li>
                </ol>
                <li><router-link to='/second'>second</router-link></li>
                <li><router-link to='/aaa/123'>aaa</router-link></li>
                <li><router-link to='/bbb/456'>bbb</router-link></li>
                <li><router-link to='/ccc/789'>ccc</router-link></li>
                <li><router-link to='/gogo'>gogo</router-link></li>
            </ol>
            // 指定显示到哪
            <router-view class='sadfj'></router-view>
        </div>
        `
}).$mount('#app') //把模板安装到index.html中
alias起别名

 

posted @ 2018-05-25 22:56  liang哥哥  阅读(160)  评论(0)    收藏  举报