【Ant Design Pro】1. config 配置

前置说明

这里我使用的是 simple 版本,并结合 antd pro 脚手架搭建(现在默认使用为 umi4 版本):

在这里插入图片描述

虽然这个文档好像已经好久没有更新了。

config 文件:

在这里插入图片描述

config.ts

// https://umijs.org/config/
import { defineConfig } from '@umijs/max';
import { join } from 'path';
import defaultSettings from './defaultSettings';
import proxy from './proxy';
import routes from './routes';// env 可以 .env 配置 也可以 cross-env 配置
const { REACT_APP_ENV = 'dev', NODE_ENV } = process.env;export default defineConfig({/*** @name 开启 hash 模式* @description 让 build 之后的产物包含 hash 后缀。通常用于增量发布和避免浏览器加载缓存。* @doc https://umijs.org/docs/api/config#hash*/hash: true,/*** @name 兼容性设置* @description 设置 ie11 不一定完美兼容,需要检查自己使用的所有依赖* @doc https://umijs.org/docs/api/config#targets*/// targets: {//   ie: 11,// },/*** @name 路由的配置,不在路由中引入的文件不会编译* @description 只支持 path,component,routes,redirect,wrappers,title 的配置* @doc https://umijs.org/docs/guides/routes*/// umi routes: https://umijs.org/docs/routingroutes,/*** @name 主题的配置* @description 虽然叫主题,但是其实只是 less 的变量设置* @doc antd的主题设置 https://ant.design/docs/react/customize-theme-cn* @doc umi 的theme 配置 https://umijs.org/docs/api/config#theme*/theme: {// 如果不想要 configProvide 动态设置主题需要把这个设置为 default// 只有设置为 variable, 才能使用 configProvide 动态设置主色调'root-entry-name': 'variable',},/*** @name 标题* @doc https://umijs.org/docs/api/config#title*/title: 'Ant Design Pro',/*** @name 路由模式* @doc https://umijs.org/docs/api/config#history*/history: {type: 'browser',},/*** @name 开发环境使用 sourcemap* @doc https://umijs.org/docs/api/config#devtool*/devtool: NODE_ENV === 'development' ? 'source-map' : false,/*** @name moment 的国际化配置* @description 如果对国际化没有要求,打开之后能减少js的包大小* @doc https://umijs.org/docs/api/config#ignoremomentlocale*/ignoreMomentLocale: true,/*** @name 代理配置* @description 可以让你的本地服务器代理到你的服务器上,这样你就可以访问服务器的数据了* @see 要注意以下 代理只能在本地开发时使用,build 之后就无法使用了。* 这里的 proxy 是 proxy.ts 文件 表示 key 值(REACT_APP_ENV)为环境变量,value 值为代理地址。* @doc 代理介绍 https://umijs.org/docs/guides/proxy* @doc 代理配置 https://umijs.org/docs/api/config#proxy*/proxy: proxy[REACT_APP_ENV as keyof typeof proxy],/*** @name 快速热更新配置* @description 一个不错的热更新组件,更新时可以保留 state*/fastRefresh: true,//============== 以下都是max的插件配置 ===============/*** @name 数据流插件* @@doc https://umijs.org/docs/max/data-flow*/model: {},/*** 一个全局的初始数据流,可以用它在插件之间共享数据* @description 可以用来存放一些全局的数据,比如用户信息,或者一些全局的状态,全局初始状态在整个 Umi 项目的最开始创建。* @doc https://umijs.org/docs/max/data-flow#%E5%85%A8%E5%B1%80%E5%88%9D%E5%A7%8B%E7%8A%B6%E6%80%81*/initialState: {},/*** @name layout 插件* @doc https://umijs.org/docs/max/layout-menu*/layout: {locale: true,// 布局默认设置文件...defaultSettings,},/*** @name moment2dayjs 插件* @description 将项目中的 moment 替换为 dayjs* @doc https://umijs.org/docs/max/moment2dayjs*/moment2dayjs: {preset: 'antd',plugins: ['duration'],},/*** @name 国际化插件* @doc https://umijs.org/docs/max/i18n*/locale: {// default zh-CNdefault: 'zh-CN',antd: true,// default true, when it is true, will use `navigator.language` overwrite defaultbaseNavigator: true,},/*** @name antd 插件* @description 内置了 babel import 插件* @doc https://umijs.org/docs/max/antd#antd*/antd: {},/*** @name 网络请求配置* @description 它基于 axios 和 ahooks 的 useRequest 提供了一套统一的网络请求和错误处理方案。* @doc https://umijs.org/docs/max/request*/request: {},/*** @name 权限插件* @description 基于 initialState 的权限插件,必须先打开 initialState* @doc https://umijs.org/docs/max/access*/access: {},/*** @name <head> 中额外的 script* @description 配置 <head> 中额外的 script*/headScripts: [// 解决首次加载时白屏的问题{ src: '/scripts/loading.js', async: true },],//================ pro 插件配置 =================presets: ['umi-presets-pro'],/*** @name openAPI 插件的配置* @description 基于 openapi 的规范生成serve 和mock,能减少很多样板代码* @doc https://pro.ant.design/zh-cn/docs/openapi/*/openAPI: [{requestLibPath: "import { request } from '@umijs/max'",// 或者使用在线的版本// schemaPath: "https://gw.alipayobjects.com/os/antfincdn/M%24jrzTTYJN/oneapi.json"schemaPath: join(__dirname, 'oneapi.json'),mock: false,},{requestLibPath: "import { request } from '@umijs/max'",schemaPath: 'https://gw.alipayobjects.com/os/antfincdn/CA1dOm%2631B/openapi.json',projectName: 'swagger',},],mfsu: {strategy: 'normal',},esbuildMinifyIIFE: true,requestRecord: {},
});

