Vue项目搭建流程

news2025/1/14 1:08:17

目录

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里面的token
    config.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,默认为false
            secure: true,
            //允许跨域
            changeOrigin: true,
          }
        }
      },

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/435844.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

56 openEuler搭建Mariadb数据库服务器-安装、运行和卸载

文章目录 56 openEuler搭建Mariadb数据库服务器-安装、运行和卸载56.1 安装56.2 运行56.3 卸载 56 openEuler搭建Mariadb数据库服务器-安装、运行和卸载 56.1 安装 配置本地yum源,详细信息请参考《openEuler 22.03-LTS 搭建repo服务器》。 清除缓存。 # dnf clean…

【SpringBoot】1、SpringBoot整合JWT实现Token验证

这里写目录标题 1.单点登录1.1 单系统登录1.1.1 单系统登录流程(使用Session实现单系统登录) 1.2 多系统(单点)登录1.2.1 单点登录实现方案1.2.1.1 Session跨域1.2.1.2 Spring Session共享 1.3 Token机制1.3.1 传统身份认证1.3.2 基于Token的身份认证 1.4 JWT机制1.4.1 JWT数据…

Redis集群部署详解

文章目录 集群环境集群搭建测试集群故障转移集群扩容集群缩容 集群环境 集群介绍 1.什么是集群 所谓的集群,就是通过增加服务器的数量,提供相同的服务,从而让服务器达到一个稳定、高效的状态。 2.使用redis集群的必要性 单个redis存在不稳定…

9.6 数组的指针和指向数组的指针变量 - 3

9.6 数组的指针和指向数组的指针变量 - 3 一.回顾二维数组和多维数组的概念二.指向多维数组的指针和指针变量探究1.a:二维数组名,也是整个二维数组的首地址。我们可以认为是第0行的首地址是10002.a1 , a2 分别代表第一行首地址和第二行首地址。3.这表示a[0],a[1],a[…

Mapbox-gl.js v2.13.0 扩展支持4326,4490坐标系

mapbox-gl.js新版本中,支持多种projection 显示效果也不错,根据tiles grid可以看到,还是web_mercator的格网,基于图片做了一定的拉伸形变,想要加载4326的切片格网,依然无法实现。 后来在网上搜索加载4326切…

【JavaWeb】后端(Maven+SpringBoot+HTTP+Tomcat)

目录 一、Maven1.什么是Maven?2.Maven的作用?3.介绍4.安装5.IDEA集成Maven6.IDEA创建Maven项目7.IDEA导入Maven项目8.依赖配置9.依赖传递10.依赖范围11.生命周期 二、SpringBoot1.Spring2.SpringBoot3.SpringBootWeb快速入门 二、HTTP1.HTTP-概述2.HTTP-请求协议3.HTTP-响应协…

【转行互联网】转行互联网必看答疑

课程 追忆寻梦-转行互联网必备知识 https://edu.csdn.net/course/detail/31180 2023年,迟来的编程私教服务 https://bbs.csdn.net/topics/613231237 优先 必读文章 初学者,打算改行学编程,怎么学习java?求指教。https://bb…

如何抓住IT行业最后的红利?网络安全为什么是风口行业?

前言 “没有网络安全就没有国家安全”。当前,网络安全已被提升到国家战略的高度,成为影响国家安全、社会稳定至关重要的因素之一。 网络安全行业特点 1、就业薪资非常高,涨薪快 2021年猎聘网发布网络安全行业就业薪资行业最高人均33.77万…

C语言指针及数组的运行原理

C语言指针及数组的运行原理 文章目录 C语言指针及数组的运行原理一. 指针(汇编角度)二. 数组(汇编角度)2.1 数组的定义2.2 指针与数组结合 三. 指令解释参考3.1 nop3.2 leave3.3 ret 这里涉及汇编,虚拟机这边采用的是6…

如何在 Google Cloud 上部署 EMQX 企业版

Google Cloud 的 IoT Core 产品将于 2023 年 8 月 16 日停止服务,随着这一日期的临近,许多用户正在为他们现有的物联网业务寻找新的解决方案,而 EMQX 企业版是实现这一目标的理想选择。 EMQX 企业版是一款大规模分布式 MQTT 消息服务平台&am…

【设计模式】深入浅出--外观模式

文章目录 前言一、外观模式介绍二、案例场景三、外观模式优缺点四、外观模式应用场景总结 前言 不知道大家有没有比较过自己泡茶和去茶馆喝茶的区别,如果是自己泡茶需要自行准备茶叶、茶具和开水,而去茶馆喝茶,最简单的方式就是跟茶馆服务员…

高效的配置文件读取工具支持properties和yaml

JefConfig 前言 日常工作中不知道到大家有没有遇到以下几种情况: 1、在程序启动时需要加载配置文件,但是发现程序只能从固定位置读取配置文件。 2、程序在集成了spring框架后,想从配置文件中获取某个配置,但是发现当前程序并未交…

并查集原理及代码实现

并查集 首先要明确的是并查集是森林。由多棵树组成。 并查集 (英文:Disjoint-set data structure,直译为不交集数据结构),用于处理一些 不交集 (Disjoint sets,一系列没有重复元素的集合&…

android framework-SystemServer进程

SystemServer进程信息 一、SystemServer整体时序图 涉及源码路径: android-10.0.0_r41\frameworks\base\core\java\com\android\internal\os\ZygoteInit.java android-10.0.0_r41\frameworks\base\core\java\com\android\internal\os\Zygote.java android-10.0.0_r4…

JAVAWeb07-WEB 开发通信协议-HTTP 协议-关联篇

1. 概述 1.1 官方文档及示例说明 1.1.1 请求头 1.1.2 响应头 1.1.3 HTTP 响应状态码 HTTP状态码 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头&a…

leetcode 1372. Longest ZigZag Path in a Binary Tree(二叉树中最长的之字形路径)

找出最长的之字型路径长度。 可以选择从二叉树的任意一个节点出发。 路径长度为路径中的节点数-1. 思路: 符合DFS的特征。 方向是左右交替的,可以定义0,1两个方向。 如果当前方向是左,下一方向就是右,反之亦然。每次…

FinClip|小程序云开发的那点事儿

在开发一个小程序时,除了考虑界面功能逻辑外,还需要后端的数据支持,开发者需要提前考虑服务器、存储和数据库等相关需求的支持能力,此外还可能需要花费时间精力在部署应用、和依赖服务的建设上。 因此,微信小程序为了…

dolphinscheduler3.1.3版本代码编译运行方法

说明 该文档适用于dolphinscheduler 3.1.3-release版本。 一 环境准备 需要使用的环境包括JDK1.8,以及Maven 3.6以上的版本,这里使用低于3.6版本的Maven也可以调试运行,不过在打包的时候会有报错,最好使用高版本的maven。 二 …

数字IC笔试面试常考问题及答案汇总(内含各岗位大厂题目)

经历了无数的笔试面试之后,不知道大家有没有发现数字IC的笔试面试还是有很多共通之处和规律可循的。所以一定要掌握笔试面试常考的问题。 数字IC笔试面试常考问题及答案汇总(文末可领全部哦~) 验证方向(部分题目) Q1…

android studio APP工程的项目结构说明及创建

目录 1.APP工程的项目结构图 2.功能说明 2.1app 2.2Gradle Scripts 3.创建新的APP页面 补充: 1.APP工程的项目结构图 2.功能说明 该项目下两个分类:一个是app(代表app模块);另一个是Gradle Scripts。 2.1app app下面有3个…