如何正确地要求文件到另一个文件
How to properly require files into another file
我有一堆js脚本文件使用require需要同一系列的库等等'
let path = require('path');
let _ = require('underscore');
我想将所有这些要求放入一个单独的库文件中,然后我可以在需要它们的文件中重复使用。我虽然我可以做这样的事情:
var common = function() {
this.requireFiles = function() {
let path = require('path');
let _ = require('underscore');
...
}
};
export.common = common;
但是,当我想将这个库包含在那些使用所有这些相同文件的文件中时,它不起作用。我正在尝试这样的事情:
let CommonTools = require('../server_libs/commonFiles').common;
let commonFiles = new CommonTools();
migration.requireFiles();
当我想使用下划线方法时,这给我一个错误,提示 _
不是一个函数。关于我应该在哪里寻找对此主题的更好理解的任何提示?
个人不建议做通用模块。 node.js 模块的心态就是 require()
模块所需要的。是的,似乎在每个模块中输入了一点 extra/redundant,但它使每个模块都可以自我描述,并且不会在模块之间建立任何不必要的依赖关系,从而实现最简单的模块共享或重用选项。模块由 require()
子系统缓存,因此您在运行时只需根据需要在每个模块中 require()
就不会真正花费您。这几乎是 node.js 方式。
也就是说,如果你真的想做一个通用模块,你可以这样做:
common.js
module.exports = {
_: require('underscore');
path: require('path');
}
otherModule.js
const {_, path} = require('common.js');
// can now call underscore methods _.each()
// can now call path methods path.join()
这使用 destructing assignment 从 common.js 导出中获取属性并将它们分配给模块范围的变量,并在一个语句中为多个属性执行此操作。它仍然需要您列出您想要在此模块中定义的每个 属性(这有助于自我描述您在做什么)。
这还假设您使用的是 require()
和 module.exports
。如果您使用较新的 import
和 export
关键字,那么您可以相应地修改语法,但仍然使用相同的概念。
我有一堆js脚本文件使用require需要同一系列的库等等'
let path = require('path');
let _ = require('underscore');
我想将所有这些要求放入一个单独的库文件中,然后我可以在需要它们的文件中重复使用。我虽然我可以做这样的事情:
var common = function() {
this.requireFiles = function() {
let path = require('path');
let _ = require('underscore');
...
}
};
export.common = common;
但是,当我想将这个库包含在那些使用所有这些相同文件的文件中时,它不起作用。我正在尝试这样的事情:
let CommonTools = require('../server_libs/commonFiles').common;
let commonFiles = new CommonTools();
migration.requireFiles();
当我想使用下划线方法时,这给我一个错误,提示 _
不是一个函数。关于我应该在哪里寻找对此主题的更好理解的任何提示?
个人不建议做通用模块。 node.js 模块的心态就是 require()
模块所需要的。是的,似乎在每个模块中输入了一点 extra/redundant,但它使每个模块都可以自我描述,并且不会在模块之间建立任何不必要的依赖关系,从而实现最简单的模块共享或重用选项。模块由 require()
子系统缓存,因此您在运行时只需根据需要在每个模块中 require()
就不会真正花费您。这几乎是 node.js 方式。
也就是说,如果你真的想做一个通用模块,你可以这样做:
common.js
module.exports = {
_: require('underscore');
path: require('path');
}
otherModule.js
const {_, path} = require('common.js');
// can now call underscore methods _.each()
// can now call path methods path.join()
这使用 destructing assignment 从 common.js 导出中获取属性并将它们分配给模块范围的变量,并在一个语句中为多个属性执行此操作。它仍然需要您列出您想要在此模块中定义的每个 属性(这有助于自我描述您在做什么)。
这还假设您使用的是 require()
和 module.exports
。如果您使用较新的 import
和 export
关键字,那么您可以相应地修改语法,但仍然使用相同的概念。