defaultSettings.ts

布局的默认设置

import { ProLayoutProps } from '@ant-design/pro-components';/*** @name*/
const Settings: ProLayoutProps & {pwa?: boolean;logo?: string;
} = {navTheme: 'light',// 拂晓蓝colorPrimary: '#1890ff',layout: 'mix',contentWidth: 'Fluid',fixedHeader: false,fixSiderbar: true,colorWeak: false,title: 'Ant Design Pro',pwa: true,logo: 'https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg',iconfontUrl: '',token: {// 参见ts声明,demo 见文档,通过token 修改样式//https://procomponents.ant.design/components/layout#%E9%80%9A%E8%BF%87-token-%E4%BF%AE%E6%94%B9%E6%A0%B7%E5%BC%8F},
};export default Settings;

oneapi.json

mock 的一套接口文档。

{"openapi": "3.0.1","info": {"title": "Ant Design Pro","version": "1.0.0"},"servers": [{"url": "http://localhost:8000/"},{"url": "https://localhost:8000/"}],"paths": {"/api/currentUser": {"get": {"tags": ["api"],"description": "获取当前的用户","operationId": "currentUser","responses": {"200": {"description": "Success","content": {"application/json": {"schema": {"$ref": "#/components/schemas/CurrentUser"}}}},"401": {"description": "Error","content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorResponse"}}}}}},"x-swagger-router-controller": "api"},"/api/login/captcha": {"post": {"description": "发送验证码","operationId": "getFakeCaptcha","tags": ["login"],"parameters": [{"name": "phone","in": "query","description": "手机号","schema": {"type": "string"}}],"responses": {"200": {"description": "Success","content": {"application/json": {"schema": {"$ref": "#/components/schemas/FakeCaptcha"}}}}}}},"/api/login/outLogin": {"post": {"description": "登录接口","operationId": "outLogin","tags": ["login"],"responses": {"200": {"description": "Success","content": {"application/json": {"schema": {"type": "object"}}}},"401": {"description": "Error","content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorResponse"}}}}}},"x-swagger-router-controller": "api"},"/api/login/account": {"post": {"tags": ["login"],"description": "登录接口","operationId": "login","requestBody": {"description": "登录系统","content": {"application/json": {"schema": {"$ref": "#/components/schemas/LoginParams"}}},"required": true},"responses": {"200": {"description": "Success","content": {"application/json": {"schema": {"$ref": "#/components/schemas/LoginResult"}}}},"401": {"description": "Error","content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorResponse"}}}}},"x-codegen-request-body-name": "body"},"x-swagger-router-controller": "api"},"/api/notices": {"summary": "getNotices","description": "NoticeIconItem","get": {"tags": ["api"],"operationId": "getNotices","responses": {"200": {"description": "Success","content": {"application/json": {"schema": {"$ref": "#/components/schemas/NoticeIconList"}}}}}}},"/api/rule": {"get": {"tags": ["rule"],"description": "获取规则列表","operationId": "rule","parameters": [{"name": "current","in": "query","description": "当前的页码","schema": {"type": "number"}},{"name": "pageSize","in": "query","description": "页面的容量","schema": {"type": "number"}}],"responses": {"200": {"description": "Success","content": {"application/json": {"schema": {"$ref": "#/components/schemas/RuleList"}}}},"401": {"description": "Error","content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorResponse"}}}}}},"post": {"tags": ["rule"],"description": "新建规则","operationId": "addRule","responses": {"200": {"description": "Success","content": {"application/json": {"schema": {"$ref": "#/components/schemas/RuleListItem"}}}},"401": {"description": "Error","content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorResponse"}}}}}},"put": {"tags": ["rule"],"description": "新建规则","operationId": "updateRule","responses": {"200": {"description": "Success","content": {"application/json": {"schema": {"$ref": "#/components/schemas/RuleListItem"}}}},"401": {"description": "Error","content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorResponse"}}}}}},"delete": {"tags": ["rule"],"description": "删除规则","operationId": "removeRule","responses": {"200": {"description": "Success","content": {"application/json": {"schema": {"type": "object"}}}},"401": {"description": "Error","content": {"application/json": {"schema": {"$ref": "#/components/schemas/ErrorResponse"}}}}}},"x-swagger-router-controller": "api"},"/swagger": {"x-swagger-pipe": "swagger_raw"}},"components": {"schemas": {"CurrentUser": {"type": "object","properties": {"name": {"type": "string"},"avatar": {"type": "string"},"userid": {"type": "string"},"email": {"type": "string"},"signature": {"type": "string"},"title": {"type": "string"},"group": {"type": "string"},"tags": {"type": "array","items": {"type": "object","properties": {"key": {"type": "string"},"label": {"type": "string"}}}},"notifyCount": {"type": "integer","format": "int32"},"unreadCount": {"type": "integer","format": "int32"},"country": {"type": "string"},"access": {"type": "string"},"geographic": {"type": "object","properties": {"province": {"type": "object","properties": {"label": {"type": "string"},"key": {"type": "string"}}},"city": {"type": "object","properties": {"label": {"type": "string"},"key": {"type": "string"}}}}},"address": {"type": "string"},"phone": {"type": "string"}}},"LoginResult": {"type": "object","properties": {"status": {"type": "string"},"type": {"type": "string"},"currentAuthority": {"type": "string"}}},"PageParams": {"type": "object","properties": {"current": {"type": "number"},"pageSize": {"type": "number"}}},"RuleListItem": {"type": "object","properties": {"key": {"type": "integer","format": "int32"},"disabled": {"type": "boolean"},"href": {"type": "string"},"avatar": {"type": "string"},"name": {"type": "string"},"owner": {"type": "string"},"desc": {"type": "string"},"callNo": {"type": "integer","format": "int32"},"status": {"type": "integer","format": "int32"},"updatedAt": {"type": "string","format": "datetime"},"createdAt": {"type": "string","format": "datetime"},"progress": {"type": "integer","format": "int32"}}},"RuleList": {"type": "object","properties": {"data": {"type": "array","items": {"$ref": "#/components/schemas/RuleListItem"}},"total": {"type": "integer","description": "列表的内容总数","format": "int32"},"success": {"type": "boolean"}}},"FakeCaptcha": {"type": "object","properties": {"code": {"type": "integer","format": "int32"},"status": {"type": "string"}}},"LoginParams": {"type": "object","properties": {"username": {"type": "string"},"password": {"type": "string"},"autoLogin": {"type": "boolean"},"type": {"type": "string"}}},"ErrorResponse": {"required": ["errorCode"],"type": "object","properties": {"errorCode": {"type": "string","description": "业务约定的错误码"},"errorMessage": {"type": "string","description": "业务上的错误信息"},"success": {"type": "boolean","description": "业务上的请求是否成功"}}},"NoticeIconList": {"type": "object","properties": {"data": {"type": "array","items": {"$ref": "#/components/schemas/NoticeIconItem"}},"total": {"type": "integer","description": "列表的内容总数","format": "int32"},"success": {"type": "boolean"}}},"NoticeIconItemType": {"title": "NoticeIconItemType","description": "已读未读列表的枚举","type": "string","properties": {},"enum": ["notification", "message", "event"]},"NoticeIconItem": {"type": "object","properties": {"id": {"type": "string"},"extra": {"type": "string","format": "any"},"key": { "type": "string" },"read": {"type": "boolean"},"avatar": {"type": "string"},"title": {"type": "string"},"status": {"type": "string"},"datetime": {"type": "string","format": "date"},"description": {"type": "string"},"type": {"extensions": {"x-is-enum": true},"$ref": "#/components/schemas/NoticeIconItemType"}}}}}
}

