IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vite2:全局自动导入api -> 正文阅读

[JavaScript知识库]vite2:全局自动导入api

目录

实现要点:

一、目录结构组织

二、自动导入实现

1、在business文件夹中建立各个模块对应的封装好的API接口,如上图:user.ts

2、在api/index.ts中读取business文件夹下的所有文件

3、在main.ts中引入api/index.ts中导出的modules,并注册到vue上(在vue3中不能使用prototype注册全局属性等)

4、在.vue文件中使用自动导出的api


实现要点:

1、在vite中读取某个目录下的所有文件:import.meta.globEager 或 import.meta.glob,在webpack搭建的项目中使用的是:require.context

2、vue3中给挂载全局属性:config.globalProperties

3、vue3中使用全局属性:getCurrentInstance

详细使用方式请阅读全文

一、目录结构组织

二、自动导入实现

1、在business文件夹中建立各个模块对应的封装好的API接口,如上图:user.ts

// user.ts
import { post, get } from "@/config/request";
/**
 * @interface loginParams -登录参数
 * @property {string} userName -用户名
 * @property {string} password -用户密码
 */
interface LoginParams {
    userName: string;
    password: string;
}
export function login(data: LoginParams) {
    return post("/api/login", data);
}

2、在api/index.ts中读取business文件夹下的所有文件

// api/index.ts
// vite中读取文件需要使用import.meta.globEager 或 import.meta.glob
const requireComponent = import.meta.globEager("./business/*.ts");
let modules: any = {};

Object.entries(requireComponent).forEach(([k, v]) => {
    Object.assign(modules, v);
});

export default {
    modules,
};

3、在main.ts中引入api/index.ts中导出的modules,并注册到vue上(在vue3中不能使用prototype注册全局属性等)

import { createApp } from "vue";
import App from "./App.vue";
import router from "./router";
import { store, key } from "./store";
import "normalize.css/normalize.css";
import "@/styles/index.less";
import api from "./api/index";

const app = createApp(App);
// vue3挂载全局属性需要使用 config.globalProperties
app.config.globalProperties.$axios = api.modules;
app.use(router).use(store, key).mount("#app");

4、在.vue文件中使用自动导出的api

import { getCurrentInstance } from "vue";
const { proxy }: any = getCurrentInstance();
const login = async ()=>{
    let res = await proxy.$axios.login(ruleForm)
}

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-04 13:20:03  更:2022-01-04 13:22:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:44:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码