回答
在 Hamibot 中,主脚本可以通过 require() 函数来引入其他 JavaScript 文件。被引入的文件可以是一个模块化的脚本,通过 module.exports 导出变量或函数,供主脚本使用。
基本语法:
// 文档地址 https://docs.hamibot.com/
var 模块 = require("路径");
示例:
假设你有一个工具脚本文件放在 /sdcard/脚本/utils.js,内容如下:
// /sdcard/脚本/utils.js
function add(a, b) {
return a + b;
}
function greet(name) {
toast("Hello, " + name);
}
// 导出函数
module.exports = {
add: add,
greet: greet
};
在主脚本中引入并使用它:
// 文档地址 https://docs.hamibot.com/
// 引入 utils.js 模块
var utils = require("/sdcard/脚本/utils.js");
// 使用导出的函数
toast("5 + 3 = " + utils.add(5, 3));
utils.greet("Hamibot");
注意事项:
require()的参数是.js文件的完整路径。- 被引入的文件必须使用
module.exports显式导出需要使用的变量或函数。 require()是同步操作,会阻塞后续代码直到模块加载完成。- 所有
require()加载的模块在同一个运行环境中共享全局状态,但每个脚本的局部变量不会互相影响。 - 推荐将可复用的功能封装成模块,提高脚本的可维护性和可读性。
你可以将公共函数、配置、工具类等拆分到不同文件中,通过 require 组织项目结构。
补充回答 1
在 Hamibot 中,主脚本 A 可以通过 require() 函数来引入辅助脚本 B 和 C。每个被引入的脚本需要使用 module.exports 导出所需的功能(如函数、对象等),然后在主脚本中加载并使用。
文件结构假设:
- 主脚本 A:
/sdcard/脚本/主脚本.js - 辅助脚本 B:
/sdcard/脚本/辅助B.js - 辅助脚本 C:
/sdcard/脚本/辅助C.js
步骤 1:编写辅助脚本 B
// /sdcard/脚本/辅助B.js
function taskB() {
toast("执行辅助脚本 B 的任务");
}
function getDataFromB() {
return "来自 B 的数据";
}
module.exports = {
taskB: taskB,
getDataFromB: getDataFromB
};
步骤 2:编写辅助脚本 C
// /sdcard/脚本/辅助C.js
function taskC() {
log("执行辅助脚本 C 的操作");
}
var config = {
retryCount: 3,
timeout: 5000
};
module.exports = {
taskC: taskC,
config: config
};
步骤 3:在主脚本 A 中引入 B 和 C
// 文档地址 https://docs.hamibot.com/
// 引入辅助脚本 B 和 C
var scriptB = require("/sdcard/脚本/辅助B.js");
var scriptC = require("/sdcard/脚本/辅助C.js");
// 使用它们的功能
scriptB.taskB();
log(scriptB.getDataFromB());
scriptC.taskC();
log("重试次数: " + scriptC.config.retryCount);
注意事项:
- 路径必须是绝对路径,推荐将脚本统一放在
/sdcard/脚本/目录下便于管理。 - 每个
require的脚本都会被执行一次,并缓存结果,多次引入不会重复执行。 - 确保导出和引入的语法正确,不能使用 ES6 模块语法(如
export/import),Hamibot 使用的是 CommonJS 模块系统。 - 如果脚本文件名或路径有误,会抛出异常,建议检查文件是否存在以及路径是否拼写正确。
这样你就可以清晰地组织多个脚本,实现功能解耦和复用。
ℹ️ 本回答由 AI 生成,内容仅供参考