proxy.ts

所有代理的配置。

/*** @name 代理的配置* @see 在生产环境 代理是无法生效的,所以这里没有生产环境的配置* -------------------------------* The agent cannot take effect in the production environment* so there is no configuration of the production environment* For details, please see* https://pro.ant.design/docs/deploy** @doc https://umijs.org/docs/guides/proxy*/
export default {// 如果需要自定义本地开发服务器  请取消注释按需调整// dev: {//   // localhost:8000/api/** -> https://preview.pro.ant.design/api/**//   '/api/': {//     // 要代理的地址//     target: 'https://preview.pro.ant.design',//     // 配置了这个可以从 http 代理到 https//     // 依赖 origin 的功能可能需要这个,比如 cookie//     changeOrigin: true,//   },// },/*** @name 详细的代理配置* @doc https://github.com/chimurai/http-proxy-middleware*/test: {// localhost:8000/api/** -> https://preview.pro.ant.design/api/**'/api/': {target: 'https://proapi.azurewebsites.net',changeOrigin: true,pathRewrite: { '^': '' },},},pre: {'/api/': {target: 'your pre url',changeOrigin: true,pathRewrite: { '^': '' },},},
};

routes.ts

路由表。

/*** @name umi 的路由配置* @description 只支持 path,component,routes,redirect,wrappers,name,icon 的配置* @param path  path 只支持两种占位符配置,第一种是动态参数 :id 的形式,第二种是 * 通配符,通配符只能出现路由字符串的最后。* @param component 配置 location 和 path 匹配后用于渲染的 React 组件路径。可以是绝对路径,也可以是相对路径,如果是相对路径,会从 src/pages 开始找起。* @param routes 配置子路由,通常在需要为多个路径增加 layout 组件时使用。* @param redirect 配置路由跳转* @param wrappers 配置路由组件的包装组件,通过包装组件可以为当前的路由组件组合进更多的功能。 比如,可以用于路由级别的权限校验* @param name 配置路由的标题,默认读取国际化文件 menu.ts 中 menu.xxxx 的值,如配置 name 为 login,则读取 menu.ts 中 menu.login 的取值作为标题* @param icon 配置路由的图标,取值参考 https://ant.design/components/icon-cn, 注意去除风格后缀和大小写,如想要配置图标为 <StepBackwardOutlined /> 则取值应为 stepBackward 或 StepBackward,如想要配置图标为 <UserOutlined /> 则取值应为 user 或者 User* @doc https://umijs.org/docs/guides/routes*/
export default [{path: '/user',layout: false,routes: [{name: 'login',path: '/user/login',component: './User/Login',},],},{path: '/welcome',name: 'welcome',icon: 'smile',component: './Welcome',},{path: '/admin',name: 'admin',icon: 'crown',access: 'canAdmin',routes: [{path: '/admin',redirect: '/admin/sub-page',},{path: '/admin/sub-page',name: 'sub-page',component: './Admin',},],},{name: 'list.table-list',icon: 'table',path: '/list',component: './TableList',},{path: '/',redirect: '/welcome',},{path: '*',layout: false,component: './404',},
];

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/887961.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《实战OpenCV系列》专栏介绍

