Можно импортировать модуль один раз и иметь метод, доступный для нескольких модулей с Webpack - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь узнать, как использовать модули с веб-пакетом.Теперь я понимаю, что если модуль вызывает метод из другого модуля, он должен быть импортирован.

Что я не понимаю, что мне делать в ситуации, когда несколько модулей вызывают метод, определенный в другом модуле?

Является ли правильный способ обработки этого сценария для импортанеобходимые модули в каждом файле модуля js?

isObject.js

const isObject = (a) => (!!a) && (a.constructor === Object);

export {isObject}

findNote.js

import {isObject} from './isObject';

const findNote = ( notes, id ) => {
    return isObject( notes.findIndex(function( note ){
        return note.id === id;
    }) );
}

export {findNote}

filterNotes.js

import {isObject} from './isObject';

const filterNotes = ( notes, filter ) => {
    return isObject( notes.filter(function( note ){
        return note.title.toLowerCase().includes( filter.toLowerCase() ) );
    });
}

export {filterNotes}

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

webpack - это пакет скриптов.Он имеет понятие «точек входа» и создает один или несколько наборов скриптов для каждой точки входа.

Поэтому, если вы сделаете findNote.js точкой входа или если существует точка входа, котораяимпортирует (прямо или косвенно) findNote.js, тогда все зависимости, включая isObject.js, будут включены в этот комплект.

Та же история для filterNotes.js.Если вы сделаете его другой точкой входа, то его код и его зависимости, включая isObject.js, будут включены в другой пакет для этой точки входа.

Так что isObject.js будет входить в несколько комплектов.Это можно предотвратить с помощью некоторой оптимизации.

0 голосов
/ 24 сентября 2019

Полагаю, вы новичок.

Node.js будет кеш модулей .Каждый модуль будет загружен один раз

...