如何在express.js中的两个javascript文件之间传递参数

时间:2015-11-16 07:40:59

标签: javascript node.js express

我正在使用express js,我想将参数从一个javascript文件传递给其他人。我怎么能实现这个?

这两个文件是1. process.js



var WebPageTest = require('webpagetest');
var wpt = new WebPageTest('server address');
var data_url;


exports.process =  function (req, res){

    
    //Running the test
    wpt.runTest(script,{runs: 1},function(err, data) {
        console.log("<----STARTING TEST---->");
        if(err){ console.log(err);}
        data_url = data.data.summaryCSV;
        console.log('-----------');
        console.log(data_url);
        console.log('-----------');
    });
    res.render('index.jade',{par: 'welcome to webpagetest performance, the tests are running in background.'})
};
&#13;
&#13;
&#13;

storedata.js就在这里

&#13;
&#13;
var request = require('request');
var CSV = require('csv-string');
var moment = require('moment');
var process = require('./process.js');


exports.storedata = function(req,res){

    var URL;
    var loadTime;
    var TTFB;
    var TTFB1;
    var date;
    var date1;
    var date2;
    var db;
    console.log(process.process.data_url);

    request({uri:process.process.data_url,method:'GET'}, function (error,response,body)  {
                //console.log('----@@@@@@----');
                //console.log(response.headers);
                console.log('----@@@@@@----');
                //console.log(response);
                if (error) {
                    console.log('got an error' + error);
                }
                //console.log(response);
                //console.log(body);
                var data = body;
                console.log('here is the body');
                console.log('----@@@@@@----');
                console.log(body);


                CSV.forEach(data, ',', function (row, index) {
                    if (index == 1 || index == 2) {
                        URL = row[0];
                        loadTime = row[1];

                        TTFB = row[2];
                        TTFB1 = parseInt(TTFB);

                        date = new Date(row[59] * 1000);
                        month = date.getUTCMonth() + 1;
                        month = month.toString();
                        var day = date.getUTCDate();
                        day = day.toString();
                        var year = date.getUTCFullYear();
                        year = year.toString();
                        date = year + "-" + month + "-" + day;
                        date1 = new Date(date);
                        date2 = moment(date1).format('YYYY-MM-DD');

                        //console.log(loadTime);
                        var app_re = new RegExp(/^https\:\/\/some-url/);
                        var staging_re = new RegExp(/^https\:\/\/some-url2/);
                        var webuinqa_re = new RegExp(/^https\:\/\/some-url3/);

                        // Writting into the databse for some-url
                        if(app_re.test(URL)){
                        var db = req.db;
                        var collection = db.get('app');
                        collection.insert({
                            "Date": date2,
                            "TTFB": TTFB1,
                            "loadTime": loadTime,
                            "Url": URL
                        }, function (err, doc) {
                            if (err) {
                                res.send("There was a problem adding the information to the database.");
                            }
                        });}

                        //Writting into the database for some-url2
                        if(staging_re.test(URL)){
                            var db = req.db;
                            var collection = db.get('staging');
                            collection.insert({
                                "Date": date2,
                                "TTFB": TTFB1,
                                "loadTime": loadTime,
                                "Url": URL
                            }, function (err, doc) {
                                if (err) {
                                    res.send("There was a problem adding the information to the database.");
                                }
                            });}

                        //Writting into the database for some-url3
                        if(webuinqa_re.test(URL)){
                            var db = req.db;
                            var collection = db.get('webuinqa');
                            collection.insert({
                                "Date": date2,
                                "TTFB": TTFB1,
                                "loadTime": loadTime,
                                "Url": URL
                            }, function (err, doc) {
                                if (err) {
                                    res.send("There was a problem adding the information to the database.");
                                }
                            });}
                        res.render('index', {title: "All the test Results have been added to the databases, Go to localhost/getData to get the graph"});
                        //res.redirect('/getData');
                    }
                });
    });
};
&#13;
&#13;
&#13;

我想将process.js文件中的参数data_url传递给storedata.js文件。我将在storedata.js中的方法请求中使用data_url的值。

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

storedata.js

module.exports = function(data_url) {
  // ...
}

process.js

var request = require('request');
var CSV = require('csv-string');
var moment = require('moment');
// The path like this assumes storedata.js and process.js
// are in the same folder.
var storeData = require('./storedata');

exports.process =  function (req, res){
  var URL;
  var loadTime;
  var TTFB;
  var TTFB1;
  var date;
  var date1;
  var date2;
  var db;
  var data_url;

  // initiating the test
  var WebPageTest = require('webpagetest');
  var wpt = new WebPageTest('server-address');

  //Running the test
  wpt.runTest(script,function(err, data) {
      //console.log("hello -->",err || data);

      data_url = data.data.summaryCSV;
      console.log('-----------');
      console.log(data_url);
      console.log('-----------');

      // Once your data_url is ready
      storeData(data_url);

<强>更新

根据您的意见,这是一个可能的解决方案。

var WebPageTest = require('webpagetest');
var wpt = new WebPageTest('server address');
var data_url;

exports.process =  function (req, res){
    //Running the test
    wpt.runTest(script,{runs: 1},function(err, data) {
        console.log("<----STARTING TEST---->");
        if(err){ console.log(err);}
        data_url = data.data.summaryCSV;
        console.log('-----------');
        console.log(data_url);
        console.log('-----------');
    });
    res.render('index.jade',{par: 'welcome to webpagetest performance, the tests are running in background.'})
};

// Create another method that is able to return the saved data.
exports.getSavedDataURL = function() { return data_url; }

然后在storedata.js

exports.storedata = function(req,res){
    var URL;
    var loadTime;
    var TTFB;
    var TTFB1;
    var date;
    var date1;
    var date2;
    var db;
    // 
    var url = process.getSavedDataURL();

    request({uri:url,method:'GET'}, function (error,response,body)  {