我已经在另一个项目中编写了一个node.js软件包供个人使用。我一直在从GitHub链接安装它。它工作得很好,但一切都在一个文件中,这很好,但现在我需要为它添加新的功能,因此我认为将它分成多个文件是个好主意。
因此我创建了一些文件来使其工作,但让我用两个文件index.js
和utils.js
来解释它。
方法1:
//index.js
const utils = require('./utils.js');
module.exports = {
indexProperty1:{},
indexProperty2:[],
indexFunction1:function(){
utils.utilsFunction1();
//some other code
},
indexFunction2:function(){
utils.utilsFunction2();
//some other code
}
}
//utils.js
module.exports = {
utilsProperty1:{},
utilsProperty2:[],
utilsFunction1:function(){
console.log(this); //Prints values of index object
this.utilsFunction2(); //TypeError: this.utilsFunction2 is not a function
},
utilsFunction2:function(){}
}
方法2:
//index.js
const utils = require('./utils.js');
var index = {};
index.indexProperty1 = {}
index.indexProperty2 = []
index.indexFunction1 = function(){
utils.utilsFunction1();
//some other code
}
index.indexFunction2 = function(){
utils.utilsFunction2();
//some other code
}
module.exports = index;
//utils.js
var utils = {};
utils.utilsProperty1 = {}
utils.utilsProperty2 = []
utils.utilsFunction1 = function(){
console.log(this); //Prints values of index object
this.utilsFunction2(); //TypeError: this.utilsFunction2 is not a function
}
utils.utilsFunction2: = function(){}
module.exports = utils;
在这两种情况下,this
的值都是index
对象。因此,从this.utilsFunction2()
对象调用utils
的任何方法都会TypeError
。
所以我的问题是如何定义utils
对象以便我可以在其中使用this
,为什么utils
对象中的这个对象引用index
?
次要问题:在上面的例子中,使用一种方法是否有任何优势?
答案 0 :(得分:0)
希望这是一个例子,它有很多问题。第一个是你必须在不同的modules.exports
值之间使用逗号,第二个为什么你在我认为是你的主要内容(index.js
)内有导出?
以下是一些有效的示例代码,不确定它是否正是您想要的,但您的问题令人困惑:
utils.js
module.exports = {
utilsFunction1:function(){
this.utilsFunction2();
},
utilsFunction2:function(){
console.log("success");
}
}
index.js
const utils = require('./utils.js');
utils.utilsFunction1();
答案 1 :(得分:0)
使用Node& ES6,我建议你使用Class和Extends
// utils.js
class utils {
utilsFunction1() {
this.utilsFunction2();
},
utilsFunction2() {
console.log("success");
}
}
module.exports = utils;
// index.js
var utils = new(require('./utils.js'));
class index {
indexFunction1() {
utils.utilsFunction1();
//some other code
}
indexFunction2() {
utils.utilsFunction2();
//some other code
}
}
或者:使用extends class:index extends utils
希望它对你有所帮助。
感谢。