In Node.js, how do I “include” functions from my other files?

后端 未结 25 2904
猫巷女王i
猫巷女王i 2020-11-22 04:22

Let\'s say I have a file called app.js. Pretty simple:

var express = require(\'express\');
var app = express.createServer();
app.set(\'views\', __dirname + \         


        
25条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-11-22 04:51

    This is the best way i have created so far.

    var fs = require('fs'),
        includedFiles_ = {};
    
    global.include = function (fileName) {
      var sys = require('sys');
      sys.puts('Loading file: ' + fileName);
      var ev = require(fileName);
      for (var prop in ev) {
        global[prop] = ev[prop];
      }
      includedFiles_[fileName] = true;
    };
    
    global.includeOnce = function (fileName) {
      if (!includedFiles_[fileName]) {
        include(fileName);
      }
    };
    
    global.includeFolderOnce = function (folder) {
      var file, fileName,
          sys = require('sys'),
          files = fs.readdirSync(folder);
    
      var getFileName = function(str) {
            var splited = str.split('.');
            splited.pop();
            return splited.join('.');
          },
          getExtension = function(str) {
            var splited = str.split('.');
            return splited[splited.length - 1];
          };
    
      for (var i = 0; i < files.length; i++) {
        file = files[i];
        if (getExtension(file) === 'js') {
          fileName = getFileName(file);
          try {
            includeOnce(folder + '/' + file);
          } catch (err) {
            // if (ext.vars) {
            //   console.log(ext.vars.dump(err));
            // } else {
            sys.puts(err);
            // }
          }
        }
      }
    };
    
    includeFolderOnce('./extensions');
    includeOnce('./bin/Lara.js');
    
    var lara = new Lara();
    

    You still need to inform what you want to export

    includeOnce('./bin/WebServer.js');
    
    function Lara() {
      this.webServer = new WebServer();
      this.webServer.start();
    }
    
    Lara.prototype.webServer = null;
    
    module.exports.Lara = Lara;
    

提交回复
热议问题