vue3 基础学习记录

一、项目创建、插件安装

vue3 setup 语法糖:传送门

		脚手架( vue/cli ): 	npm install -g  @vue/cli@4.5.13 
		路由( vue-router ): 	npm install vue-router@^4.0.0-beta.13 --save 
		公共管理( vuex ):	npm install vuex@next -save
		装饰器( vuex ):		npm install vuex-module-decorators --save
		请求方式( axios ):	npm install axios	--save-dev
		样式插件(less):		npm install less less-load --save

二、详细介绍

1. 创建项目
		vue  create my_project
2. 配置路由 router
		1. @/router/index.js
		// 引入路由配置
		import { createRouter, createWebHashHistory } from "vue-router";
		// 进入路由文件
		import Home from "@/views/index.vue";
		import About from "@/views/about.vue";
		
		// 路由存放
		const routes = [
		  { path: "/", component: Home },
		  { path: "/about", component: About },
		];
		
		// 创建 router
		const router = createRouter({
		  // hash 模式
		  history: createWebHashHistory(),
		  routes,
		});
		
		// 路由拦截
		router.beforeEach((to, form, next) => {
		  console.log("to:", to, "form:", form);
		  next();
		});
		
		export { router };	// 导出路由
		
		2. main.js
		// 引入 router
		import { router } from "@/router"; 
		
		// 挂载路由
		createApp(App).use(router).mount("#app");
2. 公共管理 vuex
		1. @/store/index.js
		import { createStore } from "vuex";
		
		// 创建一个新的 store 实例
		const store = createStore({});
		export default store;
		
		2. @/store/modules/user.js
		import {
		  Action,
		  getModule,
		  Module,
		  Mutation,
		  VuexModule,
		} from "vuex-module-decorators";
		import store from "../index";
		
		@Module({ dynamic: true, store, name: "user" })
		class User extends VuexModule {
		  count: number = 0;
		
		  get getCount(): number {
		    return this.count;
		  }
		
		  @Mutation
		  setCount(wheels: number): void {
		    this.count = wheels;
		  }
		
		  @Action
		  set_count(wheels: number): void {
		    this.setCount(wheels);
		  }
		}
		
		const getUser = getModule(User, store);
		export default getUser;
		
		3. 页面引用
		import getUser from "@/store/modules/user";
		import { computed, watch } from "@vue/runtime-core";
		
		let { set_count, count } = getUser;
		const count_p = computed(() => getUser.count);
		const btn = (): void => {
		  count++;
		  set_count(count);
		};
3. 请求方式 axios
		import axios from "axios";

		// 创建axios实例
		const service = axios.create({
		  // 请求地址
		  baseURL: "http://",
		  // 超时
		  timeout: 120000,
		});
		// request拦截器
		service.interceptors.request.use(
		  (config: any) => {
		    config.headers = {
		      "Content-Type": "application/x-www-form-urlencoded",
		    };
		
		    // 请求拦截操作
		    return config;
		  },
		  (error) => {
		    Promise.reject(error);
		  }
		);
		
		// 响应拦截器
		service.interceptors.response.use(
		  (res) => {
		    // 响应拦截操作
		    return res.data;
		  },
		  (error) => {
		    return Promise.reject(error);
		  }
		);
		
		export default service;
		
		2. 接口路由
		import service from "./index";
		
		// 登录
		export function login(query) {
		  return service({
		    url: "/user/login",
		    method: "post",
		    params: query,
		  });
		}
		
		3. 页面使用
		import { login } from "./api/...";
		login({}).then(res=>{}).catch(err=>{})			
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值