vite vue/react使用pont-engine
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的更多相关文章
- 从DOM操作看Vue&React的前端组件化,顺带补齐React的demo
前言 接上文:谈谈我对前端组件化中“组件”的理解,顺带写个Vue与React的demo 上次写完博客后,有朋友反应第一内容有点深,看着迷迷糊糊:第二是感觉没什么使用场景,太过业务化,还不如直接写Vue ...
- 2015前端各大框架比较(angular,vue,react,ant)
前端流行框架大比拼 angular vue react ant-design angularjs angular是个MVVM的框架.针对的是MVVM这整个事.angular的最主要的场景就是单页应用, ...
- 前端开发组件化设计vue,react,angular原则漫谈
前端开发组件化设计vue,react,angular原则漫谈 https://www.toutiao.com/a6346443500179505410/?tt_from=weixin&utm_ ...
- 三种Web前端框架比较与介绍--Vue, react, angular
一.Angular 1.MVVM(Model)(View)(View-model): 2.模块化(Module)控制器(Contoller)依赖注入: 3.双向数据绑定:界面的操作能实时反映到数据,数 ...
- 谈谈Vue/React中的虚拟DOM(vDOM)与Key值
谈谈Vue/React中的虚拟DOM(vDOM)与Key值 一.DocumentFragment 在了解虚拟DOM前,先来了解DOM的一个对象属性--DocumentFragment. 在一次操作中, ...
- Angular Vue React 框架中的 CSS
框架中的 CSS Angular Vue React 三大框架 Angular Vue 内置样式集成 React 一些业界实践 Angular Angular . js (1.x):没有样式集成能力 ...
- 干货满满!如何优雅简洁地实现时钟翻牌器(支持JS/Vue/React)
双十一剁手节过去了,大家应该在很多网页中看到了数字翻牌的效果吧,比如倒计时. 数字增长等.相信很多人都已经自己独立实现过了,我也在网上看了一些demo,发现HTML结构大多比较复杂,用了4个并列的标签 ...
- 前端三大框架(Angular Vue React)
前端,HTML(超文本标记语言),CSS(层叠样式表)和JavaScript(脚本语言) HTML,通常说的h5,其实按标准来说,HTML4的后续版本不带编号了,并保证向前的兼容性 CSS的版本3,增 ...
- uni-app,vue,react,Trao之缓存类封装
uni-app,vue,react,Trao之缓存类封装 一,介绍与需求 1.1,介绍 缓存主要分为如下几个 1.LocalStorage LocalStorage是永久性的本地缓存,存储在客户端的浏 ...
- 手把手教你使用Vue/React/Angular三大框架开发Pagination分页组件
DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师.官方网站:devui.designNg组件库:ng-devui(欢迎S ...
随机推荐
- java开发中简简单单的全局异常处理
今天吃饭时,被公司新来的同事问道:"项目controller层里好多都没写try,catch,难道异常不用处理吗?".虽然正吃饭时被打扰,让我很讨厌,但是既然他诚心诚意的问了,本着 ...
- Java 中的强引用、软引用、弱引用和虚引用分别是什么?
Java 中的引用类型:强引用.软引用.弱引用和虚引用 Java 中的引用类型主要分为 强引用.软引用.弱引用 和 虚引用,它们对对象的生命周期和垃圾回收(GC)行为产生不同的影响. 1. 强引用(S ...
- symfony里实现resfull api并实现权限控制
---------------------------------------------------------- 1.restfull api部分 注:笔记,自己摸索出来的,路子野,仅供参考. - ...
- EF ——left join
如何在EF中实现left join(左联接)查询_ var TestList = from p in context.PersonalInformation join d in context.Dep ...
- Canvas、客户端、表单
Canvas var canvas = document.querySelector('.myCanvas'); var width = canvas.width = window.innerWidt ...
- 74.8K star!这个开源图标库让界面设计效率提升10倍!
嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 Font Awesome 是全球最受欢迎的图标库和工具包,提供超过2000个免费图标和700 ...
- Navicat Premiun已经停止工作
与网易有道词典冲突.退出词典即可.
- K8s新手系列之namespace
概述 官方文档地址:https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/namespaces/ namespace是K8s系统中的一种非 ...
- 【工具】SageMath|Ubuntu 22 下 SageMath 安装和一般数域筛法代码示例(2024年)
就一个终端就能运行的东西, 网上写教程写那么长, 稍微短点的要么是没链接只有截图.要么是链接给的不到位, 就这,不是耽误生命吗. 废话就到这里. 文章目录 链接 步骤 链接 参考: Install S ...
- java基础之“获取系统类型,区分Windows和Linux系统”
一.获取系统类型,区分Windows和Linux系统 // 判断是否是windows系统 System.getProperties().getProperty("os.name") ...