赞
踩
<router-view></router-view>
meta:{}
{
path: '/home',
component: Home,
meta: { show: true },
}
给一个参数“show”,返回真假,让v-show来接收这个boolean值,判断是否显示当前页面中的组件
为真显示,为假则不显示
//重定向,在项目跑起来的时候,访问/,立马让他定向到首页
{
path: '*',
redirect: '/home',
},
下面这个页面,按下回车后,会变成第二个页面的路径
v-model双向绑定收集
methods: {
//搜索按钮的回调
goSearch() {
//路由的跳转,采用的是编程式导航.
//路由传递参数
//第一种传递query参数
this.$router.push('/search/' + this.keyword)
}
正常接收param参数
this.$router.push(
'/search/' + this.keyword + '?k=' + this.keyword.toUpperCase()
)
<h1>params参数{{$route.params.keyword}}</h1>
<h1>query参数{{$route.query.k}}</h1>
this.$router.push(
`/search/${this.keyword}?k=${this.keyword.toUpperCase()}`
)
this.$router.push({
name: 'search',
params: { keyword: this.keyword },
query: { k: this.keyword.toUpperCase() },
})
{
path: '/search/:keyword?',
component: Search,
meta: { show: true },
name: 'search',
props: ($route) => {
return { keyword: $route.params.keyword, k: $route.query.k }
},
},
<template> <div>我是搜索页 <h1>params参数{{$route.params.keyword}}=============={{keyword}}</h1> <h1>query参数{{$route.query.k}} =============={{k}}</h1> </div> </template> <script> export default { name: '', props: ['keyword', 'k'], } </script> <style> </style>
this.$router.push({
name: 'search',
params: { keyword: this.keyword },
query: { k: this.keyword.toUpperCase() },
})
let originPush = VueRouter.prototype.push let originReplace = VueRouter.prototype.replace //重写push|replace VueRouter.prototype.push = function (location, resolve, reject) { if (resolve && reject) { originPush.call(this, location, resolve, reject) } else { originPush.call( this.addRoute, location, () => {}, () => {} ) } } VueRouter.prototype.replace = function (location, resolve, reject) { if (resolve && reject) { originReplace.call(this, location, resolve, reject) } else { originReplace.call( this.addRoute, location, () => {}, () => {} ) } }
let result = this.$router.push(
{ name: 'search', params: { keyword: this.keyword || undefined } },
() => {},
() => {}
)
console.log(result)
npm install --save axios
//对于axios进行二次封装 import axios from 'axios' //1:利用axios对象的方法create,去创建一个axios实例 //2:request就是axios,只不过稍微配置一下 const requests = axios.create({ //配置对象 //基础路径,发请求的时候,路径当中会出现api baseURL: '/api', //代表请求超时的时间5S timeout: 5000, }) //请求拦截器:在发请求之前,请求拦截器可以检测到,可以在请求发出去之前做一些事情 requests.interceptors.request.use((config) => { //config:配置对象,对象里面有一个属性很重要,headers请求头 return config }) //响应拦截器 requests.interceptors.response.use((res) => { //成功的回调函数:服务器相应数据回来以后,响应拦截器可以检测到,可以做一些事情 return res.data; },(error) => { //响应失败的回调函数 return Promise.reject(new Error('faile')); }); //对外暴露 export default axios
//当前这个模块:API进行统一管理
import requests from './request';
//三级联动接口
///api/product/getBaseCategoryList get 无参数
//发请求:axios发请求返回结果是Promise对象
export const reqCategoryList = ()=>{return requests({url:'/product/getBaseCategoryList',method:'get'})}
//代理跨域
proxy: {
'/api': {
target: 'http://39.98.123.211:8510/',
// pathRewrite: { '^/api': '' },
changeOrigin: true,
},
},
import Vue from 'vue'; import Vuex from 'vuex'; //需要使用插件一次 Vue.use(Vuex); //state:仓库存储数据的地方 const state = {}; //mutations:修改state的唯一手段 const mutations = {}; //action:处理action,可以书写自己的业务逻辑,也可以处理异步 const actions = {}; //getters:理解为计算属性,用于简化仓库数据,让组件获取仓库的数据更加方便 const getters = {}; //对外暴露Store类的一个实例 export default new Vuex.Store({ state, mutations, actions, getters })
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。