SDK
Fxd SDK Package
fxd-sdk
npm package 包含了 FxdSdk 类 和一些辅助函数:
Fxd SDK 类
- 构造函数
-
用途:SDK 的主类
-
构造函数参数:
- packageInfo:对象类型,包信息,可选
constructor(packageInfo = null) { if (!packageInfo) packageInfo = readPackageSync(); this.apiBase = API_URL; this.token = null; this.loadToken(); this.name = packageInfo.name || this.constructor.name; this.displayName = packageInfo.displayName || this.name ; this.args = packageInfo.meta?.args || []; const dbFolder = path.resolve(process.env.HOME, '.fxd', 'db'); const dbFile = path.resolve(dbFolder, `${this.name}.json`); const dbConfig = new Config(dbFile, true, true); this.db = new JsonDB(dbConfig); }
- setValue 方法
- 用途:设置数据
- 参数:
- key:字符串,键名,必填
- value:任意类型,值,必填
- overwrite:布尔类型,是否覆盖,可选,默认为 true
- getValue 方法
- 用途:获取数据
- 参数:
- key:字符串,键名,必填
- setToken 方法
- 用途:设置 token
- 参数:
- token:字符串,token 值,必填
- saveToken 方法
- 用途:保存 token 到文件
- 参数:
- token:字符串,token 值,必填
- loadToken 方法
- 用途:从文件加载 token
- 参数:无
- cleanToken 方法
- 用途:清除保存的 token
- 参数:无
- _request 方法
- 用途:发起请求
- 参数:
- method:字符串,请求方法,必填
- path:字符串,路径,必填
- data:对象,数据,可选
- profile 方法
- 用途:获取 profile
- 参数:无
- sha1 方法
- 用途:计算 sha1 值
- 参数:
- string:字符串,输入内容,必填
- scSend 方法
- 用途:发送Server酱消息
- 参数:
- text:字符串,文本内容,必填
- desp:字符串,消息内容,可选
- key:字符串,Server酱的key,可选
辅助函数
- getDirname 函数
- 用途:获取目录名
- 参数:
- filePath:字符串,文件路径,必填
- getPackageInfo 函数
- 用途:获取 package.json 信息
- 参数:
- filePath:字符串,文件路径,必填
- myFetch 函数
- 用途:扩展 fetch,添加 try catch 和超时
- 参数:
- url:字符串,请求地址,必填
- options:对象,选项,必填
- timeout:数字,超时时间,可选,默认 5 秒
SDK 的方法在所有的 Fxd APP 中都可以通过 this.sdk.method(args)
的方式来调用。
核心应用 fxd-app-core
fxd-app-core
使用 fxd-sdk
完成一些辅助功能,同时提供 run
方法作为入口。也包含了一些命令行和云端需要使用的内部命令,比如 list
(显示本地保存的命令列表,以避免重复输入),login
(登入到云端,以使用云端能力)。所有内部命令在命令行下使用时,均以 _
开头,如 fxd _login
。
初始化
constructor()
{
this.sdk = new fxdsdk(getpackageinfo(import.meta.url));
// 参数获取方法 this.get依赖于this.sdk.args,因此只要使用 this.get 的程序都需要在构造函数中加入上边这行
// ...
}
fxd-app-core 的其他方法和函数
FxdApp 的方法
- run 方法
- 用途:处理命令行参数,调用对应命令的处理函数
- 参数:
- params:数组,命令行参数
- opts:对象,选项参数
- raw:布尔值,是否原始模式
- 返回值:无
- list 方法
- 用途:列出保存的命令
- 参数:无
- 返回值:布尔值,表示是否成功
- exe 方法
- 用途:执行保存的某条命令
- 参数:
- index:数字,命令索引值
- 返回值:无
- exec 方法
- 用途:执行保存的某条命令
- 参数:
- index:数字,命令索引值
- 返回值:无
- login方法
- 用途:登录
- 参数:
- args:数组,参数
- opts:对象,选项参数
- token:字符串,登录 token
- 返回值:无
- logout方法
- 用途:退出登录
- 参数:无
- 返回值:无
- profile方法
- 用途:获取用户信息
- 参数:无
- 返回值:用户信息对象
- echoError方法
- 用途:显示错误信息
- 参数:
- msg:字符串,错误信息
- 返回值:无
- help方法
- 用途:显示帮助信息
- 参数:无
- 返回值:无
- setDefaultOpts方法
- 用途:设置默认选项参数
- 参数:
- opts:对象,要设置的默认选项参数
- 返回值:无
- setDefaultCommand方法
- 用途:设置默认命令
- 参数:
- command:字符串,要设置的默认命令
- 返回值:无
- get方法
- 用途:获取参数值
- 参数:
- key:字符串,参数名
- opts:对象,选项参数
- command:字符串,命令名
- 返回值:参数值
- log方法
- 用途:打印日志
- 参数:任意个要打印的日志内容
- 返回值:无
- return方法
- 用途:统一输出最终结果
- 参数:
- ret:任意类型,要输出的结果
- 返回值:传入的结果
- feedPublish方法
- 用途:发布feed
- 参数:
- content:字符串,feed内容
- meta:对象,feed元信息
- is_public:布尔值,是否公开
- command:字符串,命令名
- 返回值:布尔值,表示是否成功
- feedRemove方法
- 用途:删除已发布的feed
- 参数:
- id:字符串,feed的id
- 返回值:布尔值,表示是否成功
辅助函数
- mergeProps函数
- 用途:合并属性
- 参数:
- oldObject:对象,原有对象
- props:字符串,属性定义
- 返回值:合并后的新对象
mergeProps函数主要用于派生类选择性的继承父类写在 Package.json
中的参数定义等信息。
比如, fxd-app-check-chan
在 Package.json
中定义了参数:
{
"name": "fxd-app-check-chan",
//...
},
"meta":
{
"args":
{
"watch":
{
"sendkey": {
"name": "sendkey",
"description": "检测到变化时发送消息的发送键",
"type": "string",
"example": "abcdefg1234"
},
"feed_publish":
{
"name": "feed_publish",
"description": "是否发布为RSS Feed",
"type": "boolean",
"default": false,
"example": "true"
}
},
"main|check":
{
"url": {
"name": "url",
"description": "要打开的页面 URL",
"type": "string",
"required": true,
"example": "https://www.example.com"
}
// ...
}
}
}
fxd-app-douyin-count
继承于它,但不想重复在 Package.json
中书写参数定义,那么可以在构造函数中如下处理:
constructor() {
super();
const oldArgsSettings = this.sdk.args; // 获得父类的参数定义
this.sdk = new FxdSdk(getPackageInfo(import.meta.url));
// 使用 mergeProps 用父类定义中选择性复制部分
this.sdk.args = this.mergeProps(oldArgsSettings,[
'watch',// watch 下的全部属性
'main|check.-selectors,prejs' // 排除 main|check 属性下的 selectors,prejs 属性
]);
}