pont-engine

是一款阿里的api生成工具

安装依赖即可

yarn add --dev pont-engine

然后即可使用

pont start

生成之后,在入口文件导入生成的index即可,一般是

import '@/services'

问题1

注意 生成的配置文件pont-config后一定要添originType、surrounding两个属性,否则生成的不全。

一般完整如下

{
"originUrl": "http://localhost:8080/v3/api-docs",
"templatePath": "./pontTemplate",
"outDir": "./src/services",
"mocks": {
"enable": false
},
"templateType": "fetch",
"originType": "SwaggerV3",
"surrounding":"javaScript"
}

问题2

但是因为默认生成的代码 包含cjs的模块语法,所以vite无法识别。

另外生成代码前最好把旧的生成目录删除!

解决办法: 删除或更改 pontCore.js 文件里的cjs语法为esm即可。

如果您觉得麻烦,我做了如下优化,让您一键执行这些操作 并生成适应vite的代码:

在项目根目录下创建脚本命令 shell\gen-api.js

const shell = require('shelljs');
const child_process = require('node:child_process'); // 移除旧的services目录
shell.rm('-rf', 'src/services');
// 执行生成api目录(shell目前不支持exec需要交互式输入的运行命令,所以只能用原生 https://github.com/shelljs/shelljs/wiki/FAQ#running-interactive-programs-with-exec)
child_process.execSync('pont start',{stdio: 'inherit'});
// 替换生成文件里vite不支持的语法
const pontCorePath = './src/services/pontCore.js';
shell.sed('-i', 'Object.defineProperty.*', '', pontCorePath);
shell.sed('-i', 'exports.PontCore = void 0;', '', pontCorePath);
shell.sed('-i', 'exports.PontCore', 'export const PontCore', pontCorePath);

pa中添加一键打包命令

"scripts": {
"pont": "node ./shell/gen-api.js",
...
},

注意 脚本依赖一个三方包 shelljs,记得安装一下

yarn add shelljs

使用

npm run pont

问题3

结合axios。

默认提供了两种ajax方式,但我们最常用的是axios。

新建一个配置文件如base-api.js

import axios from 'axios';
import {PontCore} from '@/services/pontCore' axios.defaults.baseURL = '/api'
// axios响应拦截(axios返回本身会多一层data,这里帮忙解构出实际返回的data,避免页面取值的时候存在res.data.data难看的情况)
axios.interceptors.response.use(
(response: any) => {
if (response.data.code === 0) {
return Promise.resolve(response.data);
} else {
message.error(response.data.msg);
return Promise.resolve(response);
}
},
(error) => {
message.error("请求接口失败,请联系管理员");
}
);
PontCore.useFetch((url, fetchOption) => {
fetchOption.data = fetchOption.body
return axios(url, fetchOption);
});

然后引入入口文件即可

import '@/utils/base-api'

