js中如何导入或调用其它js脚本
在编写冰狐智能辅助自动化脚本过程中,为了实现模块化编程,我们需要把不同的功能放在不同js脚本中,一个主脚本调用若干功能模块脚本。我们如何实现导入或者调用其他js文件呢?冰狐智能辅助提供了三种方法:
一、import导入脚本
在js文件中静态导入其它脚本,可以理解为直接把js添加过来,【import 脚本名表达式】,支持在线js和本地js文件,包括apk的资源文件:使用asset:前缀,可以在打包apk时添加js文件;手机本地js文件。注意:被导入的js中不需要用export。
// 在线js
import 'test.js';
// apk资源中的js
//import 'asset:test.js';
// 手机本地存储中的js
//import '/sdcard/test.js';
function main() {
console.log('main');
// 调用test.js中的函数fun1
fun1();
}
// test.js文件
function main() {
console.log('main');
}
function fun1() {
console.log('func1');
}
二、callScript动态调用脚本
callScript核心功能是在js中动态调用其它js脚本,
执行脚本中的main函数(注意:直接执行main函数),其返回值为脚本的返回值。需要注意的是该函数不会创建独立的线程,直接在当前线程中执行,如果直接在ui代码中使用有可能会导致ui无响应,在ui中建议使用runTask。与import一样,也支持在线js和本地js文件,包括apk的资源文件:使用asset:前缀,可以在打包apk时添加js文件;手机本地js文件。 function main() {
// 在线js
// 直接执行test.js的main函数
callScript('test.js');
// apk资源中的js
// callScript('asset:test.js');
// 手机本地存储中的js
// callScript('/sdcard/test.js')
}
// test.js文件
function main() {
console.log('test main');
}
三、runTask执行任务
runTask一般用
在ui代码中执行其它js脚本,执行时会另外开启一个线程执行脚本,多用于自定义ui任务。若在非ui代码中调用脚本,建议使用callScript。runTask和callScript最大的区别就是,runTask会开启新线程执行,而callScript在原线程中执行。也支持在线js和本地js文件,包括apk的资源文件:使用asset:前缀,可以在打包apk时添加js文件;手机本地js文件。
// ...省略若干ui代码
function main() {
// 创建并显示ui
setupUI();
// 设置文本
ui('show').setText('xxx');
ui('select').on('selected', onSpinnerSelected);
}
function onClick(event) {
console.log('click button');
// 注意耗时任务不能在ui脚本中执行,具体的耗时任务放在另外一个脚本中,使用runTask函数来调用
runTask('test');
}
// test.js文件
function main() {
console.log('test main');
}