Vue3.0小笔记

本文详细介绍了Vue3.0的项目搭建过程,包括响应式原理、ref、computed和watchEffect的使用,以及基本的反应式API。还探讨了Composition API中的setup、生命周期、provide和inject以及getCurrentInstance。此外,还提到了如何配置axios和使用element-plus。总结了Vue3与Vue2的区别,如ref和reactive的用法,以及setup中无法访问this的情况。
摘要由CSDN通过智能技术生成

vue3项目搭建

  1. npm init vite
    根据提示选择所需内容,生成项目,cd 进入项目目录,安装依赖,运行,得到一个vite+vue3的项目
  2. 配置vite.config.ts
    vite—config
import {
    defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import {
    resolve } from 'path'

// https://vitejs.dev/config/
export default defineConfig({
   
  plugins: [
    vue(),
  ],
  resolve: {
   
    alias: {
   // 设置文件./src路径为 @
      '@': resolve('./src')
    }
  },
  base: './', // 打包路径
  server: {
   
    port: 4000, // 服务端口号
    open: true, // 服务启动时是否自动打开浏览器
    cors: true // 允许跨域
  }
})

  1. 配置ts.config.json
  // 添加baseUrl和paths,此注释需要删除否则报错
    "baseUrl": "./",
    "paths": {
   
      "@/*": ["./src/*"]
    }
  1. 使用sass,npm i sass -D,相关loader vite已经集成,不需要安装。安装之后,使用lang=scss即可
  2. 配置vue-routernpm i vue-router,创建router.ts
import {
    createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'
const routes: Array<RouteRecordRaw> = [
    {
   
        path: '/home',
        name: 'Home',
        component: () => import(/* webpackChunkName: "Home" */ '@/components/HelloWorld.vue')
    },
    {
    path: '/', redirect: {
    name: 'Home' } }
]
const router = createRouter({
   
    history: createWebHistory(),
    routes
})
export default router

使用:在main.ts中导入并注册

import router from '@/router/index'
const app = createApp(App)
app.use(router)
  1. vuex npm i vuex, 创建store.ts
import {
    createStore } from 'vuex'
const defaultState = {
   
    count: 0
}
// Create a new store instance.
export default createStore({
   
    state() {
   
        return {
   
            count: 0
        }
    },
    mutations: {
   
        increment(state) {
   
            state.count += 1
        }
    },
    actions: {
   
        increment(context) {
   
            context.commit('increment')
        }
    },
    getters: {
   
        double(state: typeof defaultState) {
   
            return 2 * state.count
        }
    }
})

使用先在main.ts中注册,同5
7. 配置axios npm i axios, 创建axios.ts

import axios from 'axios';
import {
    ElMessage } from 'element-plus'

// 创建axios实例
// 创建请求时可以用的配置选项
const request = axios.create({
   
    withCredentials: true,
    timeout: 1000,
    baseURL: ''
})
// axios的全局配置
request.defaults.headers.post = {
   
    'Content-Type': 'application/x-www-form-urlencoded'
}
request.defaults.headers.common = {
   
    'Auth-Type': 'company-web',
    'X-Requested-With': 'XMLHttpRequest',
    token: 'sdfjlsdfjlsdjflsjflsfjlskd'
}

// 添加请求拦截器(post只能接受字符串类型数据)
request.interceptors.request.use(
    // 统一设置用户身份 token
    (config) => {
   
        return config
    },
    (error) => {
   
        return Promise.reject(error)
    }
)

// 错误处理
const errorHandle = (status: any, other: any) => {
   
    switch(status) {
   
        case 400:
            ElMessage.error('信息校验失败');
            break;
        case 401:
            ElMessage.error('认证失败');
            break;
        case 403:
            ElMessage.error('token校验失败');
            break;
        case 404:
            ElMessage.error('请求资源不存在');
            break;
        default:
            ElMessage.error
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值