vite vue/react使用pont-engine的更多相关文章

  1. 从DOM操作看Vue&React的前端组件化,顺带补齐React的demo

    前言 接上文:谈谈我对前端组件化中“组件”的理解,顺带写个Vue与React的demo 上次写完博客后,有朋友反应第一内容有点深,看着迷迷糊糊:第二是感觉没什么使用场景,太过业务化,还不如直接写Vue ...

  2. 2015前端各大框架比较(angular,vue,react,ant)

    前端流行框架大比拼 angular vue react ant-design angularjs angular是个MVVM的框架.针对的是MVVM这整个事.angular的最主要的场景就是单页应用, ...

  3. 前端开发组件化设计vue,react,angular原则漫谈

    前端开发组件化设计vue,react,angular原则漫谈 https://www.toutiao.com/a6346443500179505410/?tt_from=weixin&utm_ ...

  4. 三种Web前端框架比较与介绍--Vue, react, angular

    一.Angular 1.MVVM(Model)(View)(View-model): 2.模块化(Module)控制器(Contoller)依赖注入: 3.双向数据绑定:界面的操作能实时反映到数据,数 ...

  5. 谈谈Vue/React中的虚拟DOM(vDOM)与Key值

    谈谈Vue/React中的虚拟DOM(vDOM)与Key值 一.DocumentFragment 在了解虚拟DOM前,先来了解DOM的一个对象属性--DocumentFragment. 在一次操作中, ...

  6. Angular Vue React 框架中的 CSS

    框架中的 CSS Angular Vue React 三大框架 Angular Vue 内置样式集成 React 一些业界实践 Angular Angular . js (1.x):没有样式集成能力 ...

  7. 干货满满!如何优雅简洁地实现时钟翻牌器(支持JS/Vue/React)

    双十一剁手节过去了,大家应该在很多网页中看到了数字翻牌的效果吧,比如倒计时. 数字增长等.相信很多人都已经自己独立实现过了,我也在网上看了一些demo,发现HTML结构大多比较复杂,用了4个并列的标签 ...

  8. 前端三大框架(Angular Vue React)

    前端,HTML(超文本标记语言),CSS(层叠样式表)和JavaScript(脚本语言) HTML,通常说的h5,其实按标准来说,HTML4的后续版本不带编号了,并保证向前的兼容性 CSS的版本3,增 ...

  9. uni-app,vue,react,Trao之缓存类封装

    uni-app,vue,react,Trao之缓存类封装 一,介绍与需求 1.1,介绍 缓存主要分为如下几个 1.LocalStorage LocalStorage是永久性的本地缓存,存储在客户端的浏 ...

  10. 手把手教你使用Vue/React/Angular三大框架开发Pagination分页组件

    DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师.官方网站:devui.designNg组件库:ng-devui(欢迎S ...

随机推荐

  1. java开发中简简单单的全局异常处理

    今天吃饭时,被公司新来的同事问道:"项目controller层里好多都没写try,catch,难道异常不用处理吗?".虽然正吃饭时被打扰,让我很讨厌,但是既然他诚心诚意的问了,本着 ...

  2. Java 中的强引用、软引用、弱引用和虚引用分别是什么?

    Java 中的引用类型:强引用.软引用.弱引用和虚引用 Java 中的引用类型主要分为 强引用.软引用.弱引用 和 虚引用,它们对对象的生命周期和垃圾回收(GC)行为产生不同的影响. 1. 强引用(S ...

  3. symfony里实现resfull api并实现权限控制

    ---------------------------------------------------------- 1.restfull api部分 注:笔记,自己摸索出来的,路子野,仅供参考. - ...

  4. EF ——left join

    如何在EF中实现left join(左联接)查询_ var TestList = from p in context.PersonalInformation join d in context.Dep ...

  5. Canvas、客户端、表单

    Canvas var canvas = document.querySelector('.myCanvas'); var width = canvas.width = window.innerWidt ...

  6. 74.8K star!这个开源图标库让界面设计效率提升10倍!

    嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 Font Awesome 是全球最受欢迎的图标库和工具包,提供超过2000个免费图标和700 ...

  7. Navicat Premiun已经停止工作

    与网易有道词典冲突.退出词典即可.

  8. K8s新手系列之namespace

    概述 官方文档地址:https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/namespaces/ namespace是K8s系统中的一种非 ...

  9. 【工具】SageMath|Ubuntu 22 下 SageMath 安装和一般数域筛法代码示例(2024年)

    就一个终端就能运行的东西, 网上写教程写那么长, 稍微短点的要么是没链接只有截图.要么是链接给的不到位, 就这,不是耽误生命吗. 废话就到这里. 文章目录 链接 步骤 链接 参考: Install S ...

  10. java基础之“获取系统类型,区分Windows和Linux系统”

    一.获取系统类型,区分Windows和Linux系统 // 判断是否是windows系统 System.getProperties().getProperty("os.name") ...