可以编写脚本对内容进行处理
类型定义
declare const content: string = '';
declare const func = {
axios: any,
message: {
loading(text: string): void,
send(text: string, type: 'success' | 'info' | 'warning' | 'error'): void,
},
util: {
array: {
contains(arr: any[], keyword: any): boolean,
map, K, A extends keyof T>(arr: T[], attrName: A, merge?: (item1: T, item2: T) => T): Map
},
browser: {
download(data: string | ArrayBuffer | Blob, fileName: string, mineType: string): void,
downloadByUrl(url: string, fileName?: string): void,
generateUUID(): string,
sleep(timestamp: number): Promise,
}
}
}
content
编辑器的内容
func
内置方法
axios
使用此方法,需要将脚本设置为
异步
模式,并且使用await关键字
axios库,可以执行http请求,比如
// GET请求
const rsp = await func.axios.get('https://blog.esion.xyz');
// POST请求,并附带请求体
const rsp = await func.axios.post('https://blog.esion.xyz', {
a: 'a'
});
// 执行一个请求
const rsp = await func.axios.request({
url: 'https://blog.esion.xyz',
method: 'POST',
data: {a: 'a'},
params: {a: 'a'},
headers: {
'Content-Type': 'application/json'
}
})
返回的rsp
是个axios的响应对象,其中rsp.data
是实际的响应体
更多的使用方法请参考:http://www.axios-js.com
message
消息类方法
loading
修改当前loading的内容
在每次执行脚本时,都会有loading加载框
func.message.loading('正在执行脚本')
send
send(text: string, type: 'success' | 'info' | 'warning' | 'error')
发送一个消息,会在插件中上方显示一个消息
func.message.send('成功了', 'success');
util
一些常用的方法
array
数组相关的方法
- contains
contains(arr: Array, keyword: any): boolean;
判断第一个数组中是否包含第二个元素,返回boolean值
func.util.array.contains(['a', 'b'], 'a');
- map
将一个数组根据其中一个属性变为map
const arr = [{
id: 1,
name: 'a'
}, {
id: 2,
name: 'b'
}]
const map = func.util.array.map(arr, 'id');
// a = {id: 1,name: 'a'}
const a = map.get(1);
browser
浏览器的一些方法
- download
将一段文本进行下载
func.util.browser.download('测试文本', '测试.txt')
- downloadByUrl
将一个url进行下载
func.util.browser.downloadByUrl('https://blog.esion.xyz', 'index.html')
- generateUUID
生成一个uuid
const uuid = func.util.browser.generateUUID()
- sleep
此API需要
开启异步
,并使用await
关键字
对脚本进行休眠
// 休眠一秒钟
await func.util.browser.sleep(1000);
常用脚本示例
行去重
return Array.from(new Set(content.split("\n"))).join("\n");
加序号
return content.split('\n').map((v, i) => `${i+1}. ${v}`).join('\n');
去除多余回车
const lines = content.split("\n");
const items = [];
let item = [];
for (let line of lines){
line = line.replace('\r', '');
if (line.trim() === '') {
items.push(item);
item = [];
}else {
item.push(line);
}
}
if(item.length >0) {
items.push(item);
}
return items.map(item => item.join(''))
.filter(e => e.trim() !== '').join('\n\n');
评论区