> 文章列表 > Vue项目搭建流程

Vue项目搭建流程

Vue项目搭建流程

目录

1、通过命令创建

2、npm下载依赖

3、路由配置

4、配置组件

5、对axios进行二次封装

6、全局接口请求封装

7、配置跨域(反向代理)


1、通过命令创建

create vue 项目名

2、npm下载依赖

nmp i 依赖名@版本号
axios@1.2.1
echarts@5.1.2
element-ui@2.15.12
vue-router@3.6.5

现在vue.config.js中添加 lintOnSave: false, 关闭校验 防止影响后序操作

3、路由配置

先在src下创建views目录,然后创建vue页面,其中一个Main.vue作为父路由,将其他组件按照布局容器进行引入

注意创建的vue页面中必须使用一个div或者其他标签进行包裹,否则会报错

基础页面创建完成,开始搭建路由

在src下创建一个目录router,创建一个index.js文件,进行路由配置

//1、导入依赖
import Vue from "vue"
import VueRouter from "vue-router"
​
Vue.use(VueRouter)
​
//2、引入创建的路由组件
import Home from "../views/Home.vue"
import User from "../views/User.vue"
import Main from "../views/Main.vue"
import ExcelError from "../views/error/ExcelError.vue"
import Login from "../views/Login.vue"
​
//3、将组件与路由映射
const routes = [{path: '/',component: Main,//重定向name: "home",redirect: "/login",children: [    //子路由  就是在home路径下进行不跳转页面的 内容切换{//首页path: 'home',component: Home,},{path: 'user',component: User,},]}{path: '/login',component: Login,}
]
​
//4、创建router实例暴露
const router = new VueRouter({routes
})
​
//添加以下代码
const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push(location) {return originalPush.call(this, location).catch(err => err)
}
​
​
//将5、router暴露
export default router
​

路由创建完成,此时在main.js中进行全局挂载路由

import Vue from 'vue';
import App from './App.vue';
//重要 要引入vue和css样式
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
// import Cookie from 'js-cookie'
​
//引入router
import router from './router/index.js';
​
​
Vue.config.productionTip = false
​
Vue.use(ElementUI)
​
​
new Vue({//挂载路由router,render: h => h(App),
}).$mount('#app')
​

在app.vue中配置路由出口

然后在浏览器访问配置好的路由地址,成功显示页面

当访问组路由时,父路由仍然存在

4、配置组件

对于页面中固定不变的东西要采用组件进行封装,在components文件夹下创建对应的vue文件,作为组件,在指定的vue中进行引入

此时再访问项目,一个基本的后台框架实现

5、对axios进行二次封装

//对axios二次封装
import axios from 'axios'
import Cookie from 'js-cookie'
import router from '../router/index.js'
import ElementUI from 'element-ui';
​
const request = axios.create({//通用请求地址前缀baseURL:'http://localhost:8081/api',//请求的超时时间timeout: 10000, //统一传递的数据类型contentType: 'application/json',})
​
//添加请求拦截器
request.interceptors.request.use(function (config){//在请求之前做什么// 请求头携带sessionStorage里面的tokenconfig.headers.Authorization = Cookie.get('token')return config;},function(error){//对错误做点什么return Promise.reject(error);
});
​
​
//添加响应拦截器
request.interceptors.response.use(function (response){
​var code = response.data.code  //获取响应码//对响应数据做点什么if(code == 3003){//未登录 请先登录ElementUI.Message({message: '请先登录',type: 'warning'});router.push("/")}return response;},function (error){//对响应错误做点什么//捕获后端返回的520状态码 --- 当前token不合法//当返回438跳转到登录页面不允许登录console.log(error)//const dataCode = error.response.status// if(dataCode === 438){//  //清空token 跳转登录页//  Cookie.set("token","");//  router.push("/login")//      return null// }else if(dataCode == 1010){//  //多次请求封锁ip//  router.push("/error")// }return Promise.reject(error);
});
​
export default request

6、全局接口请求封装

在src下创建一个api文件夹,创建index.js文件,用来将对应的接口方法暴露使用

先创建对应业务的js文件

然后在index.js中引入暴露

最后在main.js中引入 并重新封装

此时在对应的请求方法中就可以通过 this.$api.login.方法 来发送接口请求

7、配置跨域(反向代理)

在vue.config.js中配置反向代理解决跨域问题

//配置反向代理// devServer的配置devServer: {// 自定义端口  前端port: 8082,// 自动打开浏览器open: true,// 用于配置反向代理proxy: {// 代理请求, 匹配所有以/apj开头的请求'/api': {// 目标服务器,所有以/api开头的请求接口代理到目标服务器target: 'http://localhost:8081',// 重写路径,此时用于匹配反向代理的/api可以替换为空pathRewrite: { '^/api': '' },// 如果代理到HTTPS服务器需要设置secure为true,默认为falsesecure: true,//允许跨域changeOrigin: true,}}},