关于javascript:PhantomJS中的“exports”定义在哪里?

Where does the “exports” define in PhantomJS?

本问题已经有最佳答案,请猛点这里访问。

以fs.js的代码段为例:

1
2
3
4
5
6
7
8
9
10
11
12
13
exports.write = function (path, content, modeOrOpts) {
    var opts = modeOrOptsToOpts(modeOrOpts);
    // ensure we open for writing
    if ( typeof opts.mode !== 'string' ) {
        opts.mode = 'w';
    } else if ( opts.mode.indexOf('w') == -1 ) {
        opts.mode += 'w';
    }
    var f = exports.open(path, opts);

    f.write(content);
    f.close();
};

现在我对exports对象感到困惑。您可以在每个phantomjs模块中找到它,但我找不到在哪里定义exports对象。

有人能给我一些关于定义exports对象的地方的建议吗?

不要和nodejs中的exports混淆。是幻影…


phantomjs实现了require语法(与NodeJS相同)

如果要包括外部库,则该库将注入module对象,而module.exports是所需函数返回的公共对象。

1
2
3
4
5
6
7
8
9
10
//myMoudle.js

var _a = 5; //this is private member of the module

module.exports= {
    a : ()=>{
      return _a;
    },
    setA : newA=>_a=newA;
}

需要:

1
2
3
4
5
//someCode.js
var myModule = require('path/to/myModule')
myModule.a() //5
myModule._a //undefined
myModule.setA(6) //_a is now 6

Phantomjs文档示例需要网页模块:

1
2
var webPage = require('webpage'); //included the module https://github.com/ariya/phantomjs/blob/master/src/modules/webpage.js
var page = webPage.create();

包括网页模块,在这个模块中有下一个代码

1
2
3
exports.create = function (opts) {
    return decorateNewPage(opts, phantom.createWebPage());
};

允许在使用require函数的地方使用webPage.create函数。