简介 本专栏由浅入深&#xff0c;详细介绍了使用OpenCV进行图像/视频处理的各方面知识&#xff0c;包括&#xff1a;图像显示、图像的数学运算、图像的裁剪与拼接、图像的像素操作、几何变换、直方图、图像滤波、色彩空间转换、边缘检测、形态学操作、模板匹配、视频处理、图像…

Mac启动服务慢问题解决,InetAddress.getLocalHost().getHostAddress()慢问题。

项目启动5分钟&#xff0c;很明显有问题。像网上其他的提高jvm参数就不说了&#xff0c;应该不是这个问题&#xff0c;也就快一点。 首先找到自己的电脑名称&#xff08;用命令行也行&#xff0c;只要能找到自己电脑名称就行&#xff0c;这里直接在共享里看&#xff09;。 复制…

微信小程序Webview与H5通信

背景 近期有个微信小程序需要用到web-view嵌套H5的场景&#xff0c;该应用场景需要小程序中频繁传递数据到H5进行渲染&#xff0c;且需要保证页面不刷新。 由于微信小程序与H5之间的通信限制比较大&#xff0c;显然无法满足于我的业务场景 探索 由于微信小程序与webview的环境是…

【JAVA】接口杂谈:Java中的比较器(Comparator 接口)

