首页 > 代码库 > Vue1.0学习总结(5)———vue-router的使用
Vue1.0学习总结(5)———vue-router的使用
vue-router的使用:
vue—>适合在单页面的应用,即适合SPA开发
vue-resource: 交互
vue-router: 路由
下载:因为这里用的是vue1.0,所以下载vue-router0.7.13版本,后面会继续讲解vue2.0
查看版本信息:bower info 包名
下载:bower install vue-router
下面讲解vue1.0中vue-router使用的步骤:
主页:/home
新闻:/news
html代码:
<li><a v-link="{path:‘/home‘}">主页</a></li> // 页面跳转链接,这里并不用href
<router-view></router-view> //显示内容
js代码:
<script type="text/javascript">
//1、准备一个根组件
var App=Vue.extend();
//2、准备Home、news的组件
var Home=Vue.extend({
template:‘<h3>我是主页</h3>‘
});
var News=Vue.extend({
template:‘<h3>我是新闻</h3>‘
});
//3、准备路由
var router=new VueRouter();
//4、关联
router.map({
‘home‘:{
component:Home
},
‘news‘:{
component:News
}
});
//5、启动路由
router.start(App,‘#box‘);
//6、跳转
router.redirect({
‘/‘:‘home‘
});
</script>
--------------------------------------------------------
路由嵌套(多个路由的使用)
html代码:
<div id="box">
<ul>
<li><a v-link="{path:‘/home‘}">主页</a></li>
<li><a v-link="{path:‘/news‘}">新闻</a></li>
</ul>
<div>
<router-view></router-view>
</div>
</div>
<template id="home">
<h3>我是主页</h3>
<ul>
<li><a v-link="{path:‘/home/login‘}">登录</a></li>
<li><a v-link="{path:‘/home/register‘}">注册</a></li>
</ul>
<div>
<router-view></router-view>
</div>
</template>
<template id="news">
<h3>我是新闻</h3>
</template>
js代码:
<script type="text/javascript">
window.onload=function(){
//1、准备一个根组件
var App=Vue.extend();
//2、准备Home、news的组件
var Home=Vue.extend({
template:‘#home‘
});
var News=Vue.extend({
template:‘#news‘
});
//3、准备路由
var router=new VueRouter();
//4、关联
router.map({
‘home‘:{
component:Home,
subRoutes:{
‘login‘:{
component:{
template:‘<strong>这是登录页面</strong>‘
}
},
‘register‘:{
component:{
template:‘<strong>这是注册页面</strong>‘
}
}
}
},
‘news‘:{
component:News
}
});
//5、启动路由
router.start(App,‘#box‘);
//6、跳转
router.redirect({
‘/‘:‘home‘
});
}
</script>
---------------------------------------------------------------------------------------
获取路由的其他信息:(比如在登录时,在路由上显示是谁登录)
{{$route.params |json}} //获取传过来的参数,如依靠后台数据库id来显示信息
{{$route.path}} //显示当前路径
{{$route.query |json}} //显示当前查询的信息
---------------------------------------------------------------------------------------
示例1:vue-router的综合应用
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title>Document</title>
6 <script src="http://www.mamicode.com/bower_components/vue/dist/vue.js"></script>
7 <script src="http://www.mamicode.com/bower_components/vue-router/dist/vue-router.js"></script>
8 <style>
9 .v-link-active{
10 font-size: 20px;
11 color: #f60;
12 }
13 </style>
14 </head>
15 <body>
16 <div id="box">
17 <ul>
18 <li>
19 <a v-link="{path:‘/home‘}">主页</a>
20 </li>
21 <li>
22 <a v-link="{path:‘/news‘}">新闻</a>
23 </li>
24 </ul>
25 <div>
26 <router-view></router-view>
27 </div>
28 </div>
29
30 <template id="home">
31 <h3>我是主页</h3>
32 <div>
33 <a v-link="{path:‘/home/login/yufan‘}">登录</a>
34 <a v-link="{path:‘/home/reg/yfstrive‘}">注册</a>
35 </div>
36 <div>
37 <router-view></router-view>
38 </div>
39 </template>
40 <template id="news">
41 <h3>我是新闻</h3>
42 <div>
43 <a v-link="{path:‘/news/detail/001‘}">新闻001</a>
44 <a v-link="{path:‘/news/detail/002‘}">新闻002</a>
45 </div>
46 <router-view></router-view>
47 </template>
48 <template id="detail">
49 {{$route.params | json}}
50 <br>
51 {{$route.path}}
52 <br>
53 {{$route.query | json}}
54 </template>
55 <script>
56 //1. 准备一个根组件
57 var App=Vue.extend();
58
59 //2. Home News组件都准备
60 var Home=Vue.extend({
61 template:‘#home‘
62 });
63
64 var News=Vue.extend({
65 template:‘#news‘
66 });
67
68 var Detail=Vue.extend({
69 template:‘#detail‘
70 });
71
72 //3. 准备路由
73 var router=new VueRouter();
74
75 //4. 关联
76 router.map({
77 ‘home‘:{
78 component:Home,
79 subRoutes:{
80 ‘login/:name‘:{
81 component:{
82 template:‘<strong>我是登录信息 {{$route.params | json}}</strong>‘
83 }
84 },
85 ‘reg‘:{
86 component:{
87 template:‘<strong>我是注册信息</strong>‘
88 }
89 }
90 }
91 },
92 ‘news‘:{
93 component:News,
94 subRoutes:{
95 ‘/detail/:id‘:{
96 component:Detail
97 }
98 }
99 }
100 });
101
102 //5. 启动路由
103 router.start(App,‘#box‘);
104
105 //6. 跳转
106 router.redirect({
107 ‘/‘:‘home‘
108 });
109 </script>
110 </body>
111 </html>
vue-loader的介绍:
webpack:模块加载器,一切东西都是模块,最后打包到一块
vue-loader:基于webpack,文件后缀名为.vue
.vue文件:放置的是vue组件代码,由三部分组成
<template>
html代码
</template>
<style>
css代码
</style>
<script>
js代码 (平时的代码,ES6),由于ES6浏览器支持不太好,
所以可能会用到babel-router来编译ES6
</script>
--------------------------------------------------
学习:手动配置webpack+vue-loader
构建webpack 的简单目录结构(详细请见vue-router文件夹)
|-index.html
|-main.js 文件的入口
|-App.vue vue文件
|-package.json 工程文件(项目依赖,名称,配置)——>可由npm init --yes 生成
|-webpack.config.js webpack的配置文件
webpack的准备工作:
cnpm install webpack --save-dev
cnpm install webpack-dev-server --save-dev
解析App.vue文件 -->需要变成正常的代码浏览器才可以解读,
这时需要用到vue-loader@8.5.4 //这里用的是vue1.0版本
cnpm install vue-loader@8.5.4 --save-dev
解析html,css,js代码
cnpm install vue-html-loader --save-dev
vue-html-loader,css-loader vue-style-loader,vue-hot-reload-api@1.3.2
babel所需要的插件:
babel-loader,babel-core,babel-plugin-transform-runtime,babel-preset-es2015,babel-runtime
下载最最核心的vue
cnpm install vue@1.0.28 --save
运行:npm run dev
-----------------------------------------------
ES6:模块化开发
导出模块:export default{}
导入模块:import 模块名 from 地址
-----------------------------------------------------
脚手架vue-cli版本介绍:
vue-cli --> vue的脚手架(帮你提供好了基本的项目结构)
webpack#1.0/2.0 -->不用Eslint检测
webpack-simple#1.0/2.0 --->没有代码检查和单元测试
------------------------------------------------------
webpack基本的使用流程
1.npm install vue-cli -g 安装vue命令环境
如何验证已经安装?---输入vue--version
2.生成项目模板
vue init <模板名> 本地的项目名称
3.进入到生成目录里面
cd xxx
npm install
4.npm run dev
改端口的---端口在config/index.js里面去改的
Vue1.0学习总结(5)———vue-router的使用