Импорт узловых модулей один раз для всего проекта - PullRequest
0 голосов
/ 22 октября 2018

Сценарий

Итак, я инициализировал проект Node с npm.Я настроил свой package.json соответственно.Я использую машинопись, поэтому я также установил tsconfig.json.

У меня есть несколько зависимостей (пакеты npm), которые мне нужно будет использовать несколько раз в нескольких файлах моего проекта.index.ts - это корень моего проекта.Я могу также импортировать эти библиотеки в index.js и другие файлы.

Проблема

Есть ли способ включить или импортировать эти библиотеки в проект только один раз, чтобы я мог использовать их в любомфайл проекта без необходимости импортировать одну вещь куда-либо.

Я пытался найти различные способы сделать это, используя - синтаксис модуля CommonJS, синтаксис модуля NodeJS, глобальные модули - но ни один из них не может дать мне такой способЯ хочу это.

Для Ex -

Большинство полученных ответов и ответов были такими:

  • Экспорт всех библиотек через один файл

    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.

Есть ли у нас какой-либо способ сделать этот импорт доступным глобально через проект.

PS - Этот сценарий чем-то похож на ngModules в Angular 2+, где мыможет навязатьВсе, что мы хотим внутри ngModules, и тогда оно доступно всем компонентам этого модуля.

Ответы [ 3 ]

0 голосов
/ 22 октября 2018

Это может вызвать у вас много проблем в долгосрочной перспективе.

  • в итоге вы получите один монолитный файл, содержащий все ваши экспорты, который станет обременительным для поддержки
  • , если вы решите модульно выполнить свой код, это будет более трудным, так как выне будет явно знать, какие модули использует файл
  • , если вы смогли включить его до точки, где вы просто используете модули без ссылки, ясность кода пострадает
  • могут возникнуть конфликты имен

Лучшее, что, я думаю, вы получите в узле, - это объявить все включения в одном модуле, а затем выполнить деструктуру в своем собственном файле.

import abc from 'abc';
import xyz from 'xyz';

module.exports = {
    abc, xyz
};

Затем

import modules from 'src/modules.ts'
{ abc: { getSome } } = modules

Но я настоятельно рекомендую использовать стандартные шаблоны для импорта.Это сделает ваш код намного чище и проще в обслуживании

0 голосов
/ 22 октября 2018

Экспорт всех библиотек через один файл

import abc from 'abc';
import xyz from 'xyz';

module.exports = {
    abc, xyz
};

Использование этих библиотек в других файлах, таких как

import {abc, xyz} from 'src/modules.ts'

var wantSome = abc.getSome();
0 голосов
/ 22 октября 2018

N / B - это плохой способ разработки вашего приложения.


В узле вы можете устанавливать глобальные переменные через "global"или объект "GLOBAL":

Вы можете импортировать все свои зависимости в файле записей приложения и сохранить их в глобальной переменной

index.js

import abc from 'abc';
import xyz from 'xyz';

global.abc = abc
global.xyz = xyz

someotherfile.js

//access abc import
global.abc
...