假设我需要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/