从其他文件导入函数到类

时间:2018-08-02 22:25:13

标签: javascript node.js

目前,我很难解决这个问题。我想将类函数拆分为多个文件。我试图在主类中要求它们合并它们,但是您知道...

//server.js
module.exports.server = () => {
  console.log('it works')
}


//handle.js
const server = require('./server')

class handle extends server{
//...
}
module.exports = new handle()

//test.js
const handle = require('./handle')
handle.server() //error

最好的问候

2 个答案:

答案 0 :(得分:0)

要使用其他文件中的功能,必须通过JSON导出。例如:

//poker.js
function shuffle(deck){
  //shuffle
}
function dealCards(deck){
  shuffle(deck);
  //deal
}
function createDeck(){
  //creates Deck
}

如果只希望使用createDeck和dealCards函数,则可以这样导出它:

module.exports={
  deal:dealCards,
  createDeck: createDeck
}

您可以像这样使用它:

//test.js
var poker=require('./poker.js');
var deck= poker.createDeck();
poker.deal(deck);

答案 1 :(得分:0)

首先,箭头功能与普通功能不相同。

由于服务器为()=>{},因此出现错误。对于classextend

  

扩展名的.prototype必须为Object或null。

MDN Web文档extends keyword

'use strict';

var serverAsArrowFunction = () => {
};

var serverAsNormalFunction = function () {
};

var o = { //this is what happens
  server: () => {
    console.log('it works');
  }
};

console.log('NormalFunction', serverAsNormalFunction.prototype); //{}
console.log('Arrow function', serverAsArrowFunction.prototype); // undefined
console.log('Object', o.prototype); //undefined

接下来,您将导出为Object。用正常功能代替箭头功能。

server.js

module.exports.server = function () {
  console.log('it works -- from server.js');
};

handle.js

const { server } = require('./server');

class handle extends server {
    constructor() {
        super();
        console.log('constructor -- from handle.js');
    }
}
module.exports = new handle();

test.js

const handle = require('./handle');
console.log(handle);
console.log('-- from test.js');

运行代码,

node test.js

日志

  

它可以正常工作-来自server.js
  构造函数-来自handle.js
  处理{}
  -来自test.js