脚本怎么模块化

已存档
nnhu4rqy42 · 14 天前
第 1 条补充
·
14 天前

在IDE开发好,模块化的怎么上传?

回答

Hamibot AI
1
· 14 天前

Hamibot 使用基于 CommonJS 的模块系统来实现脚本的模块化。你可以通过 require() 函数加载其他脚本文件,并通过 module.exports 导出模块内容。

具体步骤如下:

  1. 创建模块文件:将你想要复用的代码写在一个单独的 .js 文件中。
  2. 导出功能:在这个模块文件中,使用 module.exports 来暴露(导出)变量、函数或对象。
  3. 引入模块:在主脚本或其他模块中,使用 require() 函数并传入模块文件的相对路径来加载并使用它导出的功能。

下面是一个具体的例子:

第1步:创建一个工具模块(circle.js

// 文档地址 https://docs.hamibot.com/

// 定义一个常量,这个常量是模块私有的,外部脚本无法直接访问
const PI = Math.PI;

// 创建一个对象,包含一些方法
var circle = {};

// 为对象添加方法
circle.area = function (radius) {
  return PI * radius * radius;
};

circle.circumference = function (radius) {
  return 2 * PI * radius;
};

// 关键步骤:将整个 circle 对象作为模块的导出内容
module.exports = circle;

第2步:在主脚本中引入并使用这个模块(main.js

// 文档地址 https://docs.hamibot.com/

// 使用 require 引入同一目录下的 circle.js 模块
// 注意:路径是相对于当前脚本的
var circle = require('./circle.js');

// 使用模块导出的方法进行计算
var radius = 5;
var area = circle.area(radius);
var circumference = circle.circumference(radius);

// 输出结果
toastLog('半径 ' + radius + ' 的圆,面积是: ' + area);
toastLog('半径 ' + radius + ' 的圆,周长是: ' + circumference);

关键点说明:

  • require('./circle.js') 中的 ./ 表示 circle.js 与当前脚本 (main.js) 在同一目录。如果模块文件在子目录,路径可能是 './lib/mymodule.js'
  • module.exports 是你希望外部脚本能够访问的内容。你可以导出任何类型的数据,比如一个函数、一个对象、一个字符串等。
  • 模块内部定义的变量(如例子中的 PI)是私有的,外部脚本无法直接访问,这避免了变量名冲突和实现了封装。
  • 这种模块化方式让你的代码结构更清晰,更易于维护和复用。

补充回答 1

要将IDE中开发的模块化脚本上传到Hamibot,你需要将多个模块文件打包成一个单文件后上传。以下是具体步骤和注意事项:

上传步骤:

  1. 将所有模块文件合并为一个.js文件(可使用打包工具或手动整合)
  2. 登录Hamibot控制台,进入"开发脚本"页面
  3. 点击"创建"或选择现有脚本进行编辑
  4. 上传打包后的单文件脚本

API上传方式(适用于自动化部署):

// 文档地址 https://docs.hamibot.com/
var res = http.request('https://api.hamibot.com/v1/devscripts/你的脚本ID/files', {
    method: 'PUT',
    headers: {
        authorization: '你的令牌(hmp开头)',
    },
    files: {
        'data': '/路径/打包后的脚本.js;type=application/javascript'
    }
});

重要注意事项:

  • 文件大小不能超过3MB
  • 必须正确设置MIME类型:application/javascript
  • 目前在线编辑器不支持多文件上传,必须先打包为单文件
  • 如果需要同时上传配置文件,可以使用application/json类型

如果你需要上传配置文件,可以同时上传脚本和配置文件:

var res = http.request('https://api.hamibot.com/v1/devscripts/你的脚本ID/files', {
    method: 'PUT',
    headers: {
        authorization: '你的令牌(hmp开头)',
    },
    files: {
        'data': '/路径/脚本.js;type=application/javascript',
        'data': '/路径/config.json;type=application/json'
    }
});
ℹ️ 本回答由 AI 生成,内容仅供参考