Vue cli之路由router
一、安装路由
Vue-router用于提供给vue项目在开发中用于绑定url和组件页面的关系的核心插件。
默认情况下,vue没有提供路由的功能,所以我们使用vue-router
,并需要在项目根目录。
npm install vue-router
安装了vue-router插件以后,我们必须要对路由进行初始化并且还要绑定组件与url地址之间的路由映射关系。
首页,我们需要在一个单独的目录router下创建路由文件index.js,实例化路由对象并绑定组件和url地址的关系。
二、基本使用
在src路径下创建router/index.js,代码:
import VueRouter from "vue-router";
import Vue from "vue"; Vue.use(VueRouter); import Home from "../views/Home";
import HelloWorld from "../components/HelloWorld";
import Forecast from "../components/Forecast"; export default new VueRouter({
mode: "history", // hash 表示以地址栏的哈希值作为路径,history以历史对象的url作为路径
routes:[ // 路由列表,里面的每一个成员都是一个url地址和组件的映射关系
{
path: "/",
component: Home,
},
{
path: "/hi",
component: HelloWorld,
},
{
path: "/index",
component: Forecast,
}
]
});
main.js,代码:
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue' // 没有声明路径,则默认从node_module中导包过来
import App from './App' // 如果由声明了路径,则表示从当前文件出发根据路径关系进行导报
import axios from "axios";
import router from "./router/index"; // 导入路由对象
// 初始化axios对象
Vue.prototype.$http = axios.create();
Vue.config.productionTip = false /* eslint-disable no-new */
new Vue({
el: '#app',
router,
components: { App },
template: '<App/>'
})
App.vue,代码:
<template>
<div id="app">
<!-- <HelloWorld msg="Welcome to Your Vue.js App"/>-->
<!-- <Home></Home>-->
<router-view></router-view>
</div>
</template> <script>
// import HelloWorld from './components/HelloWorld.vue'
// import Home from './views/Home' export default {
name: 'App',
components: {
// HelloWorld
// Home
}
}
</script> <style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
三、页面跳转
vue-router提供了2种写法让我们实现页面跳转。
1、通过router-link来跳转
App.vue,代码:
<template>
<div id="app">
<p><a href="/">Home</a></p>
<p><a href="/hi">HI</a></p>
<p><a href="/index">Index</a></p> <hr>
<p>
<router-link to="/">Home</router-link>
</p>
<p>
<router-link to="/hi">HI</router-link>
</p>
<p>
<router-link :to="url">Index</router-link>
</p> <hr>
<router-view></router-view>
</div>
</template> <script>
export default {
name: 'App', // 组件名
data() {
return {
url: "/index",
}
},
components: { // 子组件 }
}
</script> <style> </style>
注意:一般在开发中不会在App.vue编写具体的代码,我们这里仅仅是为了方便学习演示。
2、通过this.$router来跳转
App.vue,代码:
<template>
<div id="app"> <a href="" @click.prevent="goto">Index</a>
<hr>
<router-view></router-view>
</div>
</template> <script>
export default {
name: 'App', // 组件名
data(){
return {
url: "/index",
user: "root",
}
},
methods:{
goto(){
// 页面跳转
if(this.user === "root"){
this.$router.push("/index"); // ajax页面跳转到指定的路由地址
// this.$router.back(); // 跳转返回上一页
// this.$router.go(-1); // -1相当于back,后退一页
// this.$router.go(1); // 1表示forward,前进一页
}
}
},
components: { // 子组件 }
}
</script> <style> </style>
四、传递参数
vue-router提供了2种用于开发中传递参数的方式给我们使用。
1、路径参数
url地址的路径作为变量,传递参数到下一个页面组件中进行获取使用。
router/index.js,代码:
import VueRouter from "vue-router";
import Vue from "vue"; Vue.use(VueRouter); import Home from "../views/Home";
import HelloWorld from "../components/HelloWorld";
import Forecast from "../components/Forecast";
import Article from "../components/Article"; export default new VueRouter({
mode: "history", // hash 表示以地址栏的哈希值作为路径,history以历史对象的url作为路径
routes:[ // 路由列表,里面的每一个成员都是一个url地址和组件的映射关系
{
path: "/",
component: Home,
},
{
path: "/hi",
component: HelloWorld,
},
{
path: "/index",
component: Forecast,
},
{
path: "/article/:year/:month",
component: Article,
}, ]
});
Article.vue,代码:
<template>
<div>
查询{{year}}年{{month}}的系列文章
</div>
</template> <script>
export default {
name: "Article",
data(){
return {
year: 0,
month: 0,
}
},
created() {
this.year = this.$route.params.year;
this.month = this.$route.params.month;
}
}
</script> <style scoped> </style>
2、查询参数
url地址的查询字符串作为参数,在下一个页面组件中进行获取使用。
App.vue:
<template>
<div id="app">
<a href="" @click.prevent="goto">Index</a>
<hr>
<router-view></router-view>
</div>
</template> <script>
export default {
name: 'App', // 组件名
data(){
return {
url: "/index",
user: "root",
}
},
methods:{
goto(){
// 页面跳转
if(this.user === "root"){
this.$router.push("/index?city=南京"); // ajax页面跳转到指定的路由地址
}
}
},
components: { // 子组件 }
}
</script> <style> </style>
Forecast.vue,代码:
<template>
<div>
<input type="text" v-model="city">
<button @click="get_weather">获取天气</button>
<table v-if="weather_list.length>1">
<tr>
<th>日期</th>
<th>天气</th>
<th>温度</th>
<th>风向</th>
</tr>
<tr v-for="weather in weather_list">
<td>{{weather.date}}</td>
<td>{{weather.type}}</td>
<td>{{weather.low}}~{{weather.high}}</td>
<td>{{weather.fengxiang}}{{weather.fengli|format}}</td>
</tr>
</table>
</div>
</template> <script>
export default {
name: "Index",
data(){
return {
city: "北京",
weather_list:[],
}
},
filters:{
format(content){
return content.replaceAll("<![CDATA[","").replaceAll("]]>","");
}
}, created(){
// 任意一个组件中都可以获取查询参数
console.log(this.$route.query); // 获取所有的查询参数
if(this.$route.query.city){
this.city = this.$route.query.city
} },
methods:{
get_weather(){
// 发送http请求获取天气
this.$http.get("http://wthrcdn.etouch.cn/weather_mini",{
params:{
city: this.city,
}
}).then(response=>{
console.log(response.data.data.forecast);
this.weather_list = response.data.data.forecast;
}).catch(error=>{
console.log(error);
})
}
}
}
</script> <style scoped>
table{
width: 800px;
border-collapse: collapse;
}
td,th{
border: 1px solid red;
}
</style>
Vue cli之路由router的更多相关文章
- vue工程化与路由router
一.介绍 vue.js 是 目前 最火的前端框架,vue.js 兼具 angular.js 和 react.js 的优点,并剔除它们的缺点.并且提供了很多的周边配套工具 如vue-router ...
- vue教程(五)--路由router介绍
一.html页面中如何使用 1.引入 vue-router.js 2.安装插件 Vue.use(VueRouter) 3.创建路由对象 var router = new VueRouter({ // ...
- vue初级学习--路由router的编写(resolve的使用)
一.导语 最近在用vue仿写淘宝的商品详情页面以及加入购物车页面,若是成功了,分享给大家~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 二.正文 我先用控制台创建了vue项目demo(如 ...
- [转]Vue CLI 3搭建vue+vuex 最全分析
原文地址:https://my.oschina.net/wangnian/blog/2051369 一.介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统.有三个组件: CLI:@ ...
- Vue CLI 3搭建vue+vuex 最全分析
一.介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统.有三个组件: CLI:@vue/cli 全局安装的 npm 包,提供了终端里的vue命令(如:vue create .vue ...
- vue项目创建步骤 和 路由router知识点
菜单快捷导航: vue项目创建 vue路由router知识点(路径参数.查询参数.命名路由.嵌套路由.命名视图.hash/history模式) 1.创建一个vue项目步骤 (windows环境下).创 ...
- react router @4 和 vue路由 详解(六)vue怎么通过路由传参?
完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 8.vue怎么通过路由传参? a.通配符传参数 //在定义路由的时候 { path: ' ...
- react router @4 和 vue路由 详解(四)vue如何在路由里面定义一个子路由
完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 6.vue如何在路由里面定义一个子路由? 给父路由加一个 children:[] 参考我 ...
- Vue学习笔记-Vue.js-2.X 学习(七)===>脚手架Vue-CLI(路由Router)
脚手架Vue-CLI(路由Router) 一 按装(通过新创建脚手架按装),如果在原来的脚手架上按装直接进图型化界面vue ui的插件按装. 二 使用(上面按装下面步骤自动会生成) 第一步:导入路由对 ...
- vue cli 3
介绍 Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统 通过 @vue/cli 搭建交互式的项目脚手架. 通过 @vue/cli + @vue/cli-service-global 快 ...
随机推荐
- Counter 1000
From a 1000 Hz clock, derive a 1 Hz signal, called OneHertz, that could be used to drive an Enable s ...
- 重新整理.net core 计1400篇[十] (.net core 中的依赖注入的服务的生命周期)
前言 首先我们知道一个东西,那就是生命周期和timelife 的配置有关. 正文 首先看下IServiceProvider的数据结构: 其数据结构是一颗树: 我是一个抽象画家,红色部分是IServic ...
- CC1TransformedMap链学习
跟着看了白日梦组长的视频,记录一下调试学习过程 CC1链学习 TransformedMap链 ObjectInputStream.readObject() AnnotationInvocationHa ...
- 编译 OpenCV 的 Python 依赖
这一次编译 OpenCV 的 Python 依赖为了方便运行我们使用 Docker 进行编译,环境准备如下: 系统依赖:Ubuntu 18.04 Python 版本:3.6,Ubuntu 18.04 ...
- javascript:eval()的用法
eval() 是 JavaScript 中的一个全局函数,它可以计算或执行参数.如果参数是表达式,则 eval() 计算表达式:如果参数是一个或多个 JavaScript 语句,则 eval() 执行 ...
- 使用JSZip实现在浏览器中操作文件与文件夹
1. 引言 浏览器中如何创建文件夹.写入文件呢? 答曰:可以借助JSZip这个库来实现在浏览器内存中创建文件与文件夹,最后只需下载这个.zip文件,就是最终得结果 类似的使用场景如下: 在线下载很多图 ...
- CSP 考前集训 10/15
\({\color{Green} \mathrm{A\ -\ 染色}}\) 观察此题,我们可以发现正序维护不好求,会有红点被覆盖等情况. 考虑倒着求,每一次如果操作是红那么久看区间内有多少已经染色的点 ...
- OPLG:新一代云原生可观测最佳实践
简介:OPLG 体系拥有成熟且富有活力的开源社区生态,同时也经过了大量企业生产环境的实践检验,是当下建设新一代云原生统一可观测平台的热门选择.但是,OPLG 只是提供了一个技术体系,如何灵活运用,解 ...
- 独家深度 | 一文看懂 ClickHouse vs Elasticsearch:谁更胜一筹?
简介: 本文的主旨在于通过彻底剖析ClickHouse和Elasticsearch的内核架构,从原理上讲明白两者的优劣之处,同时会附上一份覆盖多场景的测试报告给读者作为参考. 作者:阿里云数据库OLA ...
- C# 二进制数组与结构体的互转
本文将告诉大家在 dotnet 里面的二进制基础处理知识,如何在 C# 里面将结构体数组和二进制数组进行相互转换的简单方法 尽管本文属于基础入门的知识,但是在阅读之前还请自行了解 C# 里面的结构体内 ...