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

一、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跨域资源共享
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值