使用自定义js文件作为模块

时间:2013-11-11 02:26:22

标签: javascript module phantomjs

我正在使用phantomjs来解析XML站点地图以获取网址,然后在这些网址上查看Google Analytics请求。

我写了一个parsexml.js文件,该文件工作正常,但我没有将它用作checkRequest.js文件中的模块

这是parsexml.js代码(工作正常):

var page = require('webpage').create(),
    urls, 
    sites,
    output;

page.open(encodeURI('http://www.somesite.com/sitemap.xml'), function(status) {
if (status !== "success") {
    console.log('Unable to access network');
    phantom.exit(1);
} else {
    urls = page.content.match(/<loc>(.*)<\/loc>/ig);
    output = '';
    if (urls == null) {
        console.log('Pas d\'URL dans le fichier');
    } else {
        urls.forEach(function(url) {
            url = url.replace(/<.*?>/g, '');
            sites = 'sites.push(' + url + ');';
            output = output + sites;
        });
    }
    console.log(output);
    phantom.exit();
}
});

以下是我尝试修改它以将其用作模块的方法:

exports.parsing = function () {
var page = require('webpage').create(),
    urls, 
    sites,
    output;

page.open(encodeURI('http://www.somesite.com/sitemap.xml'), function(status) {
if (status !== "success") {
        console.log('Unable to access network');
        //phantom.exit(1);
    } else {
        urls = page.content.match(/<loc>(.*)<\/loc>/ig);
        output = '';
        if (urls == null) {
            console.log('Pas d\'URL dans le fichier');
        } else {
            urls.forEach(function(url) {
                url = url.replace(/<.*?>/g, '');
                sites = 'sites.push(' + url + ');';
                output = output + sites;
            });
        }
        console.log(output);
        //phantom.exit();
    }
});
}

最后我是如何尝试在最终的js文件中调用模块的:

var xml = require('./parseXML.js');
xml.parsing();

我必须遗漏一些显而易见的东西,但我现在正在寻找几个小时,我感到非常失落。

2 个答案:

答案 0 :(得分:0)

阅读this page之后,我想出了两个解决方案。 在第一个中,您只需删除require()中的文件扩展名:

var xml = require('./parsexml');
xml.parsing();

如果要在外部文件中使用其他名称调用函数,则第二种解决方案很有用。所以parsexml.js现在看起来像:

function parsing() {
var page = require('webpage').create(),
    urls,
    sites,
    output;

page.open(encodeURI('http://www.somesite.com/sitemap.xml'), function(status) {
    if (status !== "success") {
        console.log('Unable to access network');
        //phantom.exit(1);
    } else {
        urls = page.content.match(/<loc>(.*)<\/loc>/ig);
        output = '';
        if (urls == null) {
            console.log('Pas d\'URL dans le fichier');
        } else {
            urls.forEach(function(url) {
                url = url.replace(/<.*?>/g, '');
                sites = 'sites.push(' + url + ');';
                output = output + sites;
            });
        }
        console.log(output);
        //phantom.exit();
    }
});
}

function pinapples() {
    console.log("Pinapples.");
}

module.exports = {
    parsing: parsing,
    name_a_fruit: pinapples
};

checkRequest.js看起来像:

var xml = require('./parsexml');
xml.parsing();
xml.name_a_fruit();

然后输出:

&#34; Pinapples。 无法访问网络&#34;

答案 1 :(得分:-1)

function parsing()
{ 
    // ... your function
}

module.exports = {

    parsing: parsing

}