Steward v3.5.1 重磅发布 -- 开放 Steward API,新增插件编辑器,编写自己的 plugin
更新说明
插件编辑器 插件开发说明 – api 文档
代码包裹在 module.exports = function(steward) {}
中,steward 为注入的 api
{
chrome, // chrome api
util, // 工具 api
dayjs, // 日期库
axios, // http 库
constant // 常量
}
插件组成说明
{
id, // 开发者 id,比如邮箱或 github 账号
version, // 版本号
name, // 插件名,与 id 一起级成唯一识别 id(uid)
category: 'other', // 插件类别,暂时没用
icon, // 插件 icon
title, // 插件标题
commands, // 插件命令列表,不能为空
onInput, // 核心 api, 输入事件函数
onEnter // 核心 api,选中事件函数
};
NewTab 底部 button 组件化,默认显示
大幅优化安装包大小 从 2.4m 减小到 900k
3 回复
分享一个 ip search 插件,用的聚合搜索的 api,app_key 大家自行申请
module.exports = function(steward) {
const version = 1;
const id = 'solobat';
const name = 'IP Search';
const key = 'ip';
const type = 'keyword';
const icon = 'http://static.oksteward.com/ip.png';
const title = '查询 ip';
const subtitle = '输入 ipv4 地址,查询 ip 所在地点及运营商';
const commands = [{
key,
type,
title,
subtitle,
icon
}];
const APP_KEY = 'xxxxx';
const ipRegexp = /\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}\b/;
function searchIp(ip) {
const url = `http://apis.juhe.cn/ip/ip2addr?ip=${ip}&key=${APP_KEY}`;
return steward.axios.get(url);
}
function dataFormat(data) {
return [{
key,
icon,
title: `${data.area} -- ${data.location}`,
desc: '按 Enter 复制到剪贴板'
}];
}
function onInput(query, command) {
const str = query.trim();
if (str && ipRegexp.test(str)) {
return searchIp(str).then(results => {
const resp = results.data;
if (resp.resultcode == 200) {
return dataFormat(resp.result);
} else {
return [];
}
}).catch(results => {
return steward.util.getDefaultResult(command);
});
} else {
return steward.util.getDefaultResult(command);
}
}
function onEnter(item, command, query, shiftKey, list) {
steward.util.copyToClipboard(item.title, true);
}
return {
id,
version,
name,
category: 'other',
icon,
title,
commands,
onInput,
onEnter
};
}
awesome~