安装vue

201 阅读2分钟

基础安装

> 安装淘宝 npm
> npm install -g cnpm --registry=https://registry.npm.taobao.org
> 安装 vue 3.0
> npm install -g @vue/cli
> 检查vue是否安装成功
> vue --version
>创建项目
> vue create name

vue-router

安装

npm install vue-router@3.5.2 --save

配置

第一步:导入路由对象,并且调用Vue.use(VueRouter)

第二步:创建路由实例,并且传入路由映射配置

第三步:在Vue实例中挂载创建的路由实例
src---->router---->index,js

//引入、配置路由的相关信息
import Vue from 'vue'
import VueRouter from 'vue-router'
//1.Vue.use安装插件
Vue.use(VueRouter)
const routes =[
//.....
]
//2.创建路由对象
const router = new VueRouter({
     //配置路由与组件的关系
     routes,

})
//3.将router对象导出
export default router



src ----->main.js

import Vue from 'vue'
import App from './App.vue'
//引入路由对象
import router from './router' 
Vue.config.productionTip = false

new Vue({
  //挂载到vue实例
  router,
  render: h => h(App),
}).$mount('#app')

使用

第一步:创建路由组件

第二步:配置路由映射:组件和路径映射关系

第三步:使用路由:通过< router-view >

src---->router---->index,js

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
//路由懒加载,加载页面路径
const HomePage = () => import( /* webpackChunkName: 'HomePage' */ '@/views/HomePage')
const ShopData = () => import( /* webpackChunkName: 'ShopData' */ '@/views/ShopData')
//配置路由数组对象
const routes =[{
    //redirect重定向
    path: '/', 
    redirect: '/HomePage',
},
{
    path: '/HomePage',
    name: 'HomePage',
    component: HomePage
},
{
    path: '/ShopData',
    name: 'ShopData',
    component: ShopData
},
]
const router = new VueRouter({
    mode:'hash',
    routes,
})
export default router

App.vue

<template>
  <div id="app">
    <!--  使用router-view组件进行路由管理 -->
    <router-view></router-view>
  </div>
</template>

<script>
export default {
  name: "App",
  components: {},
};
</script>

vuex

安装vuex

npm install vuex --save

创建store

在项目src目录下创建store目录,在store目录中创建index.js文件。写入一下内容:

import Vue from 'vue'
import Vuex from 'vuex'
 
// 挂在Vuex
Vue.use(Vuex)
 
// 创建Vuex对象
const store = new Vuex.Store({
    state:{
        // 存放的键值对就是所要管理的状态
        // 以key:value为例
        key : value,
    },
    mutations:{
        setKey(state, payload) {
            state.key = payload;
        }
    }
})
 
export default store

挂载store

在main.js中,添加代码:

 
import store from './store'
 
new Vue({
  el: '#app',
  router,
  store: store, //store:store 和 router一样,将我们创建的Vuex实例挂载到这个vue实例中
  components: { App },
  template: '<App/>'
})

在组件中使用

将需要使用的值写在computed中:

computed:{
    key() {
        return this.$store.state.key;
    }
}

如果在组件中使用v-model绑定computed中的值,需要在computed中定义set方法,如下:

computed:{
    key:{
        get(){
            return this.$store.state.key;
        },
        set(val){
            this.$store.commit('setKey', val);
        }
    }
}

在Vue组件中监听Vuex

在Vue组件中监听Vuex:

通过computed获取vuex中的状态值。

通过watch监听值的改变。

computed:{
    key(){
        return this.$store.state.key;
    }
},
watch:{
    key(val) {
        // 要做的操作
    }
}

axios

安装

npm install axios --save

在main.js中写入一下代码

import axios from 'axios'
Vue.prototype.axios = axios

调用

下面源码是直接使用axios来调用后台的接口示例:

this.axios({
  url: '',//请求地址
  method:'POST',//请求方法
  responseType: 'json',//返回值类型
  params: {
    arg1: "arg1"//请求携带参数
  }
}).then(res => {
  console.log(res)//请求成功
}).catch(error => {
  console.log(error);//请求失败
})


使用拦截器—添加 在src创建util目录,在里面创建request.js文件

import axios from 'axios';

const service = axios.create({
	baseURL: "http://127.0.0.1:8080/projectName",//请求地址前缀
	timeout: 0
});

// 请求拦截器
service.interceptors.request.use(
	config => {
   //添加请求头部参数
		config.headers['arg1'] = "arg1Value";
		return config;
	},
	error => {
		return Promise.reject(error);
	}
);

// 响应拦截器
service.interceptors.response.use(
	response => {
		//拦截到成功的数据
	  	return response.data;
	},
	error => {
		//拦截到失败的数据
		return Promise.reject(error);
	}
);

export default service;


在src创建api目录,在里面创建user.js文件

import request from '@/utils/request'; //引入request.js

export function getUserInfo(data) {
	return request({
		url: 'userController/getUserInfo',
		method: 'post',
		data: data
	});
}


页面调用拦截器

<template>
    <div>
        <h1>{{userInfo}}</h1>
    </div>
</template>

<script>
  	//引入api
	import { getUserInfo } from './api/user.js';
    export default {
      date(){
        return{
        	userInfo: {}
        }
      },
      mounted(){
        const par = {arg1: "arg1Value"};
        //调用api
        getUserInfo(par).then(re=>{
        	//请求成功 返回re
            this.userInfo = re.data;
        }).catch(err=>{
           //请求失败
        })
      }
   }
</script>