这篇来介绍自定义类型对象的比较方法&#xff0c;利用Comparable 接口和 Comparator 接口。 目录 问题引入&#xff1a; 一、Comparable 接口 1.1比较学生的年龄 方法&#xff1a; 结果&#xff1a; 1.2比较学生的姓名 方法&#xff1a; 结果&#xff1a; 1.3 案例再…

数据结构 (19)二叉树

一、定义 二叉树&#xff08;Binary Tree&#xff09;是n个有限元素的集合&#xff0c;该集合或者为空、或者由一个称为根&#xff08;root&#xff09;的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成&#xff0c;是有序树。若集合为空&#xff0c;则称该二叉树为…

路由策略与路由控制实验

AR1、AR2、AR3在互联接口、Loopback0接口上激活OSPF。AR3、AR4属于IS-IS Area 49.0001&#xff0c;这两者都是Level-1路由器&#xff0c;AR3、AR4的系统ID采用0000.0000.000x格式&#xff0c;其中x为设备编号 AR1上存在三个业务网段A、B、C&#xff08;分别用Loopback1、2、3接…

Kubernetes集群操作

查看集群信息&#xff1a; kubectl get nodes 删除节点 &#xff08;⽆效且显示的也可以删除&#xff09; 后期如果 要删除某个节点&#xff0c;为了不增加其他节点的访问压力&#xff0c;先增加一个节点&#xff0c;再删除要删除的节点 语法 &#xff1a;kubect delete…

【C++】从零到一掌握红黑树:数据结构中的平衡之道

个人主页: 起名字真南的CSDN博客 个人专栏: 【数据结构初阶】 &#x1f4d8; 基础数据结构【C语言】 &#x1f4bb; C语言编程技巧【C】 &#x1f680; 进阶C【OJ题解】 &#x1f4dd; 题解精讲 目录 前言1 红黑树的概念**红黑树的五大性质** 2 红黑树的实现2.1 红黑树的结构…

支持ACME协议可免费申请SSL证书的多种渠道

目录 一、ACME 协议 二、ACMESSL可视化 三、ACME证书申请流程 三、ACME申请提交 四、使用 ACME 的好处 五、ACME总结 一、ACME 协议 ACME 协议是一种开放标准&#xff0c;旨在自动执行数字证书颁发和续订流程&#xff0c;它彻底改变了证书管理。ACME 的开发旨在简化整个…

Socket编程(TCP/UDP详解)

前言&#xff1a;之前因为做项目和找实习没得空&#xff0c;计算机网络模块并没有写成博客&#xff0c;最近得闲了&#xff0c;把计算机网络模块博客补上。 目录 一&#xff0c;UDP编程 1&#xff09;创建套接字 2&#xff09;绑定端口号 3&#xff09;发送与接收数据 4&…

