PhantomJS 和 Node.js 中的require
意思完全一样,区别在于没有一个基础模块匹配。尽管fs
两者都存在该模块,但它们是不同的并且不提供相同的功能。
require
在 PhantomJS 和 Node.js 中功能相同。CasperJS 建立在 PhantomJS 之上并使用它的require
功能,但也对其进行修补。使用 CasperJS 还可以要求一个模块具有它的名称,例如,require('module')
而不是require('./module')
它是否在同一目录中。
完整矩阵(file.js 与执行脚本在同一目录中):
| 节点
| | 幻影
| | | 卡斯珀
| | | | 更苗条
------------+---+---+---+--------
文件 | n | n | 是 | 是的
./文件 | 是 | 是 | 是 | 是的
文件.js | n | n | n | n
./file.js | n | n | n | n
PhantomJS 也可以node_modules
像 node 一样使用特殊文件夹中定义的模块。它不能使用与 PhantomJS 中不存在的模块有依赖关系的实际节点模块。
可能需要的示例:
m.js(用于函数)
module.exports = function(){
return {
someKey: [1,2,3,4],
anotherKey: function(){
console.log("module exports works");
}
}
};
e.js(对于其他所有的 JS)
exports.someKey = {
innerKey: [1,2,3,4]
};
exports.anotherKey = function(){
console.log("exports works");
};
a.json(任意 JSON)
[
{
"someKey": [ 1,2,3,4 ],
"anotherKey": 3
}
]
脚本.js
var m = require("./m")();
m.anotherKey(); // prints "module exports works"
var e = require("./e");
e.anotherKey(); // prints "exports works"
var a = require("./a");
console.log(a[0].anotherKey); // prints "3"