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="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里面去改的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM