首页 > 其他分享 >VUE基础大结局-用vue-cli搭建一个简单的vue项目吧!

VUE基础大结局-用vue-cli搭建一个简单的vue项目吧!

时间:2024-09-11 14:53:24浏览次数:8  
标签:axios VUE 请求 app 大结局 vue import config

一、vue-cli的安装和使用

vue-cli是vue官方提供的、快速生成vue工程化项目的工具

 vue-cli官网 https://cli.vuejs.org/zh/

 特点

  • 开箱即用
  • 基于webpack
  • 功能丰富且易于扩展
  • 支持创建vue2和vue3的项目

 安装vue-cli

开始右键打开PowerShell窗口,运行命令

npm install -g @vue/cli
# OR
yarn global add @vue/cli

安装完毕后可运行如下命令检查是否安装成功

vue --version

 安装成功会提示对应的版本号

  

 创建vue-cli项目

 vue提供了如下创建项目的两种方式

#基于命令行方式创建
vue create my-project

# OR

#基于可视化面板创建
vue ui

 1、基于vue ui

在终端运行vue ui,自动在浏览器中打开创建项目的可视化面板

选择“创建”tab页,点击“在此创建新项目”按钮

在详情页填写项目名称,点击下一步

在预设页面中选择手动配置项目,点击下一步

在功能页面中勾选需要安装的功能(Choose Vue Version 、Babel、CSS预处理器、使用配置文件),点击下一步

在配置页面勾选vue版本和需要的预处理器

将刚才所有的配置保存为预设模板,方便下一次创建项目时直接复用之前的配置

项目创建完成后,自动进入项目仪表盘,可进行安装依赖、安装插件等操作

2、基于命令行创建vue

在终端下运行vue create my-project命令

选择预设

选择要安装的功能(*为已经选中,空格可切换选中状态)

使用上下箭头选择vue版本,回车确定

使用上下箭头选择要使用的CSS预处理器,回车确定

使用上下箭头选择如何存储插件的配置信息,回车

选择是否将刚才的配置保存为预设

选择如何安装项目中的依赖包npm/yarn

开始创建项目并安装对应包

项目创建完成

切换至项目路径,运行yarn serve命令可启动项目

vue-cli项目基本结构

创建路由模块

详细路由相关操作可在vue基础(六)中查看

1、安装 vue-router

2、在src目录创建router->index.js路由模块

// 按需导入两个方法
// createRouter用于创建路由的实例对象
// createWebHashHistory用于指定路由的工作模式
import { createRouter, createWebHashHistory } from 'vue-router'

//导入需要使用路由控制的组件
import Home from '@/components/Home.vue'
import Movie from '@/components/Movie.vue'

// 创建路由对象
const router = createRouter({
    // 指定路由的工作模式为hash
    history: createWebHashHistory(),
    // 声明路由的匹配规则
    routes: [
        {path:'/', redirect:'/home'},
        { path: '/home', component: Home },
        { path: '/about', component: Movie },
    ],
})

// 导出路由对象
export default router

 3、在main.js中导入并挂载路由模块

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'

const app = createApp(App)

// 挂载路由模块
app.use(router)

app.mount('#app')

4、使用路由

<template>
  <div>
    <h1>APP根组件</h1>
    <router-link to="/home">首页</router-link>
    <router-link to="/movie">电影</router-link>

    <hr>

<!--    路由占位符-->
    <router-view></router-view>

  </div>
</template>

<script>

export default {
  name: 'MyApp',

}
</script>

<style lang="less" scoped>

</style>

二、vue组件库-Element UI

vue组件库

实际开发中,开发者可把自己封装的.vue组件整理打包发布为npm包,供他人下载使用

这种可直接下载并在项目中使用的现成组件,就叫做vue组件库

 常用vue组件库

  • pc端:Element UI 、View UI
  • 移动端:Mint UI、Vant

Element UI

vue2使用Element UI(Element - The world's most popular Vue UI framework

vue3使用Element Plus(https://element-plus.org/zh-CN/)

1、安装

yarn add element-plus

2、在项目中完整引入方式

在main.js中

// main.js
import { createApp } from 'vue'
//引入ElementPlus 
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import App from './App.vue'

const app = createApp(App)

app.use(ElementPlus)
app.mount('#app')

3、 在项目中按需引入方式(自动导入)

借助unplugin-vue-components 和 unplugin-auto-import这两款插件

yarn add -D unplugin-vue-components unplugin-auto-import

 修改配置文件webpack.config.js的plugin选项

// webpack.config.js
const AutoImport = require('unplugin-auto-import/webpack')
const Components = require('unplugin-vue-components/webpack')
const { ElementPlusResolver } = require('unplugin-vue-components/resolvers')

module.exports = {
  // ...
  plugins: [
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
}

在需要引入组件的文件中按需导入

<template>
  <el-button>我是 ElButton</el-button>
</template>
<script>
  import { ElButton } from 'element-plus'
  export default {
    components: { ElButton },
  }
</script>

三、axios拦截器

拦截器:会在每次发起ajax请求得到相应数据的时候自动被触发

 应用场景:实现Token认证、Loading效果...

配置axios

安装依赖包

yarn add axios -S

 全局配置axios

import { createApp } from 'vue'
 
import App from './components/App.vue'
 
import './assets/css/bootstrap.css'
import './index.css'
 
import axios from 'axios'
 
const app = createApp(App)
// 为axios配置请求根路径
axios.defaults.baseURL = 'https://api.com'
// 将axios挂载为自定义属性后,每个组件可通过this直接访问的全局挂载的自定义属性
// $后的自定义属性名可自定义,此处为http
app.config.globalProperties.$http = axios
 
app.mount('#app')

发送get/post请求示例


methods: {
    async postInfo() {
      // 发起post请求this.$http.post(请求路径,请求数据)
      const { data: res } = await this.$http.post('/api/post', { name: 'zs', age: 20 })
      console.log(res)
    },
  async getInfo() {
      // 发起get请求this.$http.get(请求路径,{params:{请求数据}}})
      const { data: res } = await this.$http.get('/api/get', {
        params: {
          name: 'ls',
          age: 33,
        },
      })
    },

  },

 配置请求拦截器

通过axios.interceptors.request.use(成功的回调,失败的回调)可配置请求拦截器

 注:失败的回调函数可以被省略

axios.interceptors.request.use((config) => {
//...
//必须return config
return config
},(error)=>{
//...
return Promise.reject(error)
})

 使用请求拦截器配置Token认证

main.js


// 配置请求根路径
axios.defaults.baseURL = 'https://api.com'

// 配置请求拦截器
axios.interceptors.request.use((config)=>{
    // 给请求头添加自定义属性,给Hader配置Token
    config.headers.Authorization = 'Bearer ' + getToken()
    console.log(config)
    return config
})
// 挂载
app.config.globalProperties.$http = axios

 配置响应拦截器

通过axios.interceptors.response.use(成功的回调,失败的回调)可配置响应拦截器

 注:失败的回调函数可以被省略

axios.interceptors.response.use((response) => {
//...
//必须return response
return response
},(error)=>{
//...
return Promise.reject(error)
})

四、proxy跨域代理

接口跨域问题

接口跨域问题:协议,域名,端口号不一致时会出现接口跨域问题

比如:

vue项目运行地址:http://localhost:8080/

ap接口地址:https://localhost:8000/api/users

此时接口不能请求成功

通过代理的方式解决跨域问题

proxy工作流程

  1. 将axios的请求路径设置为vue项目的运行地址而不是api接口地址(接口请求不再跨域)
  2. vue项目发现请求的接口不存在,把请求转交给proxy代理
  3. 代理把请求路径替换为devServer.proxy属性的值,发起真正的数据请求
  4. 代理把请求到的数据转发给axios

 在项目中配置proxy代理

1、在main.js入口文件中,把axios请求路径改造为当前web项目的根路径

// 配置请求根路径
axios.defaults.baseURL = ' http://localhost:8080/'

2、在项目根目录下创建vue.config.j的配置文件,并声明如下配置

module.exports = {
  devServer:{
    // 实际api接口地址
    proxy:'https://www.fc2.cn'
  }
}

注意: 

  • devServer.proxy提供的代理功能,仅在开发调试阶段生效
  • 项目上线发布时,依旧需要API接口服务器开启CROS跨域资源共享

标签:axios,VUE,请求,app,大结局,vue,import,config
From: https://blog.csdn.net/hh_xi/article/details/141930641

相关文章

  • vue3 使用 codemirror 实现yaml文件的在线编辑
    vue3使用codemirror实现yaml文件的在线编辑1.使用情形2.插件下载3.封装yaml编辑器组件4.父组件使用5.js-yaml使用6.备注1.使用情形需要对yaml文件进行在线编辑,并且进行基础格式验证2.插件下载vue-codemirror在线代码编辑器插件js-yaml用于转换jso......
  • 一个简约的uniapp登录界面,基于uniapp+vue3+uview-plus
    uniapp-vue3-template一个简约的uniapp登录界面,基于uniapp+vue3+uview-plus页面主要包括:用户登录,手机验证码登录,用户注册,重置密码等页面登录进去后为空白模板源码在文末界面源码uniapp登录界面源码......
  • ruoyi-vue 界面框架构造
    界面框架:我采用了flex布局,先分左右,然后右侧再分上下。步骤:1.首先实现简单的菜单1.1菜单是个菜单项数组[]1.2菜单项结构例子{id:'001',name:'历史轨迹',//菜单名称isTitle:true,//表示可以展开level:1,//level控制缩进,vue动态class使用expand:......
  • 【JAVA开源】基于Vue和SpringBoot员工绩效考核系统
    本文项目编号T021,文末自助获取源码\color{red}{T021,文末自助获取源码}......
  • 【JAVA开源】基于Vue和SpringBoot大学生入学审核系统
    本文项目编号T022,文末自助获取源码\color{red}{T022,文末自助获取源码}......
  • 【JAVA开源】基于Vue和SpringBoot房屋租赁系统
    本文项目编号T020,文末自助获取源码\color{red}{T020,文末自助获取源码}......
  • Vue3项目文件作用
    在Vue3项目中,文件和文件夹的组织结构对于项目的可维护性、可扩展性和团队协作至关重要。以下是一些Vue3项目中常见文件和文件夹的作用:package.json:项目的元数据文件,包括项目名称、版本、描述、作者、依赖项等。定义了项目的脚本,如启动、构建、测试等命令。public/:存......
  • 基于Java+Vue+Mysql的人力资源管理系统:简单易用,高效协同(项目代码)
    前言:eHR(ElectronicHumanResources)人力资源管理系统是一个综合性的软件平台,用于管理组织的人力资源相关的各种活动和数据。该系统可以显著提高人力资源部门的工作效率,确保数据准确性和一致性,同时提供决策支持。以下是eHR人力资源管理系统的六个主要模块及其功能的简要介绍:......
  • SpringBoot+Neo4j+Vue+Es集成ES全文检索、Neo4J知识图谱、Activiti工作流的知识库管理
    在数字化高度普及的时代,企事业机关单位在日常工作中会产生大量的文档,例如医院制度汇编,企业知识共享库等。针对这些文档性的东西,手工纸质化去管理是非常消耗工作量的,并且纸质化查阅难,易损耗,所以电子化管理显得尤为重要。【springboot+elasticsearch+neo4j+vue+activiti】实现数......
  • Vue模板语言入门
    一、绑定事件监听        接上集,如果想看vue基础请移步主页      1、默认事件形参event:            即在对象触发事件的函数的默认参数,即使在标签内触发函数位置没写event参数也可以在script函数中直接写:函数名(event){函......