您的位置:首页 > 产品设计 > UI/UE

Vue1.0学习总结(5)———vue-router的使用

2017-06-28 15:18 1016 查看
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="bower_components/vue/dist/vue.js"></script>
7     <script src="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里面去改的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: