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 实现响应的数据绑定和组合的视图组件.它不仅易于上手 ...
随机推荐
- 2017-2018-3 20155337《信息安全系统设计基础》 pwd指令学习
2017-2018-3 20155337<信息安全系统设计基础> pwd指令学习 任务要求 学习pwd指令 研究pwd实现需要的系统调用(man -k:grep),写出伪代码 实现mypw ...
- 20155339 《信息安全系统设计》第十周课下作业-IPC
20155339 <信息安全系统设计>第十周课下作业-IPC 共享内存 共享内存是在多个进程之间共享内存区域的一种进程间的通信方式,由IPC为进程创建的一个特殊地址范围,它将出现在该进程的 ...
- pythonDjango开发-创建django程序
1.创建jgango程序 a.命令 cmd命令行下 进入到需要创建项目的路径下 django-admin startproject mysite 创建项目 cd mysite 进入项目文件夹 pyt ...
- 3832: [Poi2014]Rally
3832: [Poi2014]Rally 链接 分析: 首先可以考虑删除掉一个点后,计算最长路. 设$f[i]$表示从起点到i的最长路,$g[i]$表示从i出发到终点的最长路.那么经过一条边的最长路就 ...
- browser-sync 文件监听失败的解决方案
问题 为了方便实时预览前端开发过程中修改源码后的页面,我在全球最大的同性交友网Github中找到了一个非常实用的工具,browser-sync. 安装使用方式请自行到官网https://browser ...
- [webpack]--webpack 如何解析代码模块路径
前言 webpack是如何解析代码模块路径 webpack 中有一个很关键的模块 enhanced-resolve 就是处理依赖模块路径的解析的,这个模块可以说是 Node.js 那一套模块路径解析的 ...
- SSD固态硬盘的GC与Trim
操作系统:其实并没有删除数据: 事实上,它只是在硬盘前的索引区里标记这块文件占用的区域为无效的, 所以等该区域被擦除后,下次数据将要再次写入的时候,可以写入这块被标记的区域. 这也就是为啥那 些所谓的 ...
- vi/vim 常用命令 之 一图定天下!
直接上干活,一张图解决~
- wordpress4.4+版本自动生成一个768w像素缩略图的解决办法
4.4版本以后,wordpress增加了响应式图片的功能,目的是让图片能适应手机.平板等不同屏幕,但是我不想要这个功能,把缩略图大小全调成0,function.php里的相关函数全删除了, 上传图片还 ...
- vue组件--通讯录
简介 在移动端开发中,通讯录是个很常见的需求. 通讯录通常要实现以下功能 首字母导航 滚动到一定位置首字母固定 在线通讯录demo 布局 通讯录是典型的上下两栏布局,上面是header,下面是内容区, ...