【人工智能-科普】图神经网络(GNN):与传统神经网络的区别与优势

文章目录 图神经网络(GNN):与传统神经网络的区别与优势什么是图神经网络?图的基本概念GNN的工作原理GNN与传统神经网络的不同1. 数据结构的不同2. 信息传递方式的不同3. 模型的可扩展性4. 局部与全局信息的结合GNN的应用领域总结图神经网络(GNN):与传统神经网络的区别与…

【Git 工具】用 IntelliJ IDEA 玩转 Git 分支与版本管理

文章目录 一、使用 IDEA 配置和操作 Git1.1 查看 Idea 中的 Git 配置1.2 克隆 Github 项目到本地 二、版本管理2.1 提交并推送修改2.2 拉取远程仓库2.3 查看历史2.4 版本回退 三、分支管理3.1 新建分支3.2 切换分支3.2 合并分支3.4 Cherry-Pick 参考资料 一、使用 IDEA 配置和操…

shell编程(4)脚本与用户交互以及if条件判断

声明&#xff1a; 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&#…

架构-微服务-服务调用Dubbo

文章目录 前言一、Dubbo介绍1. 什么是Dubbo 二、实现1. 提供统一业务api2. 提供服务提供者3. 提供服务消费者 前言 服务调用方案--Dubbo‌ 基于 Java 的高性能 RPC分布式服务框架&#xff0c;致力于提供高性能和透明化的 RPC远程服务调用方案&#xff0c;以及SOA服务治理方案。…

【Python网络爬虫笔记】2-HTTP协议中网络爬虫需要的请求头和响应头内容

1 HTTP 协议整理 HTTP&#xff08;Hyper Text Transfer Protocol&#xff09;即超文本传输协议&#xff0c;是用于从万维网&#xff08;WWW&#xff09;服务器传输超文本到本地浏览器的传送协议&#xff0c;直白点儿&#xff0c;就是浏览器和服务器之间的数据交互就是通过 HTT…

TYUT设计模式大题

对比简单工厂&#xff0c;工厂方法&#xff0c;抽象工厂模式 比较安全组合模式和透明组合模式 安全组合模式容器节点有管理子部件的方法&#xff0c;而叶子节点没有&#xff0c;防止在用户在叶子节点上调用不适当的方法&#xff0c;保证了的安全性&#xff0c;防止叶子节点暴露…

SpringBoot集成Kafka和avro和Schema注册表

Schema注册表 为了提升kafka的性能&#xff0c;减少网络传输和存储的数据大小&#xff0c;可以把数据的schema部分单独存储到外部的schema注册表中&#xff0c;整体架构如下图所示&#xff1a; 1&#xff09;把所有数据需要用到的 schema 保存在注册表里&#xff0c;然后在记…

Wireshark 4.4.2:安全更新、错误修复、更新协议支持

流行的网络协议分析器Wireshark已更新至4.4.2版本。它可用于网络故障排除、分析、开发和教育。 已修复以下漏洞&#xff1a; wnpa-sec-2024-14 FiveCo RAP 解剖器无限循环。wnpa-sec-2024-15 ECMP 解析器崩溃。 更新的协议支持&#xff1a; ARTNET、ASN.1 PER、BACapp、B…

《Django 5 By Example》阅读笔记:p339-p358

《Django 5 By Example》学习第12天&#xff0c;p339-p358总结&#xff0c;总计20页。 一、技术总结 1.项目(购物网站) django-admin startproject myshop 虽然这里只是示例&#xff0c;但我觉得这种命名为 myxxx 的习惯非常不好&#xff0c;因为在实际应用中&#xff0c;是…

【简单好抄保姆级教学】javascript调用本地exe程序(谷歌,edge,百度,主流浏览器都可以使用....)

javascript调用本地exe程序 详细操作步骤结果 详细操作步骤 在本地创建一个txt文件依次输入 1.指明所使用注册表编程器版本 Windows Registry Editor Version 5.00这是脚本的第一行&#xff0c;指明了所使用的注册表编辑器版本。这是必需的&#xff0c;以确保脚本能够被正确解…