假设我需要CasperJS将进度步骤报告给本地服务器。我无法使用casper.open发送POST请求,因为它可以“切换”页面,因此无法正确继续其他步骤。

我通过评估浏览器中的XMLHttpRequest() ping到localhost来回避此问题。不理想,但是可以。

随着脚本数量的增加,我宁愿将此通用功能移动到一个模块中,也就是说,我想将许多功能移动到一个单独的模块中。

我的理解是CasperJS不能像node.js那样工作,所以require()规则是不同的。我该如何完成这项工作?

最佳答案

由于CasperJS基于PhantomJS,因此可以使用其“ module system”,它是“在CommonJS Modules 1.1之后建模的”


您可以按模块文件的完整或相对路径require

var tools = require("./tools.js");
var tools = require("./lib/utils/tools.js");
var tools = require("/home/scraping/project/lib/utils/tools.js");

或者,您可以遵循node.js约定,在项目的文件夹中创建子文件夹node_modules/module_name,然后将模块的代码放入index.js文件中。然后它将驻留在以下路径中:

./node_modules/tools/index.js



之后,在CasperJS脚本中要求它:

var tools = require("tools");

模块将以这种方式导出其功能:

function test(){
    console.log("This is test");
}

module.exports = {
    test: test
};

关于javascript - 如何包括许多CasperJS脚本共有的变量和函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34971610/

10-13 00:36