From 1084d92e0f5cea08c2b9d7a358aea91bd6fb0248 Mon Sep 17 00:00:00 2001 From: fofolee Date: Fri, 24 Jul 2020 18:02:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/helps/CHANGELOG.html | 2 +- src/helps/CHANGELOG.md | 8 +- src/helps/axios.html | 325 ++++++++++++++++++++++++++++++++++++ src/helps/quickcommand.html | 2 +- src/helps/quickcommand.md | 160 ++++++++++++------ 5 files changed, 440 insertions(+), 57 deletions(-) create mode 100644 src/helps/axios.html diff --git a/src/helps/CHANGELOG.html b/src/helps/CHANGELOG.html index 08abcb7..5986ff6 100644 --- a/src/helps/CHANGELOG.html +++ b/src/helps/CHANGELOG.html @@ -242,6 +242,6 @@ header, .context-menu, .megamenu-content, footer { font-family: var(--font-sans- -

v2.0.0

本次带来了 海量更新

更新后第一次进入插件会显示空白一段时间,是在对老版本的命令做兼容处理,属于正常现象

新增功能

分享中心

可以在线下载分享的命令

UfDkdS.png

暗黑模式

全面兼容暗黑模式

内置命令

内置文本处理find GUI执行 shell 命令等多个实用快捷命令,均使用新版本新增功能实现

UfrkOx.png

RunCode

新增一个脚本编辑器,可以直接进行脚本的编辑及测试

支持通过关键词或文件匹配方式进入

UfsGvR.png

帮助

新增一篇帮助文档

新增特性

匹配

环境

quickcommand

UfrpY4.png

其他脚本
custom

标签

变量

输出

平台

运行

编辑器

导入导出

其他

v1.6.1

v1.6.0

v1.5.9

v1.5.8

v1.5.7

JU0UAS.png

v1.5.1

v1.5.0

JU08Xt.png

功能更新

BUG 修复

用户体验

催更

v1.1.0

v1.0.0

v0.0.2

+

v2.0.0

本次带来了 海量更新,请仔细看完更新日志~

更新后第一次进入插件会显示空白一段时间,是在对老版本的命令做兼容处理,属于正常现象

新增功能

分享中心

可以在线下载分享的命令

UfDkdS.png

暗黑模式

全面兼容暗黑模式

内置命令

内置文本处理find GUI执行 shell 命令等多个实用快捷命令,均使用新版本新增功能实现

UfrkOx.png

RunCode

新增一个脚本编辑器,可以直接进行脚本的编辑及测试

支持通过关键词或文件匹配方式进入

UfsGvR.png

帮助

新增一篇帮助文档

多开

分离插件后可以多开

新增特性

匹配

环境

quickcommand

UfrpY4.png

其他脚本
custom

标签

变量

输出

平台

运行

编辑器

导入导出

其他

v1.6.1

v1.6.0

v1.5.9

v1.5.8

v1.5.7

JU0UAS.png

v1.5.1

v1.5.0

JU08Xt.png

功能更新

BUG 修复

用户体验

催更

v1.1.0

v1.0.0

v0.0.2

\ No newline at end of file diff --git a/src/helps/CHANGELOG.md b/src/helps/CHANGELOG.md index 82d0e37..0ad4906 100644 --- a/src/helps/CHANGELOG.md +++ b/src/helps/CHANGELOG.md @@ -1,6 +1,6 @@ ## v2.0.0 -本次带来了 海量更新 +本次带来了 海量更新,请仔细看完更新日志~ **更新后第一次进入插件会显示空白一段时间,是在对老版本的命令做兼容处理,属于正常现象** @@ -34,6 +34,10 @@ 新增一篇[帮助文档](./HELP.html) +#### 多开 + +分离插件后可以多开 + ### 新增特性 #### 匹配 @@ -55,7 +59,7 @@ - 重写延时函数,解决 utools 隐藏后延时不准的问题(其实是 electron 的问题) - [API 文档](./quickcommand.html) -![UfrpY4.png](https://s1.ax1x.com/2020/07/20/UfrpY4.png) +![UfrpY4.png](https://i.imgur.com/Gn7pr27.png) ##### 其他脚本 diff --git a/src/helps/axios.html b/src/helps/axios.html new file mode 100644 index 0000000..07cd838 --- /dev/null +++ b/src/helps/axios.html @@ -0,0 +1,325 @@ + + + + +README + + +

 

axios

npm version +build status +code coverage +npm downloads +gitter chat +code helpers

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。

特性

浏览器支持

ChromeFirefoxSafariOperaEdgeIE 
Latest ✔Latest ✔Latest ✔Latest ✔Latest ✔8+ ✔ 

Browser Matrix

安装

使用 npm:

使用 bower:

使用 cdn:

案例

执行 GET 请求

执行 POST 请求

执行多个并发请求

axios API

可以通过向 axios 传递相关配置来创建请求

axios(config)
axios(url[, config])

请求方法的别名

为方便起见,为所有支持的请求方法提供了别名

axios.request(config)
axios.get(url[, config])
axios.delete(url[, config])
axios.head(url[, config])
axios.options(url[, config])
axios.post(url[, data[, config]])
axios.put(url[, data[, config]])
axios.patch(url[, data[, config]])
注意

在使用别名方法时, urlmethoddata 这些属性都不必在配置中指定。

并发

处理并发请求的助手函数

axios.all(iterable)
axios.spread(callback)

创建实例

可以使用自定义配置新建一个 axios 实例

axios.create([config])

实例方法

以下是可用的实例方法。指定的配置将与实例的配置合并。

axios#request(config)
axios#get(url[, config])
axios#delete(url[, config])
axios#head(url[, config])
axios#options(url[, config])
axios#post(url[, data[, config]])
axios#put(url[, data[, config]])
axios#patch(url[, data[, config]])

请求配置

这些是创建请求时可以用的配置选项。只有 url 是必需的。如果没有指定 method,请求将默认使用 get 方法。

响应结构

某个请求的响应包含以下信息

使用 then 时,你将接收下面这样的响应 :

在使用 catch 时,或传递 rejection callback 作为 then 的第二个参数时,响应可以通过 error 对象可被使用,正如在错误处理这一节所讲。

配置默认值

你可以指定将被用在各个请求的配置默认值

全局的 axios 默认值

自定义实例默认值

配置的优先顺序

配置会以一个优先顺序进行合并。这个顺序是:在 lib/defaults.js 找到的库的默认值,然后是实例的 defaults 属性,最后是请求的 config 参数。后者将优先于前者。这里是一个例子:

拦截器

在请求或响应被 then 或 catch 处理前拦截它们。

如果你想在稍后移除拦截器,可以这样:

可以为自定义 axios 实例添加拦截器

错误处理

Y可以使用 validateStatus 配置选项定义一个自定义 HTTP 状态码的错误范围。

取消

使用 cancel token 取消请求

Axios 的 cancel token API 基于cancelable promises proposal,它还处于第一阶段。

可以使用 CancelToken.source 工厂方法创建 cancel token,像这样:

还可以通过传递一个 executor 函数到 CancelToken 的构造函数来创建 cancel token:

注意: 可以使用同一个 cancel token 取消多个请求

使用 application/x-www-form-urlencoded format

默认情况下,axios将JavaScript对象序列化为JSON。 要以application / x-www-form-urlencoded格式发送数据,您可以使用以下选项之一。

浏览器

在浏览器中,您可以使用URLSearchParams API,如下所示:

请注意,所有浏览器都不支持URLSearchParams(请参阅caniuse.com),但可以使用polyfill(确保填充全局环境)。

或者,您可以使用qs库编码数据:

或者以另一种方式(ES6),

Node.js

在node.js中,您可以使用querystring模块,如下所示:

您也可以使用qs库。

Semver

在axios达到1.0版本之前,破坏性更改将以新的次要版本发布。 例如0.5.1和0.5.4将具有相同的API,但0.6.0将具有重大变化。

Promises

axios 依赖原生的 ES6 Promise 实现而被支持. 如果你的环境不支持 ES6 Promise,你可以使用 polyfill.

TypeScript

axios包括TypeScript定义。

资源

Credits

axios深受Angular提供的、$http服务的启发。 最终,axios是为了在Angular之外使用而提供独立的类似$http服的务。

协议

MIT

+ + \ No newline at end of file diff --git a/src/helps/quickcommand.html b/src/helps/quickcommand.html index 6704034..76d770c 100644 --- a/src/helps/quickcommand.html +++ b/src/helps/quickcommand.html @@ -315,6 +315,6 @@ header, .context-menu, .megamenu-content, footer { font-family: var(--font-sans- -

quickcommand

showButtonBox(buttons, title)

显示一个按钮对话框,用来接收用户的输入

示例

实例

showInputBox(placeHolders, title)

显示一个输入框界面,用来接用户的输入

示例

实例

showSelectList(selects, options)

显示一个支持搜索的且可以动态更新的选项列表

当指定optionTypejson时,类似于插件开发的列表模式titledescriptionicon分别表示标题、描述和图标,其中title为必备属性

示例

实例

updateSelectList(opt, id)

动态更新当前的选项列表的选项。

示例

showTextAera(placeholder)

显示一个文本框界面,用来接用户的输入

示例

实例

showMessageBox(message, icon, time)

显示一个自动消失的提示框

示例

showConfirmBox(title)

显示一个确认框

sleep(ms)

由于setTimeout在electron中存在限制,在隐藏到后台时不会被执行,在vm2中也有bug,所以在quickcommand的环境下被禁用了,但对于模拟按键之类的场景,延迟是不可缺少的,所以提供了sleep函数来解决这个问题

示例

setTimeout(callback, ms)

用法和setTimeout一样,但实现原理不一样,sleep的异步版本

示例

htmlParse(html)

将给定的html字符串解析为DOM对象,用于快速编写爬虫脚本

示例

downloadFile(url, defaultPath, showDialog)

下载文件,也可单纯用于http请求,无论defaultPath是否定义,都将得到响应内容的Buffer,当showDialogfalse且定义了defaultPath时,会下载文件为`defaultPath,当showDialogtrue时,会弹出保存文件对话框,defaultPath为对话框默认显示的文件名

payload

当匹配模式为关键字时,返回进入插件的关键字;为正则时,返回匹配的文本;为窗口时,返回匹配的窗口信息;为文件时,返回匹配的文件信息

示例

kill(pid, signal)

signal 发送给 pid 标识的进程 , 默认为关闭进程,同process.kill

示例

simulateCopy()

模拟复制操作

simulatePaste()

模拟粘贴操作

上下文一览

nodejs

electron

utools

quickcommand

 

+

quickcommand

❖ UI 交互

showButtonBox(buttons, title)

显示一个按钮对话框,用来接收用户的输入

示例

实例

showInputBox(placeHolders, title)

显示一个输入框界面,用来接用户的输入

示例

实例

showSelectList(selects, options)

显示一个支持搜索的且可以动态更新的选项列表

当指定optionTypejson时,类似于插件开发的列表模式titledescriptionicon分别表示标题、描述和图标,其中title为必备属性

示例

实例

updateSelectList(opt, id)

动态更新当前的选项列表的选项。

示例

showTextAera(placeholder)

显示一个文本框界面,用来接用户的输入

示例

实例

showMessageBox(message, icon, time)

显示一个自动消失的提示框

示例

showConfirmBox(title)

显示一个确认框

❖ 延时函数

sleep(ms)

由于setTimeout在electron中存在限制,在隐藏到后台时不会被执行,在vm2中也有bug,所以在quickcommand的环境下被禁用了,但对于模拟按键之类的场景,延迟是不可缺少的,所以提供了sleep函数来解决这个问题

示例

setTimeout(callback, ms)

用法和setTimeout一样,但实现原理不一样,sleep的异步版本

示例

❖ 前端封装

htmlParse(html)

将给定的html字符串解析为DOM对象,用于快速编写爬虫脚本

示例

downloadFile(url, file | options)

下载文件,可选直接下载到指定路径,或者弹出对话框选择下载路径

uploadFile(url, file | options, name, formData)

上传文件,可以直接上传指定文件,或者弹出对话框选择要上传的文件,可以自定义表单数据

❖ nodejs 封装

loadRemoteScript(url)

加载一个远程脚本文件

kill(pid, signal)

signal 发送给 pid 标识的进程 , 默认为关闭进程,同process.kill

示例

❖ utools 封装

payload

当匹配模式为关键字时,返回进入插件的关键字;为正则时,返回匹配的文本;为窗口时,返回匹配的窗口信息;为文件时,返回匹配的文件信息

示例

simulateCopy()

模拟复制操作

simulatePaste()

模拟粘贴操作

其他

nodejs

文档

❖ 上下文

electron

文档

❖ 上下文

utools

文档

❖ 上下文

 

\ No newline at end of file diff --git a/src/helps/quickcommand.md b/src/helps/quickcommand.md index d7c016c..5cc5e8c 100644 --- a/src/helps/quickcommand.md +++ b/src/helps/quickcommand.md @@ -2,6 +2,8 @@ ## quickcommand +### ❖ UI 交互 + #### `showButtonBox(buttons, title)` - buttons: Array 每一个元素对应一个按钮 @@ -253,6 +255,8 @@ quickcommand.showConfirmBox().then(confirmed => { }) ``` +### ❖ 延时函数 + ####`sleep(ms)` - ms: Integer 等待的毫秒 @@ -281,7 +285,10 @@ quickcommand.setTimeout(()=>{ console.log('2000毫秒后执行') }, 2000) ``` +### ❖ 前端封装 + ####`htmlParse(html)` + - html: String 需要解析的`html`文本 - 返回: Object `DOM`对象 @@ -295,41 +302,75 @@ var href = quickcommand.htmlParse(html).querySelector('a').href console.log(`解析出来的a标签地址为${href}`) ``` -#### `downloadFile(url, defaultPath, showDialog)` +#### `downloadFile(url, file | options)` - url: String 地址 -- defaultPath: String | undefined 当`showDialog`为`false`时,表示下载文件的绝对路径,当`showDialog`为`true`时,表示对话框默认显示的文件名 -- showDialog: Boolean | undefined 是否弹出对话框 ,默认为`false` +- file | options : + - file: String 当赋值为文件路径时,则表示下载文件的绝对路径 + - options: Object | undefined 不赋值时,则会弹出对话框要求选择下载到的路径, 赋值为 `Object `时,表示弹出对话框的 `options `,格式和 `utools.showSaveDialog` 中的 `options `一致 - 返回: Promise - - content: Buffer 网络响应内容的`Buffer ` + - content: Buffer 文件的内容 -下载文件,也可单纯用于`http`请求,无论`defaultPath`是否定义,都将得到响应内容的`Buffer`,当`showDialog`为`false`且定义了`defaultPath`时,会下载文件为``defaultPath`,当`showDialog`为`true`时,会弹出保存文件对话框,`defaultPath`为对话框默认显示的文件名 +下载文件,可选直接下载到指定路径,或者弹出对话框选择下载路径 ```js -// 返回http响应内容 -quickcommand.downloadFile('https://www.baidu.com').then(r=>{ - console.log(r.toString()) -}) - // 下载文件到D:/ quickcommand.downloadFile('https://res.u-tools.cn/currentversion/uTools-1.1.3.exe', 'D:/') // 下载文件,并弹出对话框询问保存路径 -quickcommand.downloadFile('https://res.u-tools.cn/currentversion/uTools-1.1.3.exe', 'uTools.exe', true) +quickcommand.downloadFile('https://res.u-tools.cn/currentversion/uTools-1.1.3.exe') ``` -#### `payload` +#### `uploadFile(url, file | options, name, formData)` -- String 对应`utools.onPluginEnter`的 `payload` +- url: String 地址 +- file | options : + - file: String 当赋值为文件路径时,则表示要上传的文件的绝对路径 + - options: Object | undefined 不赋值时,则会弹出对话框要求选择要上传的文件的路径, 赋值为 `Object `时,表示弹出对话框的 `options `,格式和 `utools.showOpenDialog` 中的 `options `一致 +- name: String | undefined 文件名,默认为`file` +- formData: Object | undefined 其他需要添加的表单数据 +- 返回: Promise + - response: Object 响应内容 -当匹配模式为`关键字`时,返回进入插件的关键字;为`正则`时,返回匹配的文本;为`窗口`时,返回匹配的窗口信息;为`文件`时,返回匹配的文件信息 - - **示例** +上传文件,可以直接上传指定文件,或者弹出对话框选择要上传的文件,可以自定义表单数据 ```js -// 匹配模式为正则/划词时 -var text = quickcommand.payload -console.log(`主输入框匹配的文本为${text}`) +// 上传图片到图床 +quickcommand.uploadFile("https://imgkr.com/api/v2/files/upload", "C:\\test.jpg").then(res=>{ + console.log('上传成功,图片地址为:' + res.data.data) +}) + +// 包含额外表单数据 +quickcommand.uploadFile("https://catbox.moe/user/api.php", "C:\\test.jpg", 'fileToUpload', { + "reqtype": "fileupload" +}).then(res=>{ + console.log('上传成功,图片地址为:' + res.data) +}) +``` + +### ❖ nodejs 封装 + +#### `loadRemoteScript(url)` + +- url: String 脚本地址 + +- 返回: Promise + - Object: Object 返回从远程脚本加载的对象 + +加载一个远程脚本文件 + +```js +let remote = 'https://cdn.jsdelivr.net/npm/sweetalert2@9' +quickcommand.loadRemoteScript(remote).then(swal => { + swal.fire('已加载 sweetalert2 并成功弹窗') +}) + +// async/await +(async () => { + let remote = 'https://cdn.jsdelivr.net/npm/sweetalert2@9' + const swal = await quickcommand.loadRemoteScript(remote) + swal.fire('已加载 sweetalert2 并成功弹窗') +})() ``` #### `kill(pid, signal)` @@ -345,6 +386,22 @@ console.log(`主输入框匹配的文本为${text}`) quickcommand.kill(16084) ``` +### ❖ utools 封装 + +#### `payload` + +- String 对应`utools.onPluginEnter`的 `payload` + +当匹配模式为`关键字`时,返回进入插件的关键字;为`正则`时,返回匹配的文本;为`窗口`时,返回匹配的窗口信息;为`文件`时,返回匹配的文件信息 + + **示例** + +```js +// 匹配模式为正则/划词时 +var text = quickcommand.payload +console.log(`主输入框匹配的文本为${text}`) +``` + #### `simulateCopy()` 模拟复制操作 @@ -353,23 +410,34 @@ quickcommand.kill(16084) 模拟粘贴操作 -## 上下文一览 +## 其他 -#### nodejs +### nodejs -- [文档]( http://nodejs.cn/api/ ) +#### ❖ 文档 -- **require** -- **os**: {arch: *ƒ*, cpus: *ƒ*, endianness: *ƒ*, freemem: *ƒ*, getPriority: *ƒ*, …} -- **fs**: {appendFile: *ƒ*, appendFileSync: *ƒ*, access: *ƒ*, accessSync: *ƒ*, chown: *ƒ*, …} -- **path**: {resolve: *ƒ*, normalize: *ƒ*, isAbsolute: *ƒ*, join: *ƒ*, relative: *ƒ*, …} -- **child_process**: {_forkChild: *ƒ*, ChildProcess: *ƒ*, exec: *ƒ*, execFile: *ƒ*, execFileSync: *ƒ*, …} -- **util**: {_errnoException: *ƒ*, _exceptionWithHostPort: *ƒ*, _extend: *ƒ*, callbackify: *ƒ*, debuglog: *ƒ*, …} -- **axios** [文档]( https://www.kancloud.cn/yunye/axios/234845) +#### ❖ 上下文 -#### electron + - **require**: *ƒ require(path)* + - **os**: {arch: *ƒ*, cpus: *ƒ*, endianness: *ƒ*, freemem: *ƒ*, getPriority: *ƒ*, …} + - **fs**: {appendFile: *ƒ*, appendFileSync: *ƒ*, access: *ƒ*, accessSync: *ƒ*, chown: *ƒ*, …} + - **path**: {resolve: *ƒ*, normalize: *ƒ*, isAbsolute: *ƒ*, join: *ƒ*, relative: *ƒ*, …} + - **child_process**: {_forkChild: *ƒ*, ChildProcess: *ƒ*, exec: *ƒ*, execFile: *ƒ*, execFileSync: *ƒ*, …} + - **util**: {_errnoException: *ƒ*, _exceptionWithHostPort: *ƒ*, _extend: *ƒ*, callbackify: *ƒ*, debuglog: *ƒ*, …} + - **Buffer**: *ƒ Buffer(arg, encodingOrOffset, length)* + - **process**: process {version: "v12.14.1", versions: {…}, arch: "x64", …} + - **TextDecoder**: *ƒ TextDecoder()* + - **TextEncoder**: *ƒ TextEncoder()* + - **URL**: *ƒ URL()* + - **URLSearchParams**: *ƒ URLSearchParams()* + - **axios**: *ƒ* *wrap()* + - [文档](./axios.html) -- [文档]( http://www.electronjs.org/docs ) +### electron + +#### ❖ 文档 + +#### ❖ 上下文 - **clipboard**: Object - **contextBridge**: Object @@ -379,30 +447,16 @@ quickcommand.kill(16084) - **nativeImage**: Object - **shell**: Object - **webFrame**: WebFrame -#### utools - - [文档]( https://u.tools/docs/developer/api.html ) - - all except below - - ~~db~~ - - ~~removeFeature~~ - - ~~setFeature~~ +### utools -#### quickcommand +#### ❖ 文档 - - **downloadFile**: *ƒ (url, defaultPath = '', showDialog = false)* - - **htmlParse**: *ƒ (html)* - - **kill**: *ƒ (pid, signal = 'SIGTERM')* - - **payload**: "" - - **setTimeout**: *ƒ (callback, ms)* - - **showButtonBox**: *ƒ (buttons, title='')* - - **showConfirmBox**: *ƒ (title)* - - **showInputBox**: *ƒ (placeHolders, title='')* - - **showMessageBox**: *ƒ (title, icon = "success", time = 3000)* - - **showSelectList**: *ƒ (selects, opt = {})* - - **showTextAera**: *ƒ (placeholder = "")* - - **simulateCopy**: *ƒ ()* - - **simulatePaste**: *ƒ ()* - - **sleep**: *ƒ (ms)* - - **updateSelectList**: *ƒ (opt, id)* +#### ❖ 上下文 + +- all except below +- ~~db~~ +- ~~removeFeature~~ +- ~~setFeature~~