2016-05-17 71 views
0

fs.js的代码段,例如:PhantomJS中的“出口”在哪里定义?

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 ...

+0

http://stackoverflow.com/questions/9901082/what-is-this-javascript-require 它是一个对象,通过要求其 –

回答

1

的phantomJS实施require语法(同NodeJS

如果要包括外部库,该库被注入module对象和module.exports是公共对象的要求函数返回。

//myMoudle.js 

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

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

的要求:

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

PhantomJS文档例如 requiring webpage module:

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

包括网页模块,这个模块里面有下一个代码

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

,允许使用在这里我们使用了require功能webPage.create功能

+0

注入模块“phantomJS实现需要语法”,你能告诉我在PhantomJS中实现'require'语法的代码吗? – Sayakiss

+0

@Sayakiss在我的回答中加入了 –

+0

我仍然感到困惑......在我看来,'require'是一个函数,所以它应该在某处定义(但我找不到)......'exports'是一个对象,所以它应该在某个地方定义(但我找不到)......这真是让我困扰...... – Sayakiss