vue router 几种方式对比 (转载)
- <div id="app">
- <h1>Hello App!</h1>
- <p>
- <!-- 使用 router-link 组件来导航. -->
- <!-- 通过传入 `to` 属性指定链接. -->
- <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
- <router-link to="/foo">Go to Foo</router-link>
- <router-link to="/bar">Go to Bar</router-link>
- </p>
- <!-- 路由出口 -->
- <!-- 路由匹配到的组件将渲染在这里 -->
- <router-view></router-view>
- </div>
- <template id='foo'>
- <p>this is foo!</p>
- </template>
- <template id='bar'>
- <p>this is bar!</p>
- </template>
- // 1. 定义(路由)组件。
- // 可以从其他文件 import 进来
- const Foo = { template:'#foo' };
- const Bar = { template:'#bar' };
- // 2. 定义路由
- // 每个路由应该映射一个组件。 其中"component" 可以是
- // 通过 Vue.extend() 创建的组件构造器,
- // 或者,只是一个组件配置对象。
- const routes = [
- { path: '/foo', component: Foo },
- { path: '/bar', component: Bar }
- ];
- // 3. 创建 router 实例,然后传 `routes` 配置
- // 你还可以传别的配置参数, 不过先这么简单着吧。
- const router = new VueRouter({ routes:routes });
- // 4. 创建和挂载根实例。
- // 记得要通过 router 配置参数注入路由,
- // 从而让整个应用都有路由功能
- const app = new Vue({ router:router }).$mount('#app');
2)动态路由匹配:
- <div id="app">
- <h1>Hello App!</h1>
- <p>
- <router-link to="/user/foo/post/123">Go to Foo</router-link>
- <router-link to="/user/bar/post/456">Go to Bar</router-link>
- </p>
- <router-view></router-view>
- </div>
- <template id='user'>
- <p>User:{{ $route.params.id }},Post:{{$route.params.post_id}}</p>
- </template>
- // 1. 定义组件。
- const User = {
- template:'#user',
- watch:{
- '$route'(to,from){
- console.log('从'+from.params.id+'到'+to.params.id);
- }
- }
- };
- // 2. 创建路由实例 (可设置多段路径参数)
- const router = new VueRouter({
- routes:[
- { path:'/user/:id/post/:post_id',component:User }
- ]
- });
- //3. 创建和挂载根实例
- const app = new Vue({ router:router }).$mount('#app');
3)嵌套路由:
- <div id="app">
- <h1>Hello App!</h1>
- <p>
- <router-link to="/user/foo">Go to Foo</router-link>
- <router-link to="/user/foo/profile">Go to profile</router-link>
- <router-link to="/user/foo/posts">Go to posts</router-link>
- </p>
- <router-view></router-view>
- </div>
- <template id='user'>
- <div>
- <h2>User:{{ $route.params.id }}</h2>
- <router-view></router-view>
- </div>
- </template>
- <template id="userHome">
- <p>主页</p>
- </template>
- <template id="userProfile">
- <p>概况</p>
- </template>
- <template id="userPosts">
- <p>登录信息</p>
- </template>
- // 1. 定义组件。
- const User = {
- template:'#user'
- };
- const UserHome = {
- template:'#userHome'
- };
- const UserProfile = {
- template:'#userProfile'
- };
- const UserPosts = {
- template:'#userPosts'
- };
- // 2. 创建路由实例
- const router = new VueRouter({
- routes:[
- { path:'/user/:id', component:User,
- children:[
- // 当 /user/:id 匹配成功,
- // UserHome 会被渲染在 User 的 <router-view> 中
- { path: '', component: UserHome},
- // 当 /user/:id/profile 匹配成功,
- // UserProfile 会被渲染在 User 的 <router-view> 中
- { path:'profile', component:UserProfile },
- // 当 /user/:id/posts 匹配成功
- // UserPosts 会被渲染在 User 的 <router-view> 中
- { path: 'posts', component: UserPosts }
- ]
- }
- ]
- });
- //3. 创建和挂载根实例
- const app = new Vue({ router:router }).$mount('#app');
4)编程式路由:
- <div id="app">
- <h1>Hello App!</h1>
- <p>
- <router-link to="/user/foo">Go to Foo</router-link>
- </p>
- <router-view></router-view>
- </div>
- <template id='user'>
- <h2>User:{{ $route.params.id }}</h2>
- </template>
- <template id="register">
- <p>注册</p>
- </template>
- // 1. 定义组件。
- const User = {
- template:'#user'
- };
- const Register = {
- template:'#register'
- };
- // 2. 创建路由实例
- const router = new VueRouter({
- routes:[
- { path:'/user/:id', component:User },
- { path:'/register', component:Register }
- ]
- });
- //3. 创建和挂载根实例
- const app = new Vue({ router:router }).$mount('#app');
- //4.router.push(location)
- router.push({ path: 'register', query: { plan: 'private' }});
5)命名路由:
- <div id="app">
- <h1>Named Routes</h1>
- <p>Current route name: {{ $route.name }}</p>
- <ul>
- <li><router-link :to="{ name: 'home' }">home</router-link></li>
- <li><router-link :to="{ name: 'foo' }">foo</router-link></li>
- <li><router-link :to="{ name: 'bar', params: { id: 123 }}">bar</router-link></li>
- </ul>
- <router-view class="view"></router-view>
- </div>
- <template id='home'>
- <div>This is Home</div>
- </template>
- <template id='foo'>
- <div>This is Foo</div>
- </template>
- <template id='bar'>
- <div>This is Bar {{ $route.params.id }}</div>
- </template>
- const Home = { template: '#home' };
- const Foo = { template: '#foo' };
- const Bar = { template: '#bar' };
- const router = new VueRouter({
- routes: [
- { path: '/', name: 'home', component: Home },
- { path: '/foo', name: 'foo', component: Foo },
- { path: '/bar/:id', name: 'bar', component: Bar }
- ]
- });
- new Vue({ router:router }).$mount('#app');
6)命名视图:
- <div id="app">
- <router-link to="/">Go to Foo</router-link>
- <router-view class="view one"></router-view>
- <router-view class="view two" name="a"></router-view>
- <router-view class="view three" name="b"></router-view>
- </div>
- <template id='foo'>
- <div>This is Foo</div>
- </template>
- <template id='bar'>
- <div>This is Bar {{ $route.params.id }}</div>
- </template>
- <template id='baz'>
- <div>This is baz</div>
- </template>
- const Foo = { template: '#foo' };
- const Bar = { template: '#bar' };
- const Baz = { template: '#baz' };
- const router = new VueRouter({
- routes: [
- {
- path: '/',
- components: {
- default:Foo,
- a:Bar,
- b:Baz
- }
- }
- ]
- });
- new Vue({ router:router }).$mount('#app');
vue router 几种方式对比 (转载)的更多相关文章
- Linux上删除大量文件几种方式对比
目录 Linux上删除大量文件几种方式对比 1. rm删除:因为文件数量太多,rm无法删除(报错) 2. find查找删除:-exec 3. find查找删除:xargs 4. find调用-dele ...
- Android自动化测试中AccessibilityService获取控件信息(2)-三种方式对比
Android自动化测试中AccessibilityService获取控件信息(2)-三种方式对比 上一篇文章: Android自动化测试中AccessibilityService获取控件信息(1 ...
- vue.js 三种方式安装--npm安装
Vue.js是一个构建数据驱动的 web 界面的渐进式框架. Vue.js 的目标是通过简单的 API 实现响应的数据绑定和组合的视图组件.它不仅易上手,便于与第三方库或既有项目整合. ...
- 每日技术总结:vue router传参方式,js获取设备高度
今天貌似没什么问题,23333…… 1.vue router 路由传参的方式 应用情景:从分类页(category.vue)进入商品列表页(list.vue),需要传递商品分类id(catId),商品 ...
- Spark读写Hbase的二种方式对比
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 一.传统方式 这种方式就是常用的TableInputFormat和TableOutputForm ...
- ASP.NET页面之间传递值的几种方式(转载)
页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookie ...
- Windows上安装配置SSH教程(7)——几种方式对比
服务端:Windows XP 客户端:Windows 10 由于Cygwin也可以安装OpenSSH,所以客户端其实可以直接使用Cygwin安装OpenSSH,那么在Windows下使用SCP(安全拷 ...
- 在C#中,Json的序列化和反序列化的几种方式总结 转载
转载自 https://www.cnblogs.com/caofangsheng/p/5687994.html 谢谢 在这篇文章中,我们将会学到如何使用C#,来序列化对象成为Json格式的数据 ...
- vue.js 三种方式安装
Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件.它不仅易于上手 ...
随机推荐
- Nginx基于TCP的负载均衡的配置例子
原文:https://blog.csdn.net/bigtree_3721/article/details/72833955 nginx-1.9.0 已发布,该版本增加了 stream 模块用于一般的 ...
- flex“深拷贝”
以前在<ActionScript殿堂之路>上就看到过的“深拷贝”概念一直没有好好地在实战中用到过,但是最近在开发过程中,我发现我在编写VO数据对象时的一个老习惯很浪费我的编码时间,这个习惯 ...
- msfconsole 无法启动,解决办法
今天突然碰上kali msfconsole 无法启动,经过查找资料,现已成功解决该问题,现将解决办法整理如下: service postgresql start # 启动数据库服务 msfdb ini ...
- vba 批量生成条形图代码
Sub hong3()'' 宏3 宏d Dim a, b As Integer Dim str As String For a = 227 To 947 Step 15 b = a + 5 str = ...
- WPF DatePicker 添加水印效果
这个控件没有水印属性,依然使用依赖属性解决 public class DatePickerHelper { public static object GetWatermark(DependencyOb ...
- 用 Python 带你看《我不是药神》
我们都是小人物,我们都得了同一种病,我们都穷.——<我不是药神> 我不是程序员 我就是想求求你们,别动不动就拿篇10W+的文章来吓唬人好吗?说点有用的东西好吗?我们需要精神粮食不需要腐蚀精 ...
- 微信小程序日记(一)
一.基础知识(目录与配置) (1)标签 小程序的view相当于HTML的div标签一样,作占位 (2)每一个页面都需要在app.json里面注册,例如: { { "pages": ...
- excel 取前几位文字
1L.2L的分别用mid函数和left函数都没有问题. 问题是,如果用left函数,必须先确认,字符串中汉字必须排在左边第一个,接下来几个也必须是汉字:mid函数则是根据从左边第某个字符开始,一共取几 ...
- 《杜增强讲Unity之Tanks坦克大战》7-坦克血条
7 坦克血条 点击菜单GameObject->UI->Slider创建Slider 选中EventSystem,设置Horizontal Axis为HorzontalUI,Vertic ...
- 客户端传入数据的校验-RestController进阶
使用Hibernate Validator进行数据校验 Bean Validation注解(需要加入相关依赖,在SpringBoot中可以直接使用,SpringBoot会帮我们直接加入) @Null ...