因此,我已经用npm初始化了一个Node项目。我已经相应地设置了我的package.json。我正在使用打字稿,所以我还设置了tsconfig.json。
我有一些依赖项(npm软件包),需要在项目的多个文件中多次使用。 index.ts是我项目的根源。我也可以将这些库导入index.js和其他文件中。
有没有办法只在项目中包含或导入这些库一次,这样我就可以在项目的任何文件中使用它们,而不必在任何地方导入任何东西。
我尝试使用以下方法搜索实现此目的的各种方法: CommonJS模块语法,NodeJS模块语法,全局模块-但它们都无法提供我想要的方式。
我得到的大多数答案或解决方案都是这样
通过一个文件导出所有库
import abc from 'abc';
import xyz from 'xyz';
module.exports = {
abc, xyz
};
在其他文件中使用这些库,例如
import modules from 'src/modules.ts'
var wantSome = modules.abc.getSome();
但是,这仍然需要导入模块文件并像modules.abc这样来访问它。
我们有什么办法可以在整个项目中使这些导入在全球范围内可用。
P.S。 -这种情况与Angular 2+中的ngModules有点相似,在这里我们可以在ngModules内部导入所需的任何内容,然后该模块下的所有组件都可以使用它。
答案 0 :(得分:3)
从长远来看,这样做会导致各种各样的问题。
我相信您最好进入节点的是在一个模块中声明所有包含的内容,然后在自己的文件中进行分解。
import abc from 'abc';
import xyz from 'xyz';
module.exports = {
abc, xyz
};
然后
import modules from 'src/modules.ts'
{ abc: { getSome } } = modules
但是我强烈建议您使用标准模式进行导入。这将使您的代码更简洁,更易于维护
答案 1 :(得分:0)
N / B-那是设计应用程序的不好方法。
在节点中,可以通过“ global”或“ GLOBAL”对象设置全局变量:
您可以将所有依赖项导入应用程序入口文件中,并将其存储在Global变量中
index.js
#define BOOST_TEST_MODULE My Test
#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>
#include "MyMath.h"
BOOST_AUTO_TEST_CASE(test) {
MyMath mm;
BOOST_CHECK_EQUAL(mm.add(1,2), 3);
}
someotherfile.js
import abc from 'abc';
import xyz from 'xyz';
global.abc = abc
global.xyz = xyz
答案 2 :(得分:0)
通过一个文件导出所有库
import abc from 'abc';
import xyz from 'xyz';
module.exports = {
abc, xyz
};
在其他文件中使用这些库,例如
import {abc, xyz} from 'src/modules.ts'
var wantSome = abc.getSome();