官網: https://router.vuejs.org/zh/api/#router-linkcss
一、安裝vue-routerhtml
bower info vue-router # 查看當前vue-router版本前端
cnpm install vue-route -S # 安裝vue-routervue
安裝後在:C:\Users\tom\node_modules\vue-router\dist 路徑下會下載四個文件node
二、使用Vue.js開發SPA(Single Page Application)單頁面應用webpack
1) mode:'history', //更改模式, url就不會出現 "#" 號了git
2) linkActiveClass:'active' //更新活動連接的class類名github
3) {path:'*', redirect:'/home'} //路由重定向web
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>路由基本用法</title> <style> /* .router-link-active{ font-size:20px; color:#ff7300; text-decoration:none; } */ .active{ font-size:20px; color:#ff7300; text-decoration:none; } </style> <script src="js/vue.js"></script> <script src="js/vue-router.js"></script> </head> <body> <div id="itany"> <div> <!-- 使用router-link組件來定義導航,to屬性指定連接url --> <router-link to="/home">主頁</router-link> <router-link to="/news">新聞</router-link> </div> <div> <!-- router-view用來顯示路由內容 --> <router-view></router-view> </div> </div> <script> //1.定義組件 var Home={ template:'<h3>我是主頁</h3>' }; var News={ template:'<h3>我是新聞</h3>' }; //2.配置路由 const routes=[ {path:'/home',component:Home}, {path:'/news',component:News}, {path:'*',redirect:'/home'} //重定向 ]; //3.建立路由實例 const router=new VueRouter({ routes, //簡寫,至關於routes:routes mode:'history', //更改模式, url就不會出現 "#" 號了 linkActiveClass:'active' //更新活動連接的class類名 }); //4.建立根實例並將路由掛載到Vue實例上 new Vue({ el:'#itany', router //注入路由 }); </script> </body> </html>
一、路由傳參數的兩種方法vue-router
<router-link to="/user/login?name=tom&pwd=123" tag="li">用戶登錄</router-link>
<router-link to="/user/regist/alice/456" tag="li">用戶註冊</router-link>
二、獲取路由傳遞的參數
var Login={ template:'<h4>用戶登錄。。。獲取參數:{{$route.query}},{{$route.path}}</h4>' }; var Regist={ template:'<h4>用戶註冊。。。獲取參數:{{$route.params}},{{$route.path}}</h4>' };
1) {{$route.query}}: { "name": "tom", "pwd": "123" }
{{$route.path}}: /user/login
2) {{$route.params}}: { "username": "alice", "password": "456" }
{{$route.path}} : /user/regist/alice/456
三、添加路由和替換路由
注:添加路由和替換路由的區別是----替換路由不會顯示歷史
push(){
router.push({path:'home'}); //添加路由,切換路由
},
replace(){
router.replace({path:'user'}); //替換路由,沒有歷史記錄
}
四、切換路由動畫效果
<transition enter-active-class="animated bounceInLeft" leave-active-class="animated bounceOutRight"> <router-view></router-view> </transition>
一、.vue文件
1).vue文件,稱爲單文件組件,是Vue.js自定義的一種文件格式,一個.vue文件就是一個單獨的組件,在文件內封裝了組件相關的代碼:html、css、js
2).vue文件由三部分組成:<template>、<style>、<script>
<template> html </template> <style> css </style> <script> js </script>
二、vue-loader
1)瀏覽器自己並不認爲.vue文件,因此必須對.vue文件進行加載解析,此時須要vue-loader
2)相似的loader還有許多,如:html-loader、css-loader、style-loader、babel-loader等
3)須要注意的是vue-loader是基於webpack的
三、webpack
1)webpack是一個前端資源模板化加載器和打包工具,它可以把各類資源都做爲模塊來使用和處理
2)實際上,webpack是經過不一樣的loader將這些資源加載後打包,而後輸出打包後文件
3)簡單來講,webpack就是一個模塊加載器,全部資源均可以做爲模塊來加載,最後打包輸出
4)[官網](http://webpack.github.io/)
webpack版本:v1.x v2.x
webpack有一個核心配置文件:webpack.config.js,必須放在項目根目錄下
一、項目目錄結構
C:. │ .babelrc # 咱們要使用ES6語法因此要配置babel │ App.vue # vue文件 │ index.html │ main.js # 入口文件 │ package.json # 工程文件(執行命令建立):npm init --yes │ webpack.config.js # webpack配置文件 │ └─components # 這個地方是放組件的目錄 User.vue
二、安裝相關模板
# 生成依賴 cnpm install vue -S # 開發依賴 cnpm install webpack -D # webpack就是一個模塊加載器,識別.vue文件 cnpm install webpack-dev-server -D # webpack本身啓動服務的一個服務器 # 加載各類模塊的loader cnpm install vue-loader -D cnpm install vue-html-loader -D cnpm install css-loader -D cnpm install vue-style-loader -D cnpm install file-loader -D # 項目中使用的字體、字庫加載 cnpm install babel-loader -D cnpm install babel-core -D cnpm install babel-preset-env -D # 根據配置的運行環境自動啓用須要的babel插件 cnpm install vue-template-compiler -D # 預編譯模板 合併:cnpm install -D webpack webpack-dev-server vue-loader vue-html-loader css-loader vue-style-loader file-loader babel-loader babel-core babel-preset-env vue-template-compiler
三、main.js
1. 使用ES6語法引入模板
2. 使用render函數渲染組件
/** * 使用ES6語法引入模板: main.js */ import Vue from 'vue' import App from './App.vue' new Vue({ el:'#app', render:function(h){ //使用render函數渲染組件 return h(App); } });
四、編寫webpack.config.js
1. 配置入口文件
2. 配置入口文件輸出位置
3. 配置模塊加載器
module.exports={ //一、配置入口文件 entry:'./main.js', //二、配置入口文件輸出位置 output:{ path:__dirname, //項目根路徑 filename:'build.js' }, //三、配置模塊加載器 module:{ rules:[ { test:/\.vue$/, //全部以.vue結尾的文件都由vue-loader加載 loader:'vue-loader' }, { test:/\.js$/, //全部以.js結尾的文件都由babel-loader加載,除了node_modules之外 loader:'babel-loader', exclude:/node_modules/ } ] } };
五、編寫.babelrc
1. 預設值加載文件
{ "presets":[ ["env",{"module":false}] ] }
六、編寫package.json
1. 修改package.json中測試腳本變成運行腳本
"scripts": {
"dev":"webpack-dev-server --open --hot --port 8800"
},
2. 參數的意思
webpack-dev-server 啓動一個server
--open 打開一個瀏覽器
--hot 修改文件後熱加載
--port 8800 監聽端口號
{ "name": "webpack-demo", "version": "1.0.0", "description": "", "main": "main.js", "scripts": { "dev":"webpack-dev-server --open --hot --port 8800" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "vue": "^2.3.4" }, "devDependencies": { "babel-core": "^6.25.0", "babel-loader": "^7.1.1", "babel-preset-env": "^1.5.2", "css-loader": "^0.28.4", "file-loader": "^0.11.2", "vue-html-loader": "^1.2.4", "vue-loader": "^13.0.0", "vue-style-loader": "^3.0.1", "vue-template-compiler": "^2.3.4", "webpack": "^3.0.0", "webpack-dev-server": "^2.5.0" } }
七、其餘文件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div id="app"></div> <script src="build.js"></script> </body> </html>
<template> <div id="itany"> <h1>welcome</h1> <h2 @click="change">{{name}}</h2> <User></User> </div> </template> <script> //導入模塊 import User from './components/User.vue' // console.log(111); export default { data(){ return { name:'tom' } }, methods:{ change(){ this.name='湯姆'; } }, components:{ User } } </script> <style> body{ background-color:#ccc; } </style>
<template> <div class="user"> <h2>用戶列表</h2> <ul> <li v-for="value in users">{{value}}</li> </ul> </div> </template> <script> export default { data(){ return { users:['tom','jack','mike','alice'] } } } </script> <style scoped> /* scoped表示該樣式只在當前組件中有效 */ h2{ color:red; } </style>
八、啓動程序
npm run dev
九、效果圖