DataviewJS 脚本间的「函数」复用方法
在一个 DataviewJS
脚本中,如何复用另一个脚本的「函数」?
「函数」复用可以通过如下两行代码来实现
- 模块导入
const functionName = await new Promise(resolve=>dv.view(modulePath, resolve))
- 模块导出
input(functionName)
下面是一个例子
一个脚本
main.js
获取并调用另一个脚本get-greeting.js
内部的getGreeting
函数
main.js
/**
* @name main.js
* @description 主脚本(其类型是 DataviewJS 脚本)
*/
// 导入函数 getGreeting
/** @function */
const getGreeting = await new Promise(resolve=>dv.view("get-greeting", resolve))
// 测试函数 getGreeting, 从而输出函数返回值
console.log(getGreeting("world"))
// 输出函数返回值 hello, world
get-greeting.js
/**
* @name get-greeting.js
* @description 被调模块(其类型是 DataviewJS 脚本)
*/
/**
* @param {string} audience
* @return {string}
*/
function getGreeting(audience){
return "hello, " + audience
}
// 导出函数 getGreeting
input(getGreeting)
方法优点:快速原型开发
通过“构建—反馈—优化”的循环,可以快速提升脚本成品与自己需求的契合度,尤其适用于高不确定性的项目。
方法缺点:软件工程问题和性能问题
JavaScript
不像 TypeScript
那样适合拿来开发大型项目,可能会引起软件工程问题
并且,在每次导入函数时,都会生成一次函数对象,可能会引起性能问题
未来可能:函数入库
如果脚本中的函数有维护的价值,那么可以考虑将其加入自己插件项目的代码库(使用 TypeScript
开发